Vai al contenuto

Aumento dei dati utilizzando Ultralytics YOLO

Esempio di aumentazioni dell'immagine

Introduzione

L'aumento dei dati è una tecnica cruciale nella computer vision che espande artificialmente il tuo set di dati di addestramento applicando varie trasformazioni alle immagini esistenti. Durante l'addestramento di modelli di deep learning come Ultralytics YOLO, l'aumento dei dati aiuta a migliorare la robustezza del modello, riduce l'overfitting e migliora la generalizzazione a scenari del mondo reale.



Guarda: Come utilizzare Mosaic, MixUp e altre tecniche di Data Augmentation per aiutare i modelli Ultralytics YOLO a generalizzare meglio 🚀

Perché l'aumento dei dati è importante

L'aumento dei dati svolge molteplici scopi fondamentali nell'addestramento di modelli di computer vision:

  • Dataset espanso: Creando variazioni delle immagini esistenti, è possibile aumentare efficacemente le dimensioni del dataset di training senza raccogliere nuovi dati.
  • Generalizzazione migliorata: I modelli imparano a riconoscere gli oggetti in varie condizioni, rendendoli più robusti nelle applicazioni del mondo reale.
  • Riduzione dell'Overfitting: Introducendo variabilità nei dati di addestramento, è meno probabile che i modelli memorizzino caratteristiche specifiche delle immagini.
  • Prestazioni Migliorate: I modelli addestrati con un'adeguata augmentation in genere raggiungono una migliore accuratezza sui set di convalida e di test.

L'implementazione di Ultralytics YOLO fornisce una suite completa di tecniche di aumento dei dati, ognuna delle quali serve a scopi specifici e contribuisce alle prestazioni del modello in modi diversi. Questa guida esplorerà in dettaglio ogni parametro di aumento dei dati, aiutandoti a capire quando e come utilizzarli efficacemente nei tuoi progetti.

Configurazioni di esempio

Puoi personalizzare ogni parametro utilizzando l'API Python, l'interfaccia a riga di comando (CLI) o un file di configurazione. Di seguito sono riportati esempi di come impostare l'aumento dei dati in ciascun metodo.

Esempi di configurazione

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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 augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5

Utilizzo di un file di configurazione

Puoi definire tutti i parametri di training, inclusi gli aumenti, in un file di configurazione YAML (ad esempio, train_custom.yaml). L'argomento mode parametro è richiesto solo quando si utilizza la CLI. Questo nuovo file YAML sovrascriverà quindi quello predefinito situato in ultralytics package.

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

Quindi avvia l'addestramento con l'API Python:

Esempio di addestramento

from ultralytics import YOLO

# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" cfg=train_custom.yaml

Aumenti dello spazio colore

Regolazione della tonalità (hsv_h)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.015
  • Utilizzo: Sposta i colori dell'immagine preservandone le relazioni. The hsv_h L'iperparametro definisce l'entità dello spostamento, con la regolazione finale scelta casualmente tra -hsv_h e hsv_h. Ad esempio, con hsv_h=0.3, lo spostamento viene selezionato casualmente all'interno di-0.3 a 0.3. Per valori superiori a 0.5, lo spostamento di tonalità si avvolge attorno alla ruota dei colori, ecco perché le aumentazioni appaiono uguali tra 0.5 e -0.5.
  • Scopo: Particolarmente utile per scenari all'aperto in cui le condizioni di illuminazione possono influenzare notevolmente l'aspetto degli oggetti. Ad esempio, una banana potrebbe apparire più gialla sotto la luce del sole intensa, ma più verdognola al chiuso.
  • Implementazione di Ultralytics: RandomHSV
-0.5 -0.25 0.0 0.25 0.5
hsv_h_-0.5_augmentation hsv_h_-0.25_augmentation augmentation_identity hsv_h_0.25_augmentation hsv_h_-0.5_augmentation

