Vai al contenuto

Aumento dei dati con Ultralytics YOLO

Esempio di aumento dell'immagine

Introduzione

L'aumento dei dati è una tecnica cruciale nella computer vision che espande artificialmente il dataset di addestramento applicando varie trasformazioni alle immagini esistenti. Quando si addestrano modelli di deep learning come Ultralytics YOLO, l'aumento dei dati aiuta a migliorare la robustezza del modello, a ridurre l'overfitting e a migliorare la generalizzazione a scenari reali.

Perché l'aumento dei dati è importante

L'aumento dei dati ha molteplici scopi critici nell'addestramento dei modelli di visione artificiale:

  • Set di dati ampliato: Creando variazioni di immagini esistenti, è possibile aumentare efficacemente le dimensioni del dataset di addestramento senza raccogliere nuovi dati.
  • Generalizzazione migliorata: I modelli imparano a riconoscere gli oggetti in diverse condizioni, rendendoli più robusti nelle applicazioni reali.
  • Riduzione dell'overfitting: Introducendo la variabilità nei dati di addestramento, i modelli hanno meno probabilità di memorizzare caratteristiche specifiche dell'immagine.
  • Migliori prestazioni: I modelli addestrati con un'adeguata integrazione ottengono in genere una migliore accuratezza sui set di validazione e di test.

L'implementazione di Ultralytics YOLO offre una serie completa di tecniche di aumento, ognuna delle quali serve a scopi specifici e contribuisce alle prestazioni del modello in modi diversi. In questa guida si analizzerà in dettaglio ogni parametro di incremento, aiutandovi a capire quando e come utilizzarli efficacemente nei vostri progetti.

Esempi di configurazione

È possibile personalizzare ogni parametro utilizzando l'API Python , l'interfaccia della riga di comandoCLI) o un file di configurazione. Di seguito sono riportati alcuni esempi di come impostare l'incremento 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

È possibile definire tutti i parametri di addestramento, compresi gli incrementi, in un file di configurazione YAML (ad es, train_custom.yaml). Il mode è necessario solo quando si usa la CLI. Questo nuovo file YAML sovrascrive il parametro quello predefinito situato nella ultralytics pacchetto.

# 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 lanciare l'addestramento con l'API Python :

Esempio di treno

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)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.015
  • Utilizzo: Cambia i colori dell'immagine preservandone le relazioni. Il hsv_h L'iperparametro definisce l'entità dello spostamento, con l'aggiustamento finale scelto in modo casuale tra -hsv_h e hsv_h. Ad esempio, con hsv_h=0.3, il turno è selezionato in modo casuale all'interno di-0.3 a 0.3. Per valori superiori a 0.5Il cambiamento di tonalità si estende intorno alla ruota dei colori, ecco perché gli aumenti hanno lo stesso aspetto tra 0.5 e -0.5.
  • Scopo: è particolarmente utile per gli scenari all'aperto, dove le condizioni di illuminazione possono influenzare notevolmente l'aspetto degli oggetti. Ad esempio, una banana potrebbe apparire più gialla in piena luce solare, ma più verde in ambienti chiusi.
  • Implementazione diUltralytics: RandomHSV
-0.5 -0.25 0.0 0.25 0.5
hsv_h_-0,5_augmentation hsv_h_-0.25_augmentation identità_aumento hsv_h_0,25_augmentation hsv_h_-0,5_augmentation

Regolazione della saturazione (hsv_s)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.7
  • Utilizzo: Modifica l'intensità dei colori dell'immagine. Il hsv_h L'iperparametro definisce l'entità dello spostamento, con l'aggiustamento finale scelto in modo casuale tra -hsv_s e hsv_s. Ad esempio, con hsv_s=0.7, l'intensità è selezionata casualmente all'interno di-0.7 a 0.7.
  • Scopo: aiuta i modelli a gestire le diverse condizioni atmosferiche e le impostazioni della fotocamera. Ad esempio, un cartello stradale rosso potrebbe apparire molto vivido in una giornata di sole, ma sbiadito in condizioni di nebbia.
  • Implementazione diUltralytics: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
