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églage | Signification |
|---|---|
mosaic_prob | Probabilité de construire un échantillon mosaic à 4 images |
mixup_prob | Probabilité de mélanger un second échantillon |
hsv_prob | Probabilité de variation aléatoire des couleurs HSV |
flip_prob | Probabilité de retournement horizontal |
degrees | Plage de rotation aléatoire de la transformation affine, en degrés |
translate | Fraction de translation aléatoire de la transformation affine |
mosaic_scale | Plage d'échelle aléatoire de la transformation affine |
mixup_scale | Plage de variation d'échelle appliquée à l'image partenaire MixUp |
shear | Plage de cisaillement aléatoire de la transformation affine, en degrés |
perspective | Force 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 |
flipud | Probabilité de retournement vertical |
no_aug_epochs | Dernières époques entraînées sans augmentation forte |
auto_augment | Politique AutoAugment de classification : randaugment, autoaugment ou augmix |
erasing | Probabilité RandomErasing de classification |
mixup | Probabilité de batch-MixUp de classification, avec étiquettes souples |
cutmix | Probabilité 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.
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
| État | Signification |
|---|---|
used | Le réglage atteint le pipeline d'entraînement de la famille et modifie les échantillons |
gated_by_mosaic | Le réglage s'applique uniquement aux échantillons qui empruntent la branche mosaic, il ne se déclenche donc jamais avec mosaic_prob == 0 |
ignored | Le 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églage | Style YOLOX | YOLO-NAS | Style DETR | Classification | Sémantique | Restauration |
|---|---|---|---|---|---|---|
mosaic_prob | used | ignored | ignored | ignored | ignored | ignored |
mixup_prob | gated | used | ignored | ignored | ignored | ignored |
hsv_prob | used | used | ignored | ignored | ignored | ignored |
flip_prob | used | used | used | used | ignored | ignored |
degrees | gated | used | ignored | ignored | ignored | ignored |
translate | gated | used | ignored | ignored | ignored | ignored |
mosaic_scale | gated | used | ignored | ignored | ignored | ignored |
mixup_scale | gated | used | ignored | ignored | ignored | ignored |
shear | gated | used | ignored | ignored | ignored | ignored |
perspective | gated | used | ignored | ignored | ignored | ignored |
flipud | used | used | ignored | used | ignored | ignored |
no_aug_epochs | used | used | used | used | used | used |
auto_augment | ignored | ignored | ignored | used | ignored | ignored |
erasing | ignored | ignored | ignored | used | ignored | ignored |
mixup | ignored | ignored | ignored | used | ignored | ignored |
cutmix | ignored | ignored | ignored | used | ignored | ignored |
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étype | Familles |
|---|---|
| Style YOLOX | yolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo |
| YOLO-NAS | yolonas, ppyoloe |
| Style DETR | dfine, gtr, domedetr, deim, deimv2, tinyformer, rtdetrv4, rfdetr, ec, dinov2 |
| Classification | resnet, convnext, convnextv2, mobilenetv4, efficientnetv2 |
| Sémantique | segformer, unet, lingbotvision |
| Restauration | nafnet |
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
| Famille | Différence par rapport à son archétype |
|---|---|
rtmdet | flipud ignoré : sa transformation ne comporte aucun retournement vertical |
picodet | flipud ignoré |
rtdetr | flipud ignoré |
rtdetrv2 | flipud ignoré |
fomo | perspective et flipud ignorés |
ppyoloe | flipud ignoré : la recette source utilise à la place une rotation aléatoire de 90 degrés |
gtr | mosaic_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 |
ec | hsv_prob, degrees et translate utilisés pour task="pose" uniquement ; detect et segment utilisent des recettes photométriques fixes |
dinov2 | Le 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.
| Famille | Réglage | Signification |
|---|---|---|
yolo9, yolo9_e2e, yolo9_p2 | copy_paste | Probabilité d'augmentation copy-paste des instances, task="segment" uniquement |
yolo9, yolo9_e2e, yolo9_p2 | copy_paste_mode | Source du copy-paste : flip reflète le même échantillon, mixup utilise un second échantillon |
yolo9, yolo9_e2e, yolo9_p2 | rot90 | Probabilité de rotation aléatoire de 90 degrés |
rfdetr | copy_paste | Probabilité de copy-paste pour task="segment", mode flip uniquement |
rfdetr | copy_paste_mode | Mode de source copy-paste pour task="segment" |
rfdetr | crop_resize_prob | Probabilité de recadrage-redimensionnement aléatoire dans le pipeline natif |
dfine | crop_resize_prob | Probabilité de recadrage-redimensionnement aléatoire, task="segment" |
ec | crop_resize_prob | Probabilité de recadrage-redimensionnement aléatoire, task="segment" |
ec, yolonas | brightness_contrast_prob | Probabilité de variation de luminosité et contraste, task="pose" |
ec, yolonas | affine_prob | Probabilité de transformation affine consciente des points clés, task="pose" |
rot90 s'applique à detect et OBB sur yolo9.
Interroger la spécification
| Assistant | Valeur 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.