Regolazione della saturazione (hsv_s)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.7
  • Utilizzo: Modifica l'intensità dei colori nell'immagine. Il parametro hsv_h L'iperparametro definisce l'entità dello spostamento, con la regolazione finale scelta casualmente tra -hsv_s e hsv_s. Ad esempio, con hsv_s=0.7, l'intensità viene selezionata casualmente all'interno di-0.7 a 0.7.
  • Scopo: Aiuta i modelli a gestire diverse condizioni meteorologiche e impostazioni della telecamera. Ad esempio, un segnale stradale rosso potrebbe apparire molto vivido in una giornata di sole, ma apparire opaco e sbiadito in condizioni di nebbia.
  • Implementazione di Ultralytics: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
hsv_s_-1_augmentation hsv_s_-0.5_augmentation augmentation_identity hsv_s_0.5_augmentation hsv_s_1_augmentation

Regolazione della Luminosità (hsv_v)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.4
  • Utilizzo: Modifica la luminosità dell'immagine. Il parametro hsv_v L'iperparametro definisce l'entità dello spostamento, con la regolazione finale scelta casualmente tra -hsv_v e hsv_v. Ad esempio, con hsv_v=0.4, l'intensità viene selezionata casualmente all'interno di-0.4 a 0.4.
  • Scopo: Essenziale per l'addestramento di modelli che devono funzionare in diverse condizioni di illuminazione. Ad esempio, una mela rossa potrebbe apparire brillante alla luce del sole, ma molto più scura all'ombra.
  • Implementazione di Ultralytics: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
hsv_v_-1_augmentation hsv_v_-0.5_augmentation augmentation_identity hsv_v_0.5_augmentation hsv_v_1_augmentation

Trasformazioni geometriche

Rotazione (degrees)

  • Intervallo: 0.0 a 180
  • Predefinito: 0.0
  • Utilizzo: Ruota le immagini in modo casuale entro l'intervallo specificato. The degrees L'iperparametro definisce l'angolo di rotazione, con la regolazione finale scelta casualmente tra -degrees e degrees. Ad esempio, con degrees=10.0, la rotazione viene selezionata casualmente all'interno di-10.0 a 10.0.
  • Scopo: Fondamentale per le applicazioni in cui gli oggetti possono apparire con orientamenti diversi. Ad esempio, nelle immagini aeree dei droni, 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
degrees_-180_augmentation degrees_-90_augmentation augmentation_identity degrees_90_augmentation degrees_180_augmentation

Traslazione (translate)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.1
  • Utilizzo: Sposta le immagini orizzontalmente e verticalmente di una frazione casuale della dimensione dell'immagine. The translate L'iperparametro definisce l'entità dello spostamento, con la regolazione finale scelta casualmente due volte (una per ciascun asse) all'interno dell'intervallo -translate e translate. Ad esempio, con translate=0.5, la traslazione viene selezionata casualmente all'interno di-0.5 a 0.5 sull'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 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; l'aumento della 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 i parametri x e y assi. Valori -1.0 e 1.0non vengono mostrate perché tradurrebbero completamente l'immagine fuori dal frame.
-0.5 -0.25 0.0 0.25 0.5
translate_-0.5_augmentation translate_-0.25_augmentation augmentation_identity translate_0.25_augmentation translate_0.5_augmentation

Scala (scale)

  • Intervallo: ≥0.0
  • Predefinito: 0.5
  • Utilizzo: Ridimensiona le immagini di un fattore casuale all'interno dell'intervallo specificato. Il parametro scale L'iperparametro definisce il fattore di scala, con la regolazione finale scelta casualmente tra 1-scale e 1+scale. Ad esempio, con scale=0.5, il ridimensionamento viene selezionato casualmente all'interno di0.5 a 1.5.
  • Scopo: Permette 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 telecamera, richiedendo al modello di riconoscerli indipendentemente dalle loro dimensioni.
  • Implementazione di Ultralytics: RandomPerspective
  • Nota:
    • Il valore -1.0 non viene mostrato perché farebbe scomparire l'immagine, mentre 1.0 si traduce semplicemente in uno zoom 2x.
    • I valori visualizzati nella tabella sottostante sono quelli applicati tramite l'iperparametro scale, non il fattore di scala finale.
    • Se scale è maggiore di 1.0, l'immagine può essere molto piccola o capovolta, poiché il fattore di scala è scelto casualmente tra 1-scale e 1+scale. Ad esempio, con scale=3.0, il ridimensionamento viene selezionato casualmente all'interno di-2.0 a 4.0. Se viene scelto un valore negativo, l'immagine viene capovolta.