hsv_s_-1_augmentation hsv_s_-0,5_augmentation identità_aumento hsv_s_0,5_augmentation hsv_s_1_augmentation

Regolazione della luminosità (hsv_v)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.4
  • Utilizzo: Modifica la luminosità dell'immagine. Il hsv_v L'iperparametro definisce l'entità dello spostamento, con l'aggiustamento finale scelto in modo casuale tra -hsv_v e hsv_v. Ad esempio, con hsv_v=0.4, l'intensità è selezionata casualmente all'interno di-0.4 a 0.4.
  • Scopo: è essenziale per l'addestramento di modelli che devono funzionare in condizioni di luce diverse. Ad esempio, una mela rossa può apparire luminosa alla luce del sole ma molto più scura all'ombra.
  • Implementazione diUltralytics: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
hsv_v_-1_augmentation hsv_v_-0,5_augmentation identità_aumento hsv_v_0,5_augmentation hsv_v_1_augmentation

Trasformazioni geometriche

Rotazione (degrees)

  • Gamma: 0.0 a 180
  • Predefinito: 0.0
  • Utilizzo: Ruota le immagini in modo casuale entro l'intervallo specificato. Il degrees L'iperparametro definisce l'angolo di rotazione, con la regolazione finale scelta a caso tra -degrees e degrees. Ad esempio, con degrees=10.0, la rotazione è selezionata in modo casuale 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 e i modelli devono riconoscere gli oggetti indipendentemente dalla loro rotazione.
  • Implementazione diUltralytics: RandomPerspective
-180 -90 0.0 90 180
gradi_-180_augmentation gradi_-90_augmentation identità_aumento gradi_90_augmentation gradi_180_augmentation

Traduzione (translate)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.1
  • Utilizzo: Sposta le immagini orizzontalmente e verticalmente di una frazione casuale della dimensione dell'immagine. Il translate L'iperparametro definisce l'entità dello spostamento, con l'aggiustamento finale scelto casualmente due volte (una per ogni asse) all'interno dell'intervallo -translate e translate. Ad esempio, con translate=0.5, la traduzione è selezionata in modo casuale all'interno di-0.5 a 0.5 sull'asse delle ascisse, mentre sull'asse delle ordinate viene selezionato un altro valore casuale indipendente all'interno dello stesso intervallo.
  • Scopo: aiuta i modelli a imparare a rilevare gli 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; l'aumento della traduzione insegnerà al modello a riconoscere queste caratteristiche indipendentemente dalla loro completezza o posizione.
  • Implementazione diUltralytics: RandomPerspective
  • Nota: Per semplicità, le traduzioni applicate di seguito sono le stesse ogni volta per entrambi i casi. x e y assi. Valori -1.0 e 1.0non vengono mostrati perché farebbero uscire l'immagine completamente dall'inquadratura.
-0.5 -0.25 0.0 0.25 0.5
tradurre_-0.5_augmentation tradurre_-0,25_augmentation identità_aumento tradurre_0,25_augmentation tradurre_0,5_augmentation

Scala (scale)

  • Gamma: ≥0.0
  • Predefinito: 0.5
  • Utilizzo: Ridimensiona le immagini con un fattore casuale all'interno dell'intervallo specificato. Il scale L'iperparametro definisce il fattore di scala, con l'aggiustamento finale scelto casualmente tra 1-scale e 1+scale. Ad esempio, con scale=0.5, lo scaling è selezionato in modo casuale all'interno di0.5 a 1.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 telecamera e il modello deve riconoscerli indipendentemente dalle loro dimensioni.
  • Implementazione diUltralytics: RandomPerspective
  • Nota:
    • Il valore -1.0 non viene visualizzato perché farebbe scomparire l'immagine, mentre 1.0 si ottiene semplicemente uno zoom 2x.
    • I valori visualizzati nella tabella seguente sono quelli applicati attraverso 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, lo scaling è selezionato in modo casuale all'interno di-2.0 a 4.0. Se si sceglie un valore negativo, l'immagine viene capovolta.
