Link to this sectionData Augmentation con Ultralytics YOLO#
Link to this sectionIntroduzione#
La data augmentation è una tecnica fondamentale nella computer vision che espande artificialmente il tuo dataset di addestramento applicando varie trasformazioni alle immagini esistenti. Quando addestri modelli di deep learning come Ultralytics YOLO, la data augmentation aiuta a migliorare la robustezza del modello, riduce l'overfitting e migliora la generalizzazione a scenari reali.
Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀
Link to this sectionPerché la Data Augmentation è importante#
La data augmentation serve a diversi scopi critici nell'addestramento di modelli di computer vision:
- Dataset Espanso: Creando variazioni delle immagini esistenti, puoi aumentare efficacemente le dimensioni del tuo dataset di addestramento senza raccogliere nuovi dati.
- Generalizzazione Migliorata: I modelli imparano a riconoscere oggetti in diverse condizioni, rendendoli più robusti nelle applicazioni reali.
- Riduzione dell'Overfitting: Introducendo variabilità nei dati di addestramento, è meno probabile che i modelli memorizzino caratteristiche specifiche dell'immagine.
- Prestazioni Migliorate: I modelli addestrati con una corretta augmentation solitamente ottengono una migliore accuratezza sui set di validazione e test.
L'implementazione di Ultralytics YOLO fornisce una suite completa di tecniche di augmentation, ognuna delle quali serve a scopi specifici e contribuisce alle prestazioni del modello in modi diversi. Questa guida esplorerà in dettaglio ogni parametro di augmentation, aiutandoti a capire quando e come usarli efficacemente nei tuoi progetti.
Link to this sectionConfigurazioni di esempio#
Puoi personalizzare ogni parametro usando la Python API, l'interfaccia a riga di comando (CLI) o un file di configurazione. Di seguito sono riportati esempi di come impostare la data augmentation con ciascun metodo.
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)
# Training without any augmentations (disabled values omitted for clarity)
model.train(
data="coco.yaml",
epochs=100,
hsv_h=0.0,
hsv_s=0.0,
hsv_v=0.0,
translate=0.0,
scale=0.0,
fliplr=0.0,
mosaic=0.0,
erasing=0.0,
auto_augment=None,
)
# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
A.Blur(blur_limit=7, p=0.5),
A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)Link to this sectionUtilizzo di un file di configurazione#
Puoi definire tutti i parametri di addestramento, incluse le augmentation, in un file di configurazione YAML (es. train_custom.yaml). Il parametro mode è richiesto solo quando usi la CLI. Questo nuovo file YAML sovrascriverà quindi quello predefinito situato nel pacchetto ultralytics.
# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5Quindi avvia l'addestramento con la Python API:
from ultralytics import YOLO
# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Train the model with custom configuration
model.train(cfg="train_custom.yaml")Link to this sectionAugmentation dello spazio colore#
Link to this sectionRegolazione della tonalità (hsv_h)#
- Intervallo:
0.0-1.0 - Predefinito:
0.015 - Utilizzo: Sposta i colori dell'immagine preservandone le relazioni. L'iperparametro
hsv_hdefinisce l'entità dello spostamento, con l'aggiustamento finale scelto casualmente tra-hsv_hehsv_h. Ad esempio, conhsv_h=0.3, lo spostamento viene selezionato casualmente tra-0.3e0.3. Per valori superiori a0.5, lo spostamento della tonalità si riavvolge lungo la ruota dei colori, motivo per cui le augmentation sembrano identiche tra0.5e-0.5. - Scopo: Particolarmente utile per scenari all'aperto in cui le condizioni di illuminazione possono influenzare drasticamente l'aspetto dell'oggetto. Ad esempio, una banana potrebbe sembrare più gialla sotto la luce diretta del sole ma più verdastra al chiuso.
- Implementazione di Ultralytics: RandomHSV
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionRegolazione della saturazione (hsv_s)#
- Intervallo:
0.0-1.0 - Predefinito:
0.7 - Utilizzo: Modifica l'intensità dei colori nell'immagine. L'iperparametro
hsv_sdefinisce l'entità dello spostamento, con l'aggiustamento finale scelto casualmente tra-hsv_sehsv_s. Ad esempio, conhsv_s=0.7, l'intensità viene selezionata casualmente tra-0.7e0.7. - Scopo: Aiuta i modelli a gestire diverse condizioni meteorologiche e impostazioni della fotocamera. Ad esempio, un segnale stradale rosso potrebbe apparire molto vivido in una giornata di sole ma apparire spento e sbiadito in condizioni di nebbia.
- Implementazione di Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionRegolazione della luminosità (hsv_v)#
- Intervallo:
0.0-1.0 - Predefinito:
0.4 - Utilizzo: Cambia la luminosità dell'immagine. L'iperparametro
hsv_vdefinisce l'entità dello spostamento, con l'aggiustamento finale scelto casualmente tra-hsv_vehsv_v. Ad esempio, conhsv_v=0.4, l'intensità viene selezionata casualmente tra-0.4e0.4. - Scopo: Essenziale per l'addestramento di modelli che devono operare in diverse condizioni di illuminazione. Ad esempio, una mela rossa potrebbe sembrare luminosa sotto il sole ma molto più scura nell'ombra.
- Implementazione di Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionTrasformazioni geometriche#
Link to this sectionRotazione (degrees)#
- Intervallo:
0.0a180 - Predefinito:
0 - Utilizzo: Ruota le immagini casualmente entro l'intervallo specificato. L'iperparametro
degreesdefinisce l'angolo di rotazione, con l'aggiustamento finale scelto casualmente tra-degreesedegrees. Ad esempio, condegrees=10.0, la rotazione viene selezionata casualmente tra-10.0e10.0. - Scopo: Cruciale per applicazioni in cui gli oggetti possono apparire con orientamenti diversi. Ad esempio, nelle immagini di droni aerei, i veicoli possono essere orientati in qualsiasi direzione, richiedendo ai modelli di riconoscere gli oggetti indipendentemente dalla loro rotazione.
- Implementazione di Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionTraslazione (translate)#
- Intervallo:
0.0-1.0 - Predefinito:
0.1 - Utilizzo: Sposta le immagini orizzontalmente e verticalmente di una frazione casuale delle dimensioni dell'immagine. L'iperparametro
translatedefinisce l'entità dello spostamento, con l'aggiustamento finale scelto casualmente due volte (una per ogni asse) all'interno dell'intervallo-translateetranslate. Ad esempio, contranslate=0.5, la traslazione viene selezionata casualmente tra-0.5e0.5sull'asse x, e un altro valore casuale indipendente viene selezionato nello stesso intervallo sull'asse y. - Scopo: Aiuta i modelli a imparare a rilevare oggetti parzialmente visibili e migliora la robustezza rispetto alla posizione dell'oggetto. Ad esempio, nelle applicazioni di valutazione dei danni ai veicoli, le parti dell'auto possono apparire completamente o parzialmente nell'inquadratura a seconda della posizione e della distanza del fotografo; la traslazione insegnerà al modello a riconoscere queste caratteristiche indipendentemente dalla loro completezza o posizione.
- Implementazione di Ultralytics: RandomPerspective
- Nota: Per semplicità, le traslazioni applicate di seguito sono le stesse ogni volta per entrambi gli assi
xey. I valori-1.0e1.0non vengono mostrati poiché traslerebbero l'immagine completamente fuori dall'inquadratura.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionScala (scale)#
- Intervallo:
0.0-1.0 - Predefinito:
0.5 - Utilizzo: Ridimensiona le immagini di un fattore casuale entro l'intervallo specificato. L'iperparametro
scaledefinisce il fattore di scala, con l'aggiustamento finale scelto casualmente tra1-scalee1+scale. Ad esempio, conscale=0.5, il ridimensionamento viene selezionato casualmente tra0.5e1.5. - Scopo: Consente ai modelli di gestire oggetti a distanze e dimensioni diverse. Ad esempio, nelle applicazioni di guida autonoma, i veicoli possono apparire a varie distanze dalla fotocamera, richiedendo al modello di riconoscerli indipendentemente dalla loro dimensione.
- Implementazione di Ultralytics: RandomPerspective
- Nota:
- Il valore
-1.0non viene mostrato poiché farebbe scomparire l'immagine, mentre1.0comporta semplicemente uno zoom 2x. - I valori visualizzati nella tabella seguente sono quelli applicati tramite l'iperparametro
scale, non il fattore di scala finale. - Se
scaleè maggiore di1.0, l'immagine può risultare molto piccola o capovolta, poiché il fattore di scala viene scelto casualmente tra1-scalee1+scale. Ad esempio, conscale=3.0, il ridimensionamento viene selezionato casualmente tra-2.0e4.0. Se viene scelto un valore negativo, l'immagine viene capovolta.
- Il valore
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionTaglio (shear)#
- Intervallo:
-180a+180 - Predefinito:
0 - Utilizzo: Introduce una trasformazione geometrica che distorce l'immagine lungo l'asse x e l'asse y, spostando efficacemente parti dell'immagine in una direzione mantenendo le linee parallele. L'iperparametro
sheardefinisce l'angolo di taglio, con l'aggiustamento finale scelto casualmente tra-sheareshear. Ad esempio, conshear=10.0, il taglio viene selezionato casualmente tra-10e10sull'asse x, e un altro valore casuale indipendente viene selezionato nello stesso intervallo sull'asse y. - Scopo: Aiuta i modelli a generalizzare rispetto alle variazioni negli angoli di visualizzazione causate da leggere inclinazioni o punti di vista obliqui. Ad esempio, nel monitoraggio del traffico, oggetti come auto e segnali stradali possono apparire inclinati a causa di posizionamenti della fotocamera non perpendicolari. L'applicazione dell'augmentation di taglio assicura che il modello impari a riconoscere gli oggetti nonostante tali distorsioni.
- Implementazione di Ultralytics: RandomPerspective
- Nota:
- I valori di
shearpossono distorcere rapidamente l'immagine, quindi è consigliabile iniziare con valori piccoli e aumentarli gradualmente. - A differenza delle trasformazioni prospettiche, il taglio non introduce profondità o punti di fuga, ma distorce invece la forma degli oggetti cambiando i loro angoli pur mantenendo paralleli i lati opposti.
- I valori di
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionProspettiva (perspective)#
- Intervallo:
0.0-0.001 - Predefinito:
0 - Utilizzo: Applica una trasformazione prospettica completa sia lungo l'asse x che lungo l'asse y, simulando come appaiono gli oggetti quando visti da diverse profondità o angolazioni. L'iperparametro
perspectivedefinisce l'entità della prospettiva, con la regolazione finale scelta casualmente tra-perspectiveeperspective. Ad esempio, conperspective=0.001, la prospettiva viene selezionata casualmente tra-0.001e0.001sull'asse x, e un altro valore casuale indipendente viene selezionato nello stesso intervallo sull'asse y. - Scopo: L'aumento della prospettiva è fondamentale per gestire cambiamenti estremi di punto di vista, specialmente in scenari in cui gli oggetti appaiono scorciati o distorti a causa di spostamenti prospettici. Ad esempio, nel rilevamento di oggetti tramite droni, edifici, strade e veicoli possono apparire allungati o compressi a seconda dell'inclinazione e dell'altitudine del drone. Applicando trasformazioni prospettiche, i modelli imparano a riconoscere gli oggetti nonostante queste distorsioni indotte dalla prospettiva, migliorando la loro robustezza nelle implementazioni reali.
- Implementazione di Ultralytics: RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionCapovolgimento Alto-Basso (flipud)#
- Intervallo:
0.0-1.0 - Predefinito:
0 - Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of
flipud=1.0ensuring that all images are flipped and a value offlipud=0.0disabling the transformation entirely. For example, withflipud=0.5, each image has a 50% chance of being flipped upside-down. - Scopo: Utile per scenari in cui gli oggetti possono apparire sottosopra. Ad esempio, nei sistemi di visione robotica, gli oggetti sui nastri trasportatori o sui bracci robotici possono essere raccolti e posizionati in vari orientamenti. Il capovolgimento verticale aiuta il modello a riconoscere gli oggetti indipendentemente dal loro posizionamento dall'alto verso il basso.
- Implementazione di Ultralytics: RandomFlip
flipud disattivato | flipud attivato |
|---|---|
![]() | ![]() |
Link to this sectionCapovolgimento Sinistra-Destra (fliplr)#
- Intervallo:
0.0-1.0 - Predefinito:
0.5 - Utilizzo: Esegue un capovolgimento orizzontale specchiando l'immagine lungo l'asse x. Questa trasformazione scambia i lati sinistro e destro mantenendo la coerenza spaziale, il che aiuta il modello a generalizzare verso oggetti che appaiono con orientamenti specchiati. L'iperparametro
fliplrdefinisce la probabilità di applicare la trasformazione, con un valore difliplr=1.0che garantisce che tutte le immagini vengano capovolte e un valore difliplr=0.0che disabilita completamente la trasformazione. Ad esempio, confliplr=0.5, ogni immagine ha una probabilità del 50% di essere capovolta da sinistra a destra. - Scopo: Il capovolgimento orizzontale è ampiamente utilizzato nel rilevamento di oggetti, nella stima della posa e nel riconoscimento facciale per migliorare la robustezza rispetto alle variazioni sinistra-destra. Ad esempio, nella guida autonoma, veicoli e pedoni possono apparire su entrambi i lati della strada, e il capovolgimento orizzontale aiuta il modello a riconoscerli altrettanto bene in entrambi gli orientamenti.
- Implementazione di Ultralytics: RandomFlip
fliplr disattivato | fliplr attivato |
|---|---|
![]() | ![]() |
Link to this sectionScambio Canali BGR (bgr)#
- Intervallo:
0.0-1.0 - Predefinito:
0 - Utilizzo: Scambia i canali di colore di un'immagine da RGB a BGR, alterando l'ordine in cui i colori sono rappresentati. L'iperparametro
bgrdefinisce la probabilità di applicare la trasformazione, conbgr=1.0che garantisce che tutte le immagini subiscano lo scambio di canali ebgr=0.0che lo disabilita. Ad esempio, conbgr=0.5, ogni immagine ha una probabilità del 50% di essere convertita da RGB a BGR. - Scopo: Aumenta la robustezza rispetto a diverse ordinazioni dei canali di colore. Ad esempio, quando si addestrano modelli che devono funzionare su vari sistemi di telecamere e librerie di imaging in cui i formati RGB e BGR possono essere utilizzati in modo incoerente, o quando si implementano modelli in ambienti in cui il formato del colore di input potrebbe differire dai dati di addestramento.
- Implementazione di Ultralytics: Format
bgr disattivato | bgr attivato |
|---|---|
![]() | ![]() |
Link to this sectionMosaic (mosaic)#
- Intervallo:
0.0-1.0 - Predefinito:
1 - Utilizzo: Combina quattro immagini di addestramento in una. L'iperparametro
mosaicdefinisce la probabilità di applicare la trasformazione, conmosaic=1.0che garantisce che tutte le immagini vengano combinate emosaic=0.0che disabilita la trasformazione. Ad esempio, conmosaic=0.5, ogni immagine ha una probabilità del 50% di essere combinata con altre tre immagini. - Scopo: Molto efficace per migliorare il rilevamento di piccoli oggetti e la comprensione del contesto. Ad esempio, nei progetti di conservazione della fauna selvatica dove gli animali possono apparire a varie distanze e scale, l'aumento Mosaic aiuta il modello a imparare a riconoscere la stessa specie attraverso diverse dimensioni, occlusioni parziali e contesti ambientali, creando artificialmente diversi campioni di addestramento da dati limitati.
- Implementazione di Ultralytics: Mosaic
- Nota:
- Anche se l'aumento
mosaicrende il modello più robusto, può anche rendere il processo di addestramento più impegnativo. - L'aumento
mosaicpuò essere disabilitato verso la fine dell'addestramento impostandoclose_mosaicsul numero di epoche prima del completamento in cui dovrebbe essere disattivato. Ad esempio, seepochsè impostato su200eclose_mosaicè impostato su20, l'aumentomosaicverrà disabilitato dopo180epoche. Seclose_mosaicè impostato su0, l'aumentomosaicsarà abilitato per l'intero processo di addestramento. - Il centro del mosaico generato viene determinato utilizzando valori casuali e può trovarsi all'interno dell'immagine o al di fuori di essa.
- L'attuale implementazione dell'aumento
mosaiccombina 4 immagini scelte casualmente dal dataset. Se il dataset è piccolo, la stessa immagine potrebbe essere utilizzata più volte nello stesso mosaico.
- Anche se l'aumento
mosaic disattivato | mosaic attivato |
|---|---|
![]() | ![]() |
Link to this sectionMixup (mixup)#
- Intervallo:
0.0-1.0 - Predefinito:
0 - Utilizzo: Miscela due immagini e le loro etichette con una data probabilità. L'iperparametro
mixupdefinisce la probabilità di applicare la trasformazione, conmixup=1.0che garantisce che tutte le immagini vengano miscelate emixup=0.0che disabilita la trasformazione. Ad esempio, conmixup=0.5, ogni immagine ha una probabilità del 50% di essere miscelata con un'altra immagine. - Scopo: Migliora la robustezza del modello e riduce l'overfitting. Ad esempio, nei sistemi di riconoscimento dei prodotti al dettaglio, il mixup aiuta il modello a imparare caratteristiche più robuste miscelando immagini di prodotti diversi, insegnandogli a identificare gli articoli anche quando sono parzialmente visibili o oscurati da altri prodotti su scaffali affollati.
- Implementazione di Ultralytics: Mixup
- Nota:
- Il rapporto
mixupè un valore casuale scelto da una distribuzione betanp.random.beta(32.0, 32.0), il che significa che ogni immagine contribuisce per circa il 50%, con leggere variazioni.
- Il rapporto
Prima immagine, mixup disattivato | Seconda immagine, mixup disattivato | mixup attivato |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionCutMix (cutmix)#
- Intervallo:
0.0-1.0 - Predefinito:
0 - Utilizzo: Taglia una regione rettangolare da un'immagine e la incolla su un'altra immagine con una data probabilità. L'iperparametro
cutmixdefinisce la probabilità di applicare la trasformazione, concutmix=1.0che garantisce che tutte le immagini subiscano questa trasformazione ecutmix=0.0che la disabilita completamente. Ad esempio, concutmix=0.5, ogni immagine ha una probabilità del 50% di vedere una regione sostituita con una patch da un'altra immagine. - Scopo: Migliora le prestazioni del modello creando scenari di occlusione realistici pur mantenendo l'integrità delle caratteristiche locali. Ad esempio, nei sistemi di guida autonoma, il cutmix aiuta il modello a imparare a riconoscere veicoli o pedoni anche quando sono parzialmente oscurati da altri oggetti, migliorando la precisione di rilevamento in ambienti complessi del mondo reale con oggetti sovrapposti.
- Implementazione di Ultralytics: CutMix
- Nota:
- La dimensione e la posizione della regione di taglio vengono determinate casualmente per ogni applicazione.
- A differenza del mixup che miscela i valori dei pixel globalmente,
cutmixmantiene le intensità originali dei pixel all'interno delle regioni tagliate, preservando le caratteristiche locali. - Una regione viene incollata nell'immagine di destinazione solo se non si sovrappone a nessuna bounding box esistente. Inoltre, vengono preservate solo le bounding box che conservano almeno lo
0.1(10%) della loro area originale all'interno della regione incollata. - Questa soglia minima dell'area della bounding box non può essere modificata con l'attuale implementazione ed è impostata su
0.1per impostazione predefinita.
Prima immagine, cutmix disattivato | Seconda immagine, cutmix disattivato | cutmix attivato |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionAumenti specifici per la segmentazione#
Link to this sectionCopia-Incolla (copy_paste)#
- Intervallo:
0.0-1.0 - Predefinito:
0 - Utilizzo: Funziona solo per attività di segmentazione, questo aumento copia oggetti all'interno o tra le immagini in base a una probabilità specificata, controllata da
copy_paste_mode. L'iperparametrocopy_pastedefinisce la probabilità di applicare la trasformazione, concopy_paste=1.0che garantisce che tutte le immagini vengano copiate ecopy_paste=0.0che disabilita la trasformazione. Ad esempio, concopy_paste=0.5, ogni immagine ha una probabilità del 50% di avere oggetti copiati da un'altra immagine. - Scopo: Particolarmente utile per attività di segmentazione delle istanze e classi di oggetti rari. Ad esempio, nel rilevamento di difetti industriali in cui determinati tipi di difetti compaiono raramente, l'aumento copia-incolla può aumentare artificialmente la presenza di questi rari difetti copiandoli da un'immagine all'altra, aiutando il modello a imparare meglio questi casi sottorappresentati senza richiedere campioni difettosi aggiuntivi.
- Implementazione di Ultralytics: CopyPaste
- Nota:
- Come mostrato nella gif qui sotto, l'aumento
copy_pastepuò essere utilizzato per copiare oggetti da un'immagine all'altra. - Una volta copiato un oggetto, indipendentemente dal
copy_paste_mode, la sua Intersection over Area (IoA) viene calcolata con tutti gli oggetti dell'immagine sorgente. Se tutta l'IoA è inferiore a0.3(30%), l'oggetto viene incollato nell'immagine di destinazione. Se solo una parte dell'IoA è superiore a0.3, l'oggetto non viene incollato nell'immagine di destinazione. - La soglia IoA non può essere modificata con l'attuale implementazione ed è impostata su
0.3per impostazione predefinita.
- Come mostrato nella gif qui sotto, l'aumento
copy_paste disattivato | copy_paste attivato con copy_paste_mode=flip | Visualizza il processo copy_paste |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionModalità Copia-Incolla (copy_paste_mode)#
- Opzioni:
'flip','mixup' - Predefinito:
'flip' - Utilizzo: Determina il metodo utilizzato per l'aumento copy-paste. Se impostato su
'flip', gli oggetti provengono dalla stessa immagine, mentre'mixup'consente di copiare oggetti da immagini diverse. - Scopo: Consente flessibilità nel modo in cui gli oggetti copiati vengono integrati nelle immagini di destinazione.
- Implementazione di Ultralytics: CopyPaste
- Nota:
- Il principio IoA è lo stesso per entrambi i
copy_paste_mode, ma il modo in cui gli oggetti vengono copiati è diverso. - A seconda delle dimensioni dell'immagine, gli oggetti potrebbero talvolta essere copiati parzialmente o interamente fuori dall'inquadratura.
- A seconda della qualità delle annotazioni poligonali, gli oggetti copiati potrebbero presentare lievi variazioni di forma rispetto agli originali.
- Il principio IoA è lo stesso per entrambi i
| Immagine di riferimento | Immagine scelta per copy_paste | copy_paste attivato con copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionAumenti specifici per la classificazione#
Link to this sectionAuto Augment (auto_augment)#
- Opzioni:
'randaugment','autoaugment','augmix',None - Predefinito:
'randaugment' - Utilizzo: Applica politiche di aumento automatizzate per la classificazione. L'opzione
'randaugment'utilizza RandAugment,'autoaugment'utilizza AutoAugment e'augmix'utilizza AugMix. Impostare suNonedisabilita l'aumento automatizzato. - Scopo: Ottimizza automaticamente le strategie di aumento per le attività di classificazione. Le differenze sono le seguenti:
- AutoAugment: Questa modalità applica politiche di aumento predefinite apprese da dataset come ImageNet, CIFAR10 e SVHN. Puoi selezionare queste politiche esistenti ma non puoi addestrarne di nuove all'interno di Torchvision. Per scoprire strategie di aumento ottimali per dataset specifici, sarebbero necessarie librerie esterne o implementazioni personalizzate. Riferimento al documento AutoAugment.
- RandAugment: Applica una selezione casuale di trasformazioni con magnitudo uniforme. Questo approccio riduce la necessità di un'ampia fase di ricerca, rendendolo più efficiente dal punto di vista computazionale pur migliorando la robustezza del modello. Riferimento al documento RandAugment.
- AugMix: AugMix è un metodo di aumento dei dati che migliora la robustezza del modello creando diverse variazioni dell'immagine attraverso combinazioni casuali di trasformazioni semplici. Riferimento al documento AugMix.
- Implementazione di Ultralytics: classify_augmentations()
- Nota:
- Essenzialmente, la differenza principale tra i tre metodi è il modo in cui le politiche di aumento vengono definite e applicate.
- Puoi fare riferimento a questo articolo che confronta i tre metodi in dettaglio.
Link to this sectionCancellazione casuale (erasing)#
- Intervallo:
0.0-0.9 - Predefinito:
0.4 - Utilizzo: Cancella casualmente porzioni dell'immagine durante l'addestramento alla classificazione. L'iperparametro
erasingdefinisce la probabilità di applicare la trasformazione, conerasing=0.9che garantisce che quasi tutte le immagini vengano cancellate eerasing=0.0che disabilita la trasformazione. Ad esempio, conerasing=0.5, ogni immagine ha il 50% di probabilità di avere una porzione cancellata. - Scopo: Aiuta i modelli a apprendere caratteristiche robuste e previene l'eccessiva dipendenza da regioni specifiche dell'immagine. Ad esempio, nei sistemi di riconoscimento facciale, la cancellazione casuale aiuta i modelli a diventare più robusti verso occlusioni parziali come occhiali da sole, maschere facciali o altri oggetti che potrebbero coprire parzialmente le caratteristiche del volto. Ciò migliora le prestazioni nel mondo reale costringendo il modello a identificare gli individui utilizzando molteplici caratteristiche facciali anziché dipendere esclusivamente da tratti distintivi che potrebbero essere oscurati.
- Implementazione di Ultralytics: classify_augmentations()
- Nota:
- L'aumento
erasingviene fornito con gli iperparametriscale,ratioevalueche non possono essere modificati con l'implementazione attuale. I loro valori predefiniti sono rispettivamente(0.02, 0.33),(0.3, 3.3)e0, come indicato nella documentazione di PyTorch. - Il limite superiore dell'iperparametro
erasingè impostato su0.9per evitare di applicare la trasformazione a tutte le immagini.
- L'aumento
erasing disattivato | erasing attivato (esempio 1) | erasing attivato (esempio 2) | erasing attivato (esempio 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Link to this sectionFunzionalità di aumento avanzate#
Link to this sectionTrasformazioni Albumentations personalizzate (augmentations)#
- Tipo:
listdi trasformazioni Albumentations - Predefinito:
None - Utilizzo: Ti consente di fornire trasformazioni Albumentations personalizzate per l'aumento dei dati utilizzando l'API Python. Questo parametro accetta un elenco di oggetti di trasformazione Albumentations che verranno applicati durante l'addestramento invece delle trasformazioni Albumentations predefinite.
- Scopo: Fornisce un controllo granulare sulle strategie di aumento dei dati sfruttando l'ampia libreria di trasformazioni Albumentations. Questo è particolarmente utile quando hai bisogno di aumenti specializzati oltre le opzioni YOLO integrate, come regolazioni avanzate del colore, iniezione di rumore o trasformazioni specifiche del dominio.
- Implementazione di Ultralytics: Albumentations
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Define custom Albumentations transforms
custom_transforms = [
A.Blur(blur_limit=7, p=0.5),
A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
A.CLAHE(clip_limit=4.0, p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]
# Train with custom Albumentations transforms
model.train(
data="coco8.yaml",
epochs=100,
augmentations=custom_transforms, # Pass custom transforms
imgsz=640,
)Punti chiave:
- Solo API Python: Le trasformazioni Albumentations personalizzate sono attualmente supportate solo tramite l'API Python. Non possono essere specificate tramite CLI o file di configurazione YAML.
- Sostituisce le trasformazioni predefinite: Quando fornisci trasformazioni personalizzate tramite il parametro
augmentations, esse sostituiscono completamente le trasformazioni Albumentations predefinite. Le aumentazioni YOLO predefinite (comemosaic,hsv_h,hsv_s,degrees, ecc.) rimangono attive e vengono applicate indipendentemente. - Compatibilità con i riquadri di delimitazione: Presta attenzione quando utilizzi trasformazioni spaziali (trasformazioni che modificano la geometria dell'immagine). Ultralytics gestisce automaticamente le regolazioni dei riquadri di delimitazione, ma alcune trasformazioni complesse potrebbero richiedere una configurazione aggiuntiva.
- Libreria estesa: Albumentations offre oltre 70 diverse trasformazioni. Esplora la documentazione di Albumentations per scoprire tutte le opzioni disponibili.
- Considerazione sulle prestazioni: Aggiungere troppi aumenti o utilizzare trasformazioni computazionalmente costose può rallentare l'addestramento. Inizia con un set ridotto e monitora la velocità di addestramento.
Casi d'uso comuni:
- Imaging medico: Applica trasformazioni specializzate come deformazioni elastiche o distorsioni della griglia per l'aumento di immagini a raggi X o risonanza magnetica
- Immagini aeree/satellitari: Utilizza trasformazioni ottimizzate per prospettive dall'alto
- Condizioni di scarsa illuminazione: Applica regolazioni di rumore e luminosità per simulare un'illuminazione difficile
- Ispezione industriale: Aggiungi pattern simili a difetti o variazioni di texture per applicazioni di controllo qualità
Note di compatibilità:
- Richiede Albumentations versione 1.0.3 o superiore
- Compatibile con tutte le attività di rilevamento e segmentazione YOLO
- Non applicabile alle attività di classificazione (la classificazione utilizza una diversa pipeline di aumento)
Per ulteriori informazioni su Albumentations e le trasformazioni disponibili, visita la documentazione ufficiale di Albumentations.
Link to this sectionFAQ#
Link to this sectionCi sono troppi aumenti tra cui scegliere. Come faccio a sapere quali usare?#
Scegliere gli aumenti giusti dipende dal tuo caso d'uso specifico e dal dataset. Ecco alcune linee guida generali per aiutarti a decidere:
- Nella maggior parte dei casi, lievi variazioni di colore e luminosità sono vantaggiose. I valori predefiniti per
hsv_h,hsv_sehsv_vsono un solido punto di partenza. - Se il punto di vista della fotocamera è coerente e non cambierà una volta distribuito il modello, probabilmente puoi saltare trasformazioni geometriche come
rotation,translation,scale,shearoperspective. Tuttavia, se l'angolo della fotocamera potrebbe variare e hai bisogno che il modello sia più robusto, è meglio mantenere questi aumenti. - Usa l'aumento
mosaicsolo se avere oggetti parzialmente occlusi o oggetti multipli per immagine è accettabile e non modifica il valore dell'etichetta. In alternativa, puoi manteneremosaicattivo ma aumentare il valoreclose_mosaicper disabilitarlo prima nel processo di addestramento.
In breve: mantieni le cose semplici. Inizia con un piccolo set di aumenti e aggiungine gradualmente altri secondo necessità. L'obiettivo è migliorare la generalizzazione e la robustezza del modello, non complicare eccessivamente il processo di addestramento. Inoltre, assicurati che gli aumenti che applichi riflettano la stessa distribuzione di dati che il tuo modello incontrerà in produzione.
Link to this sectionQuando avvio un addestramento, vedo un riferimento a albumentations: Blur[...]. Ciò significa che Ultralytics YOLO esegue un aumento aggiuntivo come la sfocatura?#
Se il pacchetto albumentations è installato, Ultralytics applica automaticamente una serie di aumenti extra alle immagini utilizzandolo. Questi aumenti sono gestiti internamente e non richiedono alcuna configurazione aggiuntiva.
Puoi trovare l'elenco completo delle trasformazioni applicate nella nostra documentazione tecnica, così come nella nostra guida all'integrazione di Albumentations. Nota che solo gli aumenti con una probabilità p maggiore di 0 sono attivi. Questi vengono applicati intenzionalmente a basse frequenze per mimare artefatti visivi del mondo reale, come effetti di sfocatura o scala di grigi.
Puoi anche fornire le tue trasformazioni Albumentations personalizzate utilizzando l'API Python. Vedi la sezione Funzionalità di aumento avanzate per maggiori dettagli.
Link to this sectionQuando avvio un addestramento, non vedo alcun riferimento ad albumentations. Perché?#
Verifica se il pacchetto albumentations è installato. In caso contrario, puoi installarlo eseguendo pip install albumentations. Una volta installato, il pacchetto dovrebbe essere rilevato e utilizzato automaticamente da Ultralytics.
Link to this sectionCome posso personalizzare i miei aumenti?#
Puoi personalizzare gli aumenti creando una classe di dataset e un trainer personalizzati. Ad esempio, puoi sostituire gli aumenti di classificazione predefiniti di Ultralytics con torchvision.transforms.Resize di PyTorch o altre trasformazioni. Vedi l'esempio di addestramento personalizzato nella documentazione sulla classificazione per i dettagli sull'implementazione.
















































