Matrice d'augmentation

Définir un réglage d'augmentation ne garantit pas qu'il atteigne le pipeline. Cette page consigne la manière dont chaque famille entraînable traite chaque réglage de TrainConfig, d'après la table déclarative fournie par la bibliothèque comme source unique de vérité.

Réglages

Il s'agit de noms de champs TrainConfig, et non de leurs formes dans le CLI. train() et le CLI associent les formes courtes à ces champs, mosaic définit donc mosaic_prob.

RéglageSignification
mosaic_probProbabilité de construire un échantillon mosaic à 4 images
mixup_probProbabilité de mélanger un second échantillon
hsv_probProbabilité de variation aléatoire des couleurs HSV
flip_probProbabilité de retournement horizontal
degreesPlage de rotation aléatoire de la transformation affine, en degrés
translateFraction de translation aléatoire de la transformation affine
mosaic_scalePlage d'échelle aléatoire de la transformation affine
mixup_scalePlage de variation d'échelle appliquée à l'image partenaire MixUp
shearPlage de cisaillement aléatoire de la transformation affine, en degrés
perspectiveForce de la transformation projective ajoutée à la transformation affine : les coins du canevas se déplacent vers l'intérieur d'au plus min(perspective * 100, 0.2) fois la moitié du côté du canevas, par axe ; 0 la désactive
flipudProbabilité de retournement vertical
no_aug_epochsDernières époques entraînées sans augmentation forte
auto_augmentPolitique AutoAugment de classification : randaugment, autoaugment ou augmix
erasingProbabilité RandomErasing de classification
mixupProbabilité de batch-MixUp de classification, avec étiquettes souples
cutmixProbabilité de batch-CutMix de classification, avec étiquettes souples

Les quatre derniers forment les contrôles de classification. Les familles de détection les ignorent. train() et la CLI routent mixup vers le mélange de lots pour les classifieurs et vers mixup_prob pour les détecteurs.

Interroger directement la spécification
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"))

Trois états

ÉtatSignification
usedLe réglage atteint le pipeline d'entraînement de la famille et modifie les échantillons
gated_by_mosaicLe réglage s'applique uniquement aux échantillons qui empruntent la branche mosaic, il ne se déclenche donc jamais avec mosaic_prob == 0
ignoredLe réglage n'atteint jamais le pipeline ; le définir ne fait rien

ignored est l'état à vérifier avant une exécution, car aucune erreur ne se produit. Le CLI avertit lorsqu'un paramètre d'entraînement explicitement défini est ignoré par la famille sélectionnée. Le trainer avertit lorsque mixup_prob > 0 ne peut pas se déclencher, car la famille conditionne MixUp à mosaic et mosaic_prob vaut zéro.

Archétypes de pipelines

Chaque famille couverte suit l'un de six pipelines, avec quelques écarts par famille énumérés ci-dessous.

RéglageStyle YOLOXYOLO-NASStyle DETRClassificationSémantiqueRestauration
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

Dans le pipeline de style YOLOX, le prétraitement par échantillon applique les variations HSV et les retournements, tandis que la transformation affine et MixUp s'exécutent uniquement dans la branche mosaic. YOLO-NAS exécute plutôt une transformation affine par échantillon toujours active, ignore mosaic et applique MixUp indépendamment, en réutilisant mosaic_scale comme plage d'échelle affine.

Le pipeline de type DETR est une transformation sans mosaic. La distorsion photométrique, le zoom-out et le recadrage par IoU sont des constantes de recette, pas des paramètres configurables : hsv_prob et les contrôles géométriques ne les pilotent donc pas. La classification utilise flip_prob pour les retournements horizontaux et flipud pour les verticaux. Les variations d'échelle et HSV de segmentation sémantique viennent d'attributs de la classe du modèle ; les retournements de restauration s'appliquent conjointement à l'entrée et à la cible avec une probabilité fixe de 0.5.

no_aug_epochs est pris en compte partout, mais désactive des opérations différentes : mosaic et MixUp pour les pipelines de type YOLOX ; la transformation affine et MixUp pour YOLO-NAS ; les augmentations photométriques fortes et le recadrage, avec la fin du planning du taux d'apprentissage, pour DETR ; l'augmentation automatique, erasing, MixUp et CutMix pour la classification. Le recadrage et les retournements de classification restent actifs.

Familles par archétype

