Matrice di data augmentation

Impostare un parametro di data augmentation non garantisce che arrivi alla pipeline. Questa pagina registra come ogni famiglia addestrabile tratta ogni parametro di TrainConfig, a partire dalla tabella dichiarativa che la libreria include come unica fonte di verità.

I parametri

Questi sono i nomi dei campi di TrainConfig, non le grafie della CLI. train() e la CLI mappano le grafie brevi su di essi, quindi mosaic imposta mosaic_prob.

ParametroSignificato
mosaic_probProbabilità di costruire un campione a mosaico da 4 immagini
mixup_probProbabilità di fondere un secondo campione
hsv_probProbabilità di jitter di colore HSV
flip_probProbabilità di flip orizzontale
degreesIntervallo di rotazione casuale per la trasformazione affine, in gradi
translateFrazione di traslazione casuale per la trasformazione affine
mosaic_scaleIntervallo di scala casuale per la trasformazione affine
mixup_scaleIntervallo di scala del jitter applicato all'immagine partner del MixUp
shearIntervallo di shear casuale per la trasformazione affine, in gradi
perspectiveIntensità della deformazione proiettiva aggiunta alla trasformazione affine: gli angoli del canvas si spostano verso l'interno fino a min(perspective * 100, 0.2) volte metà lato del canvas, per asse; 0 la disattiva
flipudProbabilità di flip verticale
no_aug_epochsEpoche finali addestrate con la data augmentation forte disattivata
auto_augmentPolicy AutoAugment per la classificazione: randaugment, autoaugment o augmix
erasingProbabilità di RandomErasing per la classificazione
mixupProbabilità di MixUp a livello di batch per la classificazione, con etichette soft
cutmixProbabilità di CutMix a livello di batch per la classificazione, con etichette soft

Gli ultimi quattro costituiscono i controlli di classificazione. Le famiglie di rilevamento li ignorano. train() e la CLI indirizzano mixup al mescolamento dei batch per i classificatori e a mixup_prob per i rilevatori.

Interrogare direttamente la spec
from libreyolo.data.augment.spec import (    AUG_KNOBS,    aug_support,    ignored_aug_params,    uses_mosaic_gating,) print(sorted(AUG_KNOBS)) table = aug_support("yolo9")print(table["mixup_prob"].status, table["mixup_prob"].note) print(sorted(ignored_aug_params("dfine")))print(uses_mosaic_gating("yolo9"), uses_mosaic_gating("yolonas"))

I tre stati

StatoSignificato
usedIl parametro arriva alla pipeline di addestramento della famiglia e modifica i campioni
gated_by_mosaicIl parametro si applica solo ai campioni che hanno preso il ramo mosaico, quindi con mosaic_prob == 0 non si attiva mai
ignoredIl parametro non arriva mai alla pipeline; impostarlo non fa nulla

ignored è quello che conviene controllare prima di un addestramento, perché non fallisce nulla. La CLI avvisa quando un parametro di addestramento impostato esplicitamente è uno di quelli che la famiglia selezionata ignora, e il trainer avvisa quando mixup_prob > 0 non può attivarsi perché la famiglia condiziona MixUp al mosaico e mosaic_prob è zero.

Archetipi di pipeline

Ogni famiglia coperta segue una di sei pipeline, con una manciata di deviazioni per famiglia elencate più sotto.

ParametroStile YOLOXYOLO-NASStile DETRClassificazioneSemanticaRestauro
mosaic_probusedignoredignoredignoredignoredignored
mixup_probgatedusedignoredignoredignoredignored
hsv_probusedusedignoredignoredignoredignored
flip_probusedusedusedusedignoredignored
degreesgatedusedignoredignoredignoredignored
translategatedusedignoredignoredignoredignored
mosaic_scalegatedusedignoredignoredignoredignored
mixup_scalegatedusedignoredignoredignoredignored
sheargatedusedignoredignoredignoredignored
perspectivegatedusedignoredignoredignoredignored
flipudusedusedignoredusedignoredignored
no_aug_epochsusedusedusedusedusedused
auto_augmentignoredignoredignoredusedignoredignored
erasingignoredignoredignoredusedignoredignored
mixupignoredignoredignoredusedignoredignored
cutmixignoredignoredignoredusedignoredignored

Nella pipeline in stile YOLOX il preprocessing per campione applica il jitter HSV e i flip, mentre la trasformazione affine e MixUp girano solo dentro il ramo mosaico. YOLO-NAS invece esegue un'affine per campione sempre attiva, ignora il mosaico e applica MixUp in modo indipendente, riusando mosaic_scale come intervallo di scala dell'affine.

La pipeline di tipo DETR usa una trasformazione senza mosaic. Distorsione fotometrica, zoom-out e ritaglio IoU sono costanti della ricetta, non parametri configurabili: per questo hsv_prob e i controlli geometrici non li modificano. La classificazione usa flip_prob per i ribaltamenti orizzontali e flipud per quelli verticali. La variazione di scala e HSV nella segmentazione semantica deriva dagli attributi della classe del modello; nel restauro, ingresso e obiettivo vengono ribaltati insieme con probabilità fissa di 0.5.