-0.5 -0.25 0.0 0.25 0.5
scala_-0,5_augmentation scala_-0,25_augmentation identità_aumento scala_0,25_augmentation scala_0,5_augmentation

Taglio (shear)

  • Gamma: -180 a +180
  • Predefinito: 0.0
  • Utilizzo: Introduce una trasformazione geometrica che inclina l'immagine lungo l'asse x e l'asse y, spostando di fatto parti dell'immagine in una direzione pur mantenendo linee parallele. Il shear L'iperparametro definisce l'angolo di taglio, con la regolazione finale scelta a caso tra -shear e shear. Ad esempio, con shear=10.0, il taglio è selezionato in modo casuale all'interno di-10 a 10 sull'asse delle ascisse, mentre sull'asse delle ordinate viene selezionato un altro valore casuale indipendente all'interno dello stesso intervallo.
  • Scopo: aiuta i modelli a generalizzarsi alle variazioni degli angoli di visione causate da leggere inclinazioni o punti di vista obliqui. Ad esempio, nel monitoraggio del traffico, oggetti come auto e cartelli stradali possono apparire inclinati a causa di un posizionamento non perpendicolare delle telecamere. L'applicazione dell'aumento del taglio garantisce che il modello impari a riconoscere gli oggetti nonostante queste distorsioni oblique.
  • Implementazione diUltralytics: RandomPerspective
  • Nota:
    • shear 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 punti di profondità o di fuga, ma distorce la forma degli oggetti modificandone gli angoli e mantenendo paralleli i lati opposti.
-10 -5 0.0 5 10
taglio_-10_augmentation taglio_-5_augmentation identità_aumento shear_5_augmentation taglio_10_augmentation

Prospettiva (perspective)

  • Gamma: 0.0 - 0.001
  • Predefinito: 0.0
  • Utilizzo: Applica una trasformazione prospettica completa lungo l'asse x e l'asse y, simulando l'aspetto degli oggetti quando vengono osservati da diverse profondità o angolazioni. Il perspective L'iperparametro definisce l'ampiezza della prospettiva, con l'aggiustamento finale scelto casualmente tra -perspective e perspective. Ad esempio, con perspective=0.001, la prospettiva è selezionata casualmente all'interno di-0.001 a 0.001 sull'asse delle ascisse, mentre sull'asse delle ordinate viene selezionato un altro valore casuale indipendente all'interno dello stesso intervallo.
  • Scopo: L'aumento della prospettiva è fondamentale per gestire cambiamenti estremi del punto di vista, soprattutto in scenari in cui gli oggetti appaiono scorciati o distorti a causa di spostamenti prospettici. Ad esempio, nel rilevamento di oggetti tramite 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 applicazioni reali.
  • Implementazione diUltralytics: RandomPerspective
-0.001 -0.0005 0.0 0.0005 0.001
prospettiva_-0.001_augmentation prospettiva_-0.0005_augmentation identità_aumento prospettiva_0,0005_augmentation prospettiva_0,001_augmentation

Ribaltamento su-giù (flipud)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Esegue un capovolgimento verticale invertendo l'immagine lungo l'asse delle ordinate. Questa trasformazione rispecchia l'intera immagine capovolta, ma conserva tutte le relazioni spaziali tra gli oggetti. L'iperparametro flipud definisce la probabilità di applicare la trasformazione, con un valore di flipud=1.0 assicurando che tutte le immagini siano capovolte e un valore di flipud=0.0 disabilitare completamente la trasformazione. Ad esempio, con flipud=0.5, ogni immagine ha il 50% di possibilità di essere capovolta.
  • Scopo: è utile per gli scenari in cui gli oggetti possono apparire capovolti. Ad esempio, nei sistemi di visione robotica, gli oggetti su nastri trasportatori o bracci robotici possono essere prelevati 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 diUltralytics: RandomFlip