-0.5 -0.25 0.0 0.25 0.5
scale_-0.5_augmentation scale_-0.25_augmentation augmentation_identity scale_0.25_augmentation scale_0.5_augmentation

Cisalgiamento (shear)

  • Intervallo: -180 a +180
  • Predefinito: 0.0
  • Utilizzo: Introduce una trasformazione geometrica che distorce l'immagine lungo entrambi gli assi x e y, spostando efficacemente parti dell'immagine in una direzione mantenendo le linee parallele. Il parametro shear L'iperparametro definisce l'angolo di taglio, con la regolazione finale scelta casualmente tra -shear e shear. Ad esempio, con shear=10.0, il taglio viene selezionato casualmente all'interno di-10 a 10 sull'asse x, e un altro valore casuale indipendente viene selezionato nello stesso intervallo sull'asse y.
  • Scopo: Aiuta i modelli a generalizzare le variazioni degli 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 non perpendicolari della telecamera. L'applicazione dell'aumento di shear assicura che il modello impari a riconoscere gli oggetti nonostante tali distorsioni oblique.
  • Implementazione di Ultralytics: RandomPerspective
  • Nota:
    • shear valori possono distorcere rapidamente l'immagine, quindi si consiglia di iniziare con valori piccoli e aumentarli gradualmente.
    • A differenza delle trasformazioni prospettiche, lo shear non introduce profondità o punti di fuga, ma distorce la forma degli oggetti modificandone gli angoli mantenendo paralleli i lati opposti.
-10 -5 0.0 5 10
aumento_cisalgiamento_-10 aumento_cisalgiamento_-5 augmentation_identity aumento_cisalgiamento_5 aumento_cisalgiamento_10

Prospettiva (perspective)

  • Intervallo: 0.0 - 0.001
  • Predefinito: 0.0
  • Utilizzo: Applica una trasformazione prospettica completa lungo entrambi gli assi x e y, simulando l'aspetto degli oggetti quando vengono visualizzati da diverse profondità o angolazioni. Il parametro perspective L'iperparametro definisce l'entità della prospettiva, con la regolazione finale scelta casualmente tra -perspective e perspective. Ad esempio, con perspective=0.001, la prospettiva viene selezionata casualmente all'interno di-0.001 a 0.001 sull'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 del punto di vista, specialmente in scenari in cui gli oggetti appaiono scorciati o distorti a causa di cambiamenti di prospettiva. Ad esempio, nel rilevamento di oggetti basato su drone, 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 del mondo reale.
  • Implementazione di Ultralytics: RandomPerspective
-0.001 -0.0005 0.0 0.0005 0.001
perspective_-0.001_augmentation perspective_-0.0005_augmentation augmentation_identity perspective_0.0005_augmentation perspective_0.001_augmentation

Capovolgi su-giù (flipud)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Esegue un ribaltamento verticale invertendo l'immagine lungo l'asse y. Questa trasformazione specchia l'intera immagine capovolta, ma preserva tutte le relazioni spaziali tra gli oggetti. L'iperparametro flipud definisce la probabilità di applicare la trasformazione, con un valore di flipud=1.0 garantendo che tutte le immagini vengano capovolte e un valore di flipud=0.0 disabilitando completamente la trasformazione. Ad esempio, con flipud=0.5, ogni immagine ha una probabilità del 50% di essere capovolta verticalmente.
  • Scopo: Utile per scenari in cui gli oggetti possono apparire capovolti. Ad esempio, nei sistemi di visione robotica, gli oggetti sui nastri trasportatori o sui bracci robotici possono essere prelevati e posizionati in vari orientamenti. Il ribaltamento verticale aiuta il modello a riconoscere gli oggetti indipendentemente dal loro posizionamento dall'alto verso il basso.
  • Implementazione di Ultralytics: RandomFlip