ArchétypeFamilles
Style YOLOXyolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo
YOLO-NASyolonas, ppyoloe
Style DETRdfine, gtr, domedetr, deim, deimv2, tinyformer, rtdetrv4, rfdetr, ec, dinov2
Classificationresnet, convnext, convnextv2, mobilenetv4, efficientnetv2
Sémantiquesegformer, unet, lingbotvision
Restaurationnafnet

Trente et une familles sont couvertes. Une famille absente de cette liste renvoie un ensemble ignored vide, aucun avertissement n'est donc émis à son sujet.

Écarts

FamilleDifférence par rapport à son archétype
rtmdetflipud ignoré : sa transformation ne comporte aucun retournement vertical
picodetflipud ignoré
rtdetrflipud ignoré
rtdetrv2flipud ignoré
fomoperspective et flipud ignorés
ppyoloeflipud ignoré : la recette source utilise à la place une rotation aléatoire de 90 degrés
gtrmosaic_prob et mixup_prob utilisés, pendant les mosaic_epochs premières époques ; degrees, translate et mosaic_scale façonnent la transformation affine qui suit le mosaic
echsv_prob, degrees et translate utilisés pour task="pose" uniquement ; detect et segment utilisent des recettes photométriques fixes
dinov2Le groupe de classification est utilisé pour task="classify" uniquement

ec et dinov2 sont des familles multitâches. Un réglage n'est donc marqué ignored que lorsque chaque tâche entraînable de la famille l'ignore. Un avertissement du CLI n'est ainsi jamais erroné pour une tâche tout en étant correct pour une autre.

Dome-DETR hérite sans modification des transformations de D-FINE. La seule fonctionnalité qu'il ne peut pas accepter est l'entraînement multi-échelle, que sa configuration désactive plutôt que la spécification d'augmentation.

Réglages propres aux familles

Certaines familles portent des réglages d'augmentation dans leur propre sous-classe TrainConfig plutôt que dans la classe de base. Le CLI ne les expose pas ; définissez-les par l'API Python.

FamilleRéglageSignification
yolo9, yolo9_e2e, yolo9_p2copy_pasteProbabilité d'augmentation copy-paste des instances, task="segment" uniquement
yolo9, yolo9_e2e, yolo9_p2copy_paste_modeSource du copy-paste : flip reflète le même échantillon, mixup utilise un second échantillon
yolo9, yolo9_e2e, yolo9_p2rot90Probabilité de rotation aléatoire de 90 degrés
rfdetrcopy_pasteProbabilité de copy-paste pour task="segment", mode flip uniquement
rfdetrcopy_paste_modeMode de source copy-paste pour task="segment"
rfdetrcrop_resize_probProbabilité de recadrage-redimensionnement aléatoire dans le pipeline natif
dfinecrop_resize_probProbabilité de recadrage-redimensionnement aléatoire, task="segment"
eccrop_resize_probProbabilité de recadrage-redimensionnement aléatoire, task="segment"
ec, yolonasbrightness_contrast_probProbabilité de variation de luminosité et contraste, task="pose"
ec, yolonasaffine_probProbabilité de transformation affine consciente des points clés, task="pose"

rot90 s'applique à detect et OBB sur yolo9.

Interroger la spécification

AssistantValeur renvoyée
aug_support(family)Table qui associe les réglages à Support, ou None pour une famille inconnue
ignored_aug_params(family)Ensemble des noms de réglages ignorés par la famille ; vide pour une famille inconnue
uses_mosaic_gating(family)Indique si le MixUp de la famille se déclenche uniquement sur les échantillons mosaic
display_name(family)Nom de famille destiné au lecteur et utilisé dans les avertissements
mixup_gating_warning(family, mosaic_prob, mixup_prob)Texte de l'avertissement lorsque MixUp ne peut jamais se déclencher, sinon None

Un objet Support est un tuple nommé contenant status et note, cette dernière explique pourquoi un réglage est ignoré ou conditionné pour cette famille.

Condition mosaic

Pour une famille de style YOLOX, associer mixup_prob=0.5 à mosaic_prob=0 désactive entièrement MixUp, car celui-ci ne s'applique qu'aux échantillons mosaic. Cette combinaison survient facilement lorsque mosaic est désactivé en fin d'entraînement. Le trainer consigne un avertissement qui nomme la famille, et mixup_gating_warning est la fonction pure qui le produit.

Liste des réglages, états, archétypes, écarts par famille et fonctions d'assistance lus dans libreyolo/data/augment/spec.py en v1.6.0. Cette table est reliée aux véritables pipelines par tests/unit/test_augment_spec.py.