flipud spento flipud su
identità_aumento flipud_on_augmentation

Capovolgere a sinistra-destra (fliplr)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.5
  • Utilizzo: Esegue un capovolgimento orizzontale specchiando l'immagine lungo l'asse delle ascisse. Questa trasformazione scambia i lati destro e sinistro mantenendo la coerenza spaziale, il che aiuta il modello a generalizzare gli oggetti che appaiono in orientamenti speculari. Il fliplr L'iperparametro definisce la probabilità di applicare la trasformazione, con un valore di fliplr=1.0 assicurando che tutte le immagini siano capovolte e un valore di fliplr=0.0 disabilitare completamente la trasformazione. Ad esempio, con fliplr=0.5, ogni immagine ha il 50% di probabilità di essere capovolta da sinistra a destra.
  • Scopo: Il capovolgimento orizzontale è ampiamente utilizzato nel rilevamento degli oggetti, nella stima della posa e nel riconoscimento facciale per migliorare la robustezza rispetto alle variazioni destra-sinistra. Ad esempio, nella guida autonoma, i veicoli e i pedoni possono apparire su entrambi i lati della strada e il capovolgimento orizzontale aiuta il modello a riconoscerli ugualmente bene in entrambi gli orientamenti.
  • Implementazione diUltralytics: RandomFlip
fliplr spento fliplr su
identità_aumento fliplr_on_augmentation

Scambio di canali BGR (bgr)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Scambia i canali di colore di un'immagine da RGB a BGR, alterando l'ordine di rappresentazione dei colori. Il bgr L'iperparametro definisce la probabilità di applicare la trasformazione, con bgr=1.0 assicurando che tutte le immagini siano sottoposte al cambio di canale e bgr=0.0 disabilitarlo. Ad esempio, con bgr=0.5, ogni immagine ha il 50% di probabilità di essere convertita da RGB a BGR.
  • Scopo: aumenta la robustezza in caso di ordinamenti diversi dei canali di colore. Ad esempio, quando si addestrano modelli che devono funzionare con diversi sistemi di telecamere e librerie di immagini in cui i formati RGB e BGR possono essere utilizzati in modo incoerente, o quando si distribuiscono modelli in ambienti in cui il formato del colore in ingresso può differire dai dati di addestramento.
  • Implementazione diUltralytics: Formato
bgr spento bgr su
identità_aumento bgr_on_augmentation

Mosaico (mosaic)

  • Gamma: 0.0 - 1.0
  • Predefinito: 1.0
  • Utilizzo: Combina quattro immagini di allenamento in una sola. Il mosaic L'iperparametro definisce la probabilità di applicare la trasformazione, con mosaic=1.0 assicurarsi che tutte le immagini siano combinate e mosaic=0.0 disabilitare la trasformazione. Ad esempio, con mosaic=0.5, ogni immagine ha il 50% di possibilità 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, in cui gli animali possono apparire a varie distanze e scale, l'aumento del mosaico aiuta il modello a imparare a riconoscere la stessa specie attraverso dimensioni diverse, occlusioni parziali e contesti ambientali, creando artificialmente diversi campioni di addestramento da dati limitati.
  • Implementazione diUltralytics: Mosaico
  • Nota:
    • Anche se il mosaic L'aumento del modello rende il modello più robusto, ma può anche rendere il processo di addestramento più impegnativo.
    • Il mosaic L'aumento può essere disattivato verso la fine dell'addestramento impostando close_mosaic al numero di epoche prima del completamento, quando dovrebbe essere spento. Ad esempio, se epochs è impostato su 200 e close_mosaic è impostato su 20, il mosaic l'aumento sarà disabilitato dopo 180 epoche. Se close_mosaic è impostato su 0, il mosaic L'aumento sarà abilitato per l'intero processo di formazione.
    • 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 del mosaic L'incremento combina 4 immagini scelte a caso dal set di dati. Se il set di dati è piccolo, la stessa immagine può essere utilizzata più volte nello stesso mosaico.