flipud off flipud su
augmentation_identity flipud_on_augmentation

Capovolgi a sinistra-destra (fliplr)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.5
  • Utilizzo: Esegue un ribaltamento 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 gli oggetti che appaiono in orientamenti speculari. Il parametro fliplr L'iperparametro definisce la probabilità di applicare la trasformazione, con un valore di fliplr=1.0 garantendo che tutte le immagini vengano capovolte e un valore di fliplr=0.0 disabilitando completamente la trasformazione. Ad esempio, con fliplr=0.5, ogni immagine ha una probabilità del 50% di essere capovolta orizzontalmente.
  • Scopo: Il ribaltamento orizzontale è ampiamente utilizzato nel rilevamento di oggetti, nella stima della posa e nel riconoscimento facciale per migliorare la robustezza contro le variazioni sinistra-destra. Ad esempio, nella guida autonoma, veicoli e pedoni possono apparire su entrambi i lati della strada e il ribaltamento orizzontale aiuta il modello a riconoscerli ugualmente bene in entrambi gli orientamenti.
  • Implementazione di Ultralytics: RandomFlip
fliplr off fliplr su
augmentation_identity fliplr_on_augmentation

Scambio canali BGR (bgr)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Scambia i canali di colore di un'immagine da RGB a BGR, alterando l'ordine in cui i colori sono rappresentati. The bgr L'iperparametro definisce la probabilità di applicare la trasformazione, con bgr=1.0 garantendo che tutte le immagini vengano sottoposte allo scambio di canali e bgr=0.0 disabilitandolo. Ad esempio, con bgr=0.5, ogni immagine ha una probabilità del 50% di essere convertita da RGB a BGR.
  • Scopo: Aumenta la robustezza a diversi ordinamenti 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 distribuiscono modelli in ambienti in cui il formato colore di input potrebbe differire dai dati di addestramento.
  • Implementazione di Ultralytics: Format
bgr off bgr su
augmentation_identity bgr_on_augmentation

Mosaico (mosaic)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 1.0
  • Utilizzo: Combina quattro immagini di training in una sola. Il parametro mosaic L'iperparametro definisce la probabilità di applicare la trasformazione, con mosaic=1.0 garantendo che tutte le immagini siano combinate e mosaic=0.0 disabilitando la trasformazione. Ad esempio, con mosaic=0.5, ogni immagine ha una probabilità del 50% di essere combinata con altre tre immagini.
  • Scopo: Altamente efficace per migliorare il rilevamento di piccoli oggetti e la comprensione del contesto. Ad esempio, nei progetti di conservazione della fauna selvatica in cui gli animali possono apparire a varie distanze e scale, l'aumento a mosaico aiuta il modello a imparare a riconoscere la stessa specie attraverso diverse dimensioni, occlusioni parziali e contesti ambientali creando artificialmente campioni di addestramento diversi da dati limitati.
  • Implementazione di Ultralytics: Mosaic
  • Nota:
    • Anche se il mosaic L'aumento dei dati rende il modello più robusto, ma può anche rendere il processo di addestramento più impegnativo.
    • Il mosaic augmentation can be disabled near the end of training by setting close_mosaic al numero di epoche prima del completamento, quando dovrebbe essere disattivato. Ad esempio, se epochs è impostato su 200 e close_mosaic è impostato su 20, la funzione mosaic l'aumento dei dati verrà disabilitato dopo 180 epoche. Se close_mosaic è impostato su 0, la funzione mosaic l'aumento dei dati sarà abilitato per l'intero processo di addestramento.
    • Il centro del mosaic generato è determinato utilizzando valori casuali e può trovarsi all'interno o all'esterno dell'immagine.
    • L'implementazione attuale del mosaic augmentation combines 4 images picked randomly from the dataset. If the dataset is small, the same image may be used multiple times in the same mosaic.
mosaic off mosaic su
augmentation_identity mosaic_on_augmentation