no_aug_epochs viene rispettato ovunque, ma disattiva operazioni diverse: mosaic e MixUp nelle pipeline di tipo YOLOX; trasformazione affine e MixUp in YOLO-NAS; aumenti fotometrici forti e ritagli, insieme alla parte finale del piano del tasso di apprendimento, in DETR; aumento automatico, erasing, MixUp e CutMix nella classificazione. Ritagli e ribaltamenti della classificazione restano attivi.

Famiglie per archetipo

ArchetipoFamiglie
Stile YOLOXyolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo
YOLO-NASyolonas, ppyoloe
Stile DETRdfine, gtr, domedetr, deim, deimv2, tinyformer, rtdetrv4, rfdetr, ec, dinov2
Classificazioneresnet, convnext, convnextv2, mobilenetv4, efficientnetv2
Semanticasegformer, unet, lingbotvision
Restauronafnet

Sono coperte trentuno famiglie. Una famiglia fuori da questo elenco restituisce un insieme di parametri ignorati vuoto, quindi per essa non viene emesso alcun avviso.

Deviazioni

FamigliaDifferenza rispetto al suo archetipo
rtmdetflipud ignorato: la sua trasformazione non ha il flip verticale
picodetflipud ignorato
rtdetrflipud ignorato
rtdetrv2flipud ignorato
fomoperspective e flipud ignorati
ppyoloeflipud ignorato: la ricetta originale usa invece una rotazione casuale di 90 gradi
gtrmosaic_prob e mixup_prob usati, per le prime mosaic_epochs epoche; degrees, translate e mosaic_scale determinano l'affine che segue il mosaic
echsv_prob, degrees e translate usati, solo per task="pose"; detect e segment usano ricette fotometriche fisse
dinov2Il pacchetto di classificazione è usato, solo per task="classify"

ec e dinov2 sono famiglie multi-task, quindi un parametro è marcato come ignorato solo quando tutti i task addestrabili della famiglia lo ignorano. Così l'avviso della CLI non può mai essere sbagliato per un task e giusto per un altro.

Dome-DETR eredita le trasformazioni di D-FINE senza modifiche. L'unica cosa che non regge è l'addestramento multi-scala, disabilitato dalla sua config e non dalla spec di augmentation.

Parametri specifici per famiglia

Alcune famiglie portano i parametri di data augmentation sulla propria sottoclasse di TrainConfig invece che sulla base. La CLI non li espone; impostali tramite l'API Python.

FamigliaParametroSignificato
yolo9, yolo9_e2e, yolo9_p2copy_pasteProbabilità della data augmentation copy-paste sulle istanze, solo task="segment"
yolo9, yolo9_e2e, yolo9_p2copy_paste_modeSorgente del copy-paste: flip specchia lo stesso campione, mixup usa un secondo campione
yolo9, yolo9_e2e, yolo9_p2rot90Probabilità di rotazione casuale di 90 gradi
rfdetrcopy_pasteProbabilità di copy-paste per task="segment", solo in modalità flip
rfdetrcopy_paste_modeModalità della sorgente copy-paste per task="segment"
rfdetrcrop_resize_probProbabilità di crop-resize casuale nella pipeline nativa
dfinecrop_resize_probProbabilità di crop-resize casuale, task="segment"
eccrop_resize_probProbabilità di crop-resize casuale, task="segment"
ec, yolonasbrightness_contrast_probProbabilità di jitter di luminosità e contrasto, task="pose"
ec, yolonasaffine_probProbabilità dell'affine consapevole dei keypoint, task="pose"

rot90 si applica a detect e OBB su yolo9.

Interrogare la spec

HelperRestituisce
aug_support(family)La tabella parametro-Support, oppure None per una famiglia sconosciuta
ignored_aug_params(family)L'insieme dei nomi dei parametri che la famiglia ignora; vuoto per una famiglia sconosciuta
uses_mosaic_gating(family)Se il MixUp della famiglia si attiva solo sui campioni a mosaico
display_name(family)Il nome della famiglia mostrato agli utenti negli avvisi
mixup_gating_warning(family, mosaic_prob, mixup_prob)Il testo dell'avviso quando MixUp non può mai attivarsi, altrimenti None

Un Support è una named tuple di status e note, dove la nota spiega perché un parametro è ignorato o gated per quella famiglia.

Il gate del mosaico

In una famiglia in stile YOLOX, mixup_prob=0.5 con mosaic_prob=0 disattiva del tutto MixUp, perché MixUp si applica solo ai campioni a mosaico. È una combinazione facile da ottenere quando si spegne il mosaico verso la fine dell'addestramento. Il trainer registra un avviso che nomina la famiglia, e mixup_gating_warning è la funzione pura che ci sta dietro.

Elenco dei parametri, stati, archetipi, deviazioni per famiglia e funzioni helper letti da libreyolo/data/augment/spec.py alla v1.6.0. Quella tabella è ancorata alle pipeline reali da tests/unit/test_augment_spec.py.