mosaic spento mosaic su
identità_aumento mosaico_su_augmentation

Mixup (mixup)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Mescola due immagini e le loro etichette con una determinata probabilità. Il mixup L'iperparametro definisce la probabilità di applicare la trasformazione, con mixup=1.0 garantire che tutte le immagini siano mescolate e mixup=0.0 disabilitare la trasformazione. Ad esempio, con mixup=0.5, ogni immagine ha il 50% di possibilità di essere mescolata con un'altra immagine.
  • Scopo: migliorare la robustezza del modello e ridurre l'overfitting. Ad esempio, nei sistemi di riconoscimento dei prodotti al dettaglio, il mixup aiuta il modello ad apprendere 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 diUltralytics: Mixup
  • Nota:
    • Il mixup è un valore casuale scelto da una lista di np.random.beta(32.0, 32.0) distribuzione beta, ovvero ogni immagine contribuisce per circa il 50%, con leggere variazioni.
Prima immagine, mixup spento Seconda immagine, mixup spento mixup su
augmentation_mixup_identity_1 augmentation_mixup_identity_2 confusione_su_augmentation

CutMix (cutmix)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Taglia una regione rettangolare da un'immagine e la incolla su un'altra immagine con una determinata probabilità. Il cutmix L'iperparametro definisce la probabilità di applicare la trasformazione, con cutmix=1.0 garantire che tutte le immagini siano sottoposte a questa trasformazione e cutmix=0.0 disabilitarlo completamente. Ad esempio, con cutmix=0.5, ogni immagine ha il 50% di probabilità di avere una regione sostituita con una patch di un'altra immagine.
  • Scopo: migliorare le prestazioni del modello creando scenari di occlusione realistici, mantenendo 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 l'accuratezza del rilevamento in ambienti complessi del mondo reale con oggetti sovrapposti.
  • Implementazione diUltralytics: CutMix
  • Nota:
    • Le dimensioni e la posizione della regione di taglio sono determinate in modo casuale 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 rettangolo di selezione esistente. Inoltre, solo i riquadri di delimitazione che mantengono almeno 0.1 (10%) della loro area originale all'interno della regione incollata.
    • Questa soglia minima dell'area del rettangolo di selezione non può essere modificata con l'implementazione attuale ed è impostata su 0.1 per impostazione predefinita.
Prima immagine, cutmix spento Seconda immagine, cutmix spento cutmix su
augmentation_cutmix_identity_1 augmentation_cutmix_identity_2 cutmix_on_augmentation

Incrementi specifici per la segmentazione

Copia-Incolla (copy_paste)

  • Gamma: 0.0 - 1.0
  • Predefinito: 0.0
  • Utilizzo: Funziona solo per compiti di segmentazione, questo incremento copia gli oggetti all'interno o tra le immagini in base a una probabilità specificata, controllata dal parametro copy_paste_mode. Il copy_paste L'iperparametro definisce la probabilità di applicare la trasformazione, con copy_paste=1.0 assicurarsi che tutte le immagini siano copiate e copy_paste=0.0 disabilitare la trasformazione. Ad esempio, con copy_paste=0.5Ogni immagine ha il 50% di probabilità di avere oggetti copiati da un'altra immagine.
  • Scopo: Particolarmente utile per compiti di segmentazione e classi di oggetti rari. Ad esempio, nel rilevamento dei difetti industriali, dove alcuni tipi di difetti appaiono di rado, l'aumento del copia-incolla può aumentare artificialmente la presenza di questi difetti rari copiandoli da un'immagine all'altra, aiutando il modello ad apprendere meglio questi casi sottorappresentati senza richiedere ulteriori campioni di difetti.
  • Implementazione diUltralytics: CopiaIncolla
  • Nota:
    • Come illustrato nella gif qui sotto, il copy_paste L'incremento può essere usato per copiare oggetti da un'immagine a un'altra.
    • Una volta che un oggetto è stato copiato, indipendentemente dall'opzione copy_paste_mode, la sua Intersezione su Area (IoA) viene calcolata con tutti gli oggetti dell'immagine di partenza. Se tutte le IoA sono inferiori a 0.3 (30%), l'oggetto viene incollato nell'immagine di destinazione. Se solo una delle IoA è superiore a 0.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.3 per impostazione predefinita.