Mixup (mixup)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Combina due immagini e le relative etichette con una data probabilità. Il parametro mixup L'iperparametro definisce la probabilità di applicare la trasformazione, con mixup=1.0 garantendo che tutte le immagini siano miscelate e mixup=0.0 disabilitando la trasformazione. Ad esempio, con mixup=0.5, ogni immagine ha una probabilità del 50% di essere mescolata con un'altra immagine.
  • Scopo: Migliora la robustezza del modello e riduce l'overfitting. Ad esempio, nei sistemi di riconoscimento dei prodotti al dettaglio, mixup aiuta il modello a imparare caratteristiche più robuste mescolando immagini di prodotti diversi, insegnandogli a identificare gli articoli anche quando sono parzialmente visibili o oscurati da altri prodotti sugli scaffali affollati dei negozi.
  • Implementazione di Ultralytics: Mixup
  • Nota:
    • Il mixup ratio è un valore casuale estratto da a np.random.beta(32.0, 32.0) distribuzione beta, il che significa che ogni immagine contribuisce per circa il 50%, con leggere variazioni.
Prima immagine, mixup off Seconda immagine, mixup off mixup su
augmentation_mixup_identity_1 augmentation_mixup_identity_2 mixup_on_augmentation

CutMix (cutmix)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Taglia una regione rettangolare da un'immagine e la incolla su un'altra immagine con una data probabilità. Il parametro cutmix L'iperparametro definisce la probabilità di applicare la trasformazione, con cutmix=1.0 garantendo che tutte le immagini vengano sottoposte a questa trasformazione e cutmix=0.0 disabilitandolo completamente. Ad esempio, con cutmix=0.5, ogni immagine ha una probabilità del 50% di avere una regione sostituita con una patch proveniente da un'altra immagine.
  • Scopo: Migliora le prestazioni del modello creando scenari di occlusione realistici, mantenendo al contempo l'integrità delle caratteristiche locali. Ad esempio, nei sistemi di guida autonoma, cutmix aiuta il modello a imparare a riconoscere veicoli o pedoni anche quando sono parzialmente occlusi da altri oggetti, migliorando la precisione del rilevamento in ambienti reali complessi con oggetti sovrapposti.
  • Implementazione di Ultralytics: CutMix
  • Nota:
    • La dimensione e la posizione della regione tagliata sono determinate casualmente per ogni applicazione.
    • A differenza di mixup, che fonde i valori dei pixel a livello globale, cutmix mantiene le intensità dei pixel originali all'interno delle regioni tagliate, preservando le caratteristiche locali.
    • Una regione viene incollata nell'immagine di destinazione solo se non si sovrappone a nessun bounding box esistente. Inoltre, solo i bounding box che conservano almeno 0.1 (10%) della loro area originale all'interno della regione incollata vengono preservati.
    • Questa soglia minima dell'area del riquadro di delimitazione non può essere modificata con l'implementazione attuale ed è impostata su 0.1 per impostazione predefinita.
Prima immagine, cutmix off Seconda immagine, cutmix off cutmix su
augmentation_cutmix_identity_1 augmentation_cutmix_identity_2 cutmix_on_augmentation

Aumentazioni specifiche per la segmentazione

Copia-Incolla (copy_paste)

  • Intervallo: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Funziona solo per le attività di segmentazione; questa augmentation copia oggetti all'interno o tra le immagini in base a una probabilità specificata, controllata dal parametro copy_paste_mode. copy_paste L'iperparametro definisce la probabilità di applicare la trasformazione, con copy_paste=1.0 garantendo che tutte le immagini vengano copiate e copy_paste=0.0 disabilitando la trasformazione. Ad esempio, con copy_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 di istanze e classi di oggetti rari. Ad esempio, nel rilevamento di difetti industriali in cui alcuni tipi di difetti appaiono raramente, l'aumento di copia-incolla può aumentare artificialmente l'occorrenza di questi difetti rari copiandoli da un'immagine all'altra, aiutando il modello a imparare meglio questi casi sottorappresentati senza richiedere ulteriori campioni difettosi.
  • Implementazione di Ultralytics: CopyPaste
  • Nota:
    • Come mostrato nella GIF qui sotto, il copy_paste augmentation can be used to copy objects from one image to another.
    • Una volta che un oggetto viene copiato, indipendentemente dal copy_paste_mode, la sua Intersection over Area (IoA) viene calcolata con tutti gli oggetti dell'immagine sorgente. Se tutti gli IoA sono inferiori a 0.3 (30%), l'oggetto viene incollato nell'immagine di destinazione. Se solo uno IoA è superiore 0.3, l'oggetto non viene incollato nell'immagine di destinazione.
    • La soglia IoA non può essere modificata con l'implementazione attuale ed è impostata su 0.3 per impostazione predefinita.
