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. La CLI mappa i propri alias 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
perspectiveEntità della deformazione prospettica per la trasformazione affine
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 sono il pacchetto di classificazione. Le famiglie di rilevamento li ignorano. mixup è un parametro disponibile solo via API: il --mixup della CLI è l'alias del mixup_prob del rilevamento.

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_probusedusedusedignoredignoredignored
degreesgatedusedignoredignoredignoredignored
translategatedusedignoredignoredignoredignored
mosaic_scalegatedusedignoredignoredignoredignored
mixup_scalegatedusedignoredignoredignoredignored
sheargatedusedignoredignoredignoredignored
perspectivegatedusedignoredignoredignoredignored
flipudusedusedignoredignoredignoredignored
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 in stile DETR è una trasformazione pass-through senza mosaico. La sua distorsione fotometrica, lo zoom-out e il ritaglio IoU sono costanti della ricetta e non parametri configurabili, ed è per questo che hsv_prob e i parametri di geometria non la raggiungono mai. La pipeline di classificazione usa una trasformazione ImageFolder il cui flip orizzontale è fisso a 0.5 invece di flip_prob. Il jitter di scala e l'HSV della semantica arrivano da attributi di classe della famiglia e non da parametri di configurazione, e i flip del restauro sono operazioni accoppiate su input e target con probabilità fissa 0.5.

no_aug_epochs è rispettato ovunque, anche se ciò che disattiva cambia: mosaico e MixUp per lo stile YOLOX, l'affine e MixUp per YOLO-NAS, le augmentation fotometriche forti e di ritaglio più la coda del learning rate per lo stile DETR, e la coda dello scheduler per il resto.

Famiglie per archetipo

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

Sono coperte venticinque 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
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.5.0. Quella tabella è ancorata alle pipeline reali da tests/unit/test_augment_spec.py.