copy_paste spento copy_paste con copy_paste_mode=flip Visualizzare il copy_paste processo
identità_aumento copia_incolla_su_augmentation copia_incolla_augmentation_gif_demo

Modalità copia-incolla (copy_paste_mode)

  • Opzioni: 'flip', 'mixup'
  • Predefinito: 'flip'
  • Utilizzo: Determina il metodo utilizzato per copia-incolla aumento. Se impostato su 'flip', gli oggetti provengono dalla stessa immagine, mentre 'mixup' consente di copiare oggetti da immagini diverse.
  • Scopo: consente di integrare in modo flessibile gli oggetti copiati nelle immagini di destinazione.
  • Implementazione diUltralytics: CopiaIncolla
  • Nota:
    • Il principio dell'IoA è lo stesso per entrambi copy_paste_modema il modo in cui gli oggetti vengono copiati è diverso.
    • A seconda delle dimensioni dell'immagine, gli oggetti possono essere copiati parzialmente o interamente al di fuori della cornice.
    • A seconda della qualità delle annotazioni poligonali, gli oggetti copiati possono presentare leggere variazioni di forma rispetto agli originali.
Immagine di riferimento Immagine scelta per copy_paste copy_paste con copy_paste_mode=mixup
augmentation_mixup_identity_2 identità_aumento copia_incolla_modalità_mixup_augmentation

Potenziamenti specifici per la classificazione

Aumento automatico (auto_augment)

  • Opzioni: 'randaugment', 'autoaugment', 'augmix', None
  • Predefinito: 'randaugment'
  • Utilizzo: Applica politiche di incremento automatico per la classificazione. Il 'randaugment' utilizza l'opzione RandAugment, 'autoaugment' utilizza AutoAugment e 'augmix' utilizza AugMix. Impostazione su None disabilita l'aumento automatico.
  • Scopo: Ottimizza automaticamente le strategie di incremento per i compiti di classificazione. Le differenze sono le seguenti:
    • AutoAugment: Questa modalità applica politiche di incremento predefinite apprese da set di dati come ImageNet, CIFAR10 e SVHN. Gli utenti possono selezionare queste politiche esistenti, ma non possono formarne di nuove all'interno di Torchvision. Per scoprire le strategie di incremento ottimali per set di dati specifici, sarebbero necessarie librerie esterne o implementazioni personalizzate. Riferimento al documento AutoAugment.
    • RandAugment: Applica una selezione casuale di trasformazioni di ampiezza uniforme. Questo approccio riduce la necessità di un'ampia fase di ricerca, rendendola più efficiente dal punto di vista computazionale e migliorando al contempo la robustezza del modello. Riferimento al documento RandAugment.
    • AugMix: AugMix è un metodo di incremento dei dati che migliora la robustezza del modello creando diverse variazioni dell'immagine attraverso combinazioni casuali di semplici trasformazioni. Riferimento al documento AugMix.
  • Implementazione diUltralytics: classify_augmentations()
  • Nota:
    • In sostanza, la differenza principale tra i tre metodi è il modo in cui vengono definite e applicate le politiche di incremento.
    • È possibile consultare questo articolo che confronta in dettaglio i tre metodi.