copy_paste off copy_paste on con copy_paste_mode=flip Visualizza il copy_paste processo
augmentation_identity copy_paste_on_augmentation copy_paste_augmentation_gif_demo

Modalità Copia-Incolla (copy_paste_mode)

  • Opzioni: 'flip', 'mixup'
  • Predefinito: 'flip'
  • Utilizzo: Determina il metodo utilizzato per copia-incolla aumento dei dati. 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 copy_paste_mode, ma il modo in cui gli oggetti vengono copiati è diverso.
    • A seconda delle dimensioni dell'immagine, gli oggetti possono talvolta essere copiati parzialmente o interamente al di fuori del frame.
    • A seconda della qualità delle annotazioni poligonali, gli oggetti copiati possono presentare lievi variazioni di forma rispetto agli originali.
Immagine di riferimento Immagine scelta per copy_paste copy_paste on con copy_paste_mode=mixup
augmentation_mixup_identity_2 augmentation_identity copy_paste_mode_mixup_augmentation

Aumenti specifici per la classificazione

Aumento automatico (auto_augment)

  • Opzioni: 'randaugment', 'autoaugment', 'augmix', None
  • Predefinito: 'randaugment'
  • Utilizzo: Applica policy di augmentation automatizzate per la classificazione. Il parametro 'randaugment' l'opzione utilizza RandAugment, 'autoaugment' utilizza AutoAugment, e 'augmix' utilizza AugMix. Impostazione su None disabilita l'aumento automatico.
  • Scopo: Ottimizza automaticamente le strategie di augmentation per le attività di classificazione. Le differenze sono le seguenti:
    • AutoAugment: Questa modalità applica policy di augmentation predefinite apprese da dataset come ImageNet, CIFAR10 e SVHN. Gli utenti possono selezionare queste policy esistenti ma non possono addestrarne di nuove all'interno di Torchvision. Per scoprire strategie di augmentation ottimali per dataset specifici, sarebbero necessarie librerie esterne o implementazioni personalizzate. Riferimento al paper di AutoAugment.
    • RandAugment: Applica una selezione casuale di trasformazioni con magnitudo uniforme. Questo approccio riduce la necessità di una fase di ricerca estensiva, rendendolo più efficiente dal punto di vista computazionale pur migliorando la robustezza del modello. Riferimento al paper di 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 paper di AugMix.
  • Implementazione di Ultralytics: classify_augmentations()
  • Nota:
    • In sostanza, la differenza principale tra i tre metodi risiede nel modo in cui le policy di augmentation sono definite e applicate.
    • Puoi fare riferimento a questo articolo che confronta i tre metodi in dettaglio.

Random Erasing (erasing)

  • Intervallo: 0.0 - 0.9
  • Predefinito: 0.4
  • Utilizzo: Cancella casualmente porzioni dell'immagine durante il training di classificazione. Il parametro erasing L'iperparametro definisce la probabilità di applicare la trasformazione, con erasing=0.9 garantendo che quasi tutte le immagini vengano cancellate e erasing=0.0 disabilitando la trasformazione. Ad esempio, con erasing=0.5, ogni immagine ha una probabilità del 50% di avere una porzione cancellata.
  • Scopo: Aiuta i modelli a imparare caratteristiche robuste e previene l'eccessivo affidamento su specifiche regioni dell'immagine. Ad esempio, nei sistemi di riconoscimento facciale, la cancellazione casuale aiuta i modelli a diventare più robusti alle occlusioni parziali come occhiali da sole, maschere facciali o altri oggetti che potrebbero coprire parzialmente le caratteristiche del viso. Ciò migliora le prestazioni nel mondo reale costringendo il modello a identificare gli individui utilizzando molteplici caratteristiche facciali piuttosto che dipendere esclusivamente da caratteristiche distintive che potrebbero essere oscurate.
  • Implementazione di Ultralytics: classify_augmentations()
  • Nota:
    • Il erasing augmentation comes with a scale, ratio, e value Iperparametri che non possono essere modificati con implementazione attuale. I loro valori predefiniti sono (0.02, 0.33), (0.3, 3.3), e 0, rispettivamente, come indicato in PyTorch documentazione.
    • Il limite superiore del erasing L'iperparametro è impostato su 0.9 per evitare di applicare la trasformazione a tutte le immagini.