Cancellazione casuale (erasing)

  • Gamma: 0.0 - 0.9
  • Predefinito: 0.4
  • Utilizzo: Cancella in modo casuale porzioni dell'immagine durante l'addestramento alla classificazione. Il erasing L'iperparametro definisce la probabilità di applicare la trasformazione, con erasing=0.9 assicurando che quasi tutte le immagini vengano cancellate e erasing=0.0 disabilitare la trasformazione. Ad esempio, con erasing=0.5Ogni immagine ha il 50% di possibilità di essere cancellata.
  • Scopo: aiuta i modelli ad 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 alle occlusioni parziali come gli occhiali da sole, le maschere facciali o altri oggetti che possono coprire parzialmente i tratti del viso. Questo migliora le prestazioni nel mondo reale, costringendo il modello a identificare gli individui utilizzando più caratteristiche del viso, invece di dipendere solo da tratti distintivi che potrebbero essere oscurati.
  • Implementazione diUltralytics: classify_augmentations()
  • Nota:
    • Il erasing L'aumento di volume è accompagnato da un scale, ratio, e value iperparametri che non possono essere modificati con l'opzione implementazione attuale. I loro valori predefiniti sono (0.02, 0.33), (0.3, 3.3), e 0, rispettivamente, come indicato nel documento PyTorch documentazione.
    • Il limite superiore del erasing è impostato su 0.9 per evitare di applicare la trasformazione a tutte le immagini.
erasing spento erasing on (esempio 1) erasing on (esempio 2) erasing on (esempio 3)
identità_aumento cancellazione_ex1_augmentation cancellazione_ex2_augmentation cancellazione_ex3_augmentation

FAQ

Ci sono troppi potenziamenti tra cui scegliere. Come faccio a sapere quali usare?

La scelta degli incrementi giusti dipende dal caso d'uso specifico e dal set di dati. Ecco alcune linee guida generali per aiutarvi 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 che il modello è stato distribuito, è probabile che si possano saltare trasformazioni geometriche quali rotation, translation, scale, shear, o perspective. Tuttavia, se l'angolo di ripresa può variare e il modello deve essere più robusto, è meglio mantenere queste aggiunte.
  • Utilizzare il mosaic solo se la presenza di oggetti parzialmente occlusi o di più oggetti per immagine è accettabile e non modifica il valore dell'etichetta. In alternativa, è possibile mantenere mosaic attivo, ma aumentare il close_mosaic per disattivarlo prima del processo di addestramento.

In breve: mantenete le cose semplici. Iniziate con una piccola serie di ampliamenti e aggiungetene gradualmente altri, se necessario. L'obiettivo è migliorare la generalizzazione e la robustezza del modello, non complicare eccessivamente il processo di addestramento. Inoltre, assicuratevi che gli incrementi applicati riflettano la stessa distribuzione dei dati che il modello incontrerà in produzione.

Quando si inizia una formazione, si vede un albumentations: Blur[...] riferimento. Questo significa che Ultralytics YOLO esegue un aumento aggiuntivo come la sfocatura?

Se il albumentations Ultralytics applica automaticamente una serie di ampliamenti dell'immagine che lo utilizzano. Questi ampliamenti sono gestiti internamente e non richiedono alcuna configurazione aggiuntiva.

L'elenco completo delle trasformazioni applicate è disponibile nel nostro sito web documentazione tecnica, così come nel nostro Guida all'integrazione di Albumentations. Si noti che solo gli incrementi con una probabilità p maggiore di 0 sono attivi. Questi sono applicati volutamente a basse frequenze per imitare gli artefatti visivi del mondo reale, come gli effetti di sfocatura o di scala di grigi.

Quando inizio un allenamento, non vedo alcun riferimento alle albumentazioni. Perché?

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



📅C reato 1 mese fa ✏️ Aggiornato 1 mese fa

Commenti