erasing off erasing on (esempio 1) erasing on (esempio 2) erasing on (esempio 3)
augmentation_identity erasing_ex1_augmentation erasing_ex2_augmentation erasing_ex3_augmentation

FAQ

Ci sono troppe aumentazioni tra cui scegliere. Come faccio a sapere quali usare?

La scelta delle giuste tecniche di augmentation dipende dal tuo caso d'uso specifico e dal dataset. Ecco alcune linee guida generali per aiutarti a decidere:

  • Nella maggior parte dei casi, leggere variazioni di colore e luminosità sono vantaggiose. I valori predefiniti per hsv_h, hsv_s, e hsv_v sono un solido punto di partenza.
  • Se il punto di vista della telecamera è coerente e non cambierà una volta implementato il modello, è probabile che tu possa saltare trasformazioni geometriche come rotation, translation, scale, shear, oppure perspective. Tuttavia, se l'angolazione della telecamera può variare e hai bisogno che il modello sia più robusto, è meglio mantenere questi aumenti.
  • Utilizzare il mosaic Aumentare i dati solo se avere oggetti parzialmente occlusi o più oggetti per immagine è accettabile e non modifica il valore dell'etichetta. In alternativa, puoi mantenere mosaic attivo ma aumenta il close_mosaic valore per disabilitarlo prima nel processo di addestramento.

In breve: mantieni la semplicità. Inizia con un piccolo set di aumentazioni e aggiungine gradualmente altre secondo necessità. L'obiettivo è migliorare la generalizzazione e la robustezza del modello, non complicare eccessivamente il processo di training. Inoltre, assicurati che le aumentazioni che applichi riflettano la stessa distribuzione dei dati che il tuo modello incontrerà in produzione.

Quando si avvia un addestramento, si vede un albumentations: Blur[...] riferimento. Significa che Ultralytics YOLO esegue un'ulteriore augmentation come la sfocatura?

Se il albumentations pacchetto è installato, Ultralytics applica automaticamente una serie di aumenti extra dell'immagine utilizzandolo. Questi aumenti vengono gestiti internamente e non richiedono alcuna configurazione aggiuntiva.

Puoi trovare l'elenco completo delle trasformazioni applicate nel nostro documentazione tecnica, così come nel nostro Guida all'integrazione di Albumentations. Si noti che solo gli aumenti con una probabilità p maggiore di 0 sono attive. Queste vengono applicate intenzionalmente a basse frequenze per simulare artefatti visivi del mondo reale, come effetti di sfocatura o scala di grigi.

Quando si avvia un addestramento, non vedo alcun riferimento a albumentations. Perché?

Verificare se il albumentations pacchetto è installato. In caso contrario, puoi installarlo eseguendo pip install albumentations. Una volta installato, il pacchetto dovrebbe essere rilevato e utilizzato automaticamente da Ultralytics.

Come posso personalizzare le mie aumentazioni?

Puoi personalizzare gli aumenti creando una classe di dataset e un trainer personalizzati. Ad esempio, puoi sostituire gli aumenti di classificazione Ultralytics predefiniti con torchvision.transforms.Resize di PyTorch o altre trasformazioni. Consulta l'esempio di training personalizzato nella documentazione sulla classificazione per i dettagli sull'implementazione.



📅 Creato 4 mesi fa ✏️ Aggiornato 1 mese fa

Commenti