Utiliser l’augmentation avec précaution
Teste chaque augmentation avec la caméra de déploiement, établis un profil justifié, entraîne le modèle avec ce profil et vérifie le résultat dans les lots d’entraînement.
Imagine une ligne de tri qui sépare des capsules rouges des capsules orange et qui a été entraînée avec le réglage de teinte par défaut. À chaque époque, le modèle voit des capsules rouges teintées en orange ; il apprend donc que la couleur n’a pas d’importance, alors que c’est justement ce qu’il devait apprendre. L’augmentation ne rend un modèle plus robuste que si chaque transformation correspond à ce que la caméra de déploiement pourrait réellement produire. Cette leçon te donne le test qui permet de décider quelles transformations conserver.
Pratique
Rôle de l’augmentation#

L’augmentation des données transforme les images d’entraînement à la volée : le modèle voit donc une version légèrement différente de chaque image à chaque époque. Bien réalisée, elle améliore la robustesse aux variations d’éclairage, d’échelle et d’orientation, et réduit le surapprentissage, car le modèle ne peut pas mémoriser des images qui changent constamment. Mal réalisée, elle lui apprend des scènes physiquement impossibles et masque des lacunes dans le jeu de données qu’il faudrait corriger.
Regarde le panneau de teinte ci-dessus : l’ara rouge devient jaune. C’est sans conséquence si tu distingues les « aras des autres oiseaux », mais cela pose problème si la couleur distingue deux de tes classes.
Les paramètres par défaut importants#
Voici les valeurs par défaut d’Ultralytics 8.4 ; la référence des paramètres d’augmentation répertorie tous les arguments :
| Argument | Par défaut | Fonction | À modifier quand |
|---|---|---|---|
hsv_h | 0.015 | Variation aléatoire de la teinte | Régler sur 0 lorsque la couleur définit une classe |
hsv_s / hsv_v | 0.7 / 0.4 | Variation aléatoire de la saturation et de la luminosité | Réduire si l’éclairage est fixe et contrôlé |
degrees | 0.0 | Rotation aléatoire (±degrés) | Augmenter lorsque les objets apparaissent sous n’importe quel angle |
translate / scale | 0.1 / 0.5 | Translation et zoom | Réduire si les recadrages risquent de couper des parties qui définissent une classe |
fliplr | 0.5 | Probabilité de retournement horizontal | Régler sur 0 lorsque la gauche et la droite ont de l’importance, comme pour du texte |
flipud | 0.0 | Probabilité de retournement vertical | Augmenter pour les vues en plongée, aériennes ou au microscope |
mosaic | 1.0 | Assemble quatre images en une seule | Rarement ; voir close_mosaic |
close_mosaic | 10 | Désactive le mosaïquage pendant les N dernières époques | Réduire pour les entraînements très courts |
mixup / cutmix | 0.0 / 0.0 | Mélange deux images ou colle un fragment de l’une sur l’autre | À essayer sur les petits jeux de données, après avoir établi une référence |
copy_paste | 0.0 | Colle des instances d’objets d’une image à une autre | Jeux de données de segmentation, de segmentation sémantique et de BBox orientées contenant des classes rares |
Les jeux de données de profondeur font exception : mosaic, mixup, cutmix et copy_paste produiraient des cartes de profondeur appariées non valides ; le chargeur de données de profondeur les règle donc automatiquement sur 0.
Le test de déploiement#
Chaque transformation activée doit répondre à une première question, puis à une seconde :
| Transformation | Réaliste ? | Verdict |
|---|---|---|
| Luminosité ±30 % sur une caméra extérieure | Oui : selon l’heure de la journée | À conserver |
| Retournement horizontal sur une caméra de sécurité | Oui : les personnes circulent dans les deux sens | À conserver |
| Retournement vertical sur une caméra fixée au mur | Non : le sol reste en bas | Désactiver |
| Retournement vertical pour une caméra orientée vers le bas au-dessus d’un convoyeur | Oui : il n’y a pas de « haut » dans l’image | Activer |
| Rotation à 90° pour une caméra routière fixe | Non : la caméra ne tourne jamais | Désactiver |
| Décalage de teinte lorsque les pièces rouges et vertes appartiennent à des classes différentes | Non : cela détruit le signal | Désactiver |

Un ara à l’envers est une bonne image d’entraînement pour un drone qui regarde directement vers le bas, mais une image gâchée pour une caméra fixée à un mur. Les transformations qui échouent à ce test produisent un signal d’entraînement négatif : le modèle apprend à reconnaître des images qu’il ne verra jamais, au détriment de sa capacité à reconnaître celles qu’il verra.
Un profil pratique#
Une caméra orientée vers le bas au-dessus d’un convoyeur trie des pièces dont les classes ne se distinguent que par leur couleur. Il faut supprimer la variation de teinte, tandis que les retournements verticaux et les petites rotations deviennent réalistes. Voici l’exécution telle qu’elle est présentée sur le jeu de démonstration COCO8 ; remplace le YAML de données par le tien et indique un nombre réel d’époques :
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.train(
data="coco8.yaml",
epochs=1,
imgsz=320,
hsv_h=0.0, # la couleur est le signal de classe : conserve les teintes fidèles
flipud=0.5, # vue de dessus : aucun « haut » dans l’image
degrees=10.0, # les pièces sont orientées selon de petits angles quelconques
)Ouvre train_batch0.jpg dans le dossier d’exécution et vérifie trois points : les boîtes restent précises après la transformation, les indices qui définissent les classes (couleur, forme, texte) sont préservés et rien ne paraît physiquement impossible. Réduis l’intensité de toute transformation qui ne respecte pas l’un de ces critères. Entraîne ton premier modèle présente l’entraînement lui-même.
Mosaic et close_mosaic#

Mosaic assemble quatre images en une seule et est activé par défaut. C’est l’augmentation la plus efficace pour la détection : chaque image d’entraînement regroupe plusieurs scènes, échelles et contextes d’objets. Le problème, c’est que les images Mosaic ne ressemblent pas aux images rencontrées en production ; close_mosaic=10 désactive donc cette augmentation pour les 10 dernières époques afin que le modèle termine son entraînement sur des entrées réalistes. La désactivation de Mosaic désactive aussi mixup, cutmix et copy_paste, tandis que les retournements, HSV et les transformations géométriques continuent de s’appliquer.
Lors des exécutions de close_mosaic époques ou moins, y compris le profil d’une époque ci-dessus, le mosaïquage est désactivé dès la première époque. Évalue le mosaïquage à partir de train_batch0.jpg d’une exécution complète, pas d’un test rapide.
Ce que l’augmentation ne peut pas corriger#
L’augmentation amplifie ce qui existe déjà. Si le jeu de données ne contient aucune image nocturne, aucun réglage ne peut créer la nuit : il ne fera que produire des versions plus claires ou plus sombres d’images prises de jour. Si une classe n’est utilisable qu’avec une augmentation agressive, tu n’as pas assez d’exemples de cette classe. Reprends la collecte de données de haute qualité et représentatives.
Avec un petit jeu de données, utiliser chaque augmentation au maximum entraîne le modèle sur des images de plus en plus éloignées des conditions de déploiement, et le mAP de validation baisse souvent. Ne modifie qu’un paramètre à la fois, avec une raison précise, et compare au scénario de référence par défaut sur la même séparation.
Si une classe est définie par une petite partie de l’objet, comme le symbole dans le coin d’une carte à jouer, mosaic, translate et scale peuvent supprimer cette partie lors du recadrage et créer une image d’entraînement qui ressemble exactement à une autre classe. Réduis ces valeurs pour ce jeu de données et vérifie que la correction fonctionne dans train_batch0.jpg.
Afficher la solution
Un drone surveille un port à la verticale et détecte des navires avec des boîtes orientées. De ce point de vue, il n’y a pas de « haut », les navires pointent dans toutes les directions et la couleur ne définit pas la classe :
| Argument | Choix | Justification |
|---|---|---|
flipud | 0.5 | Une vue du dessus reste identique après un retournement vertical |
degrees | 180 | Les navires apparaissent dans toutes les orientations |
hsv_h | par défaut | La couleur de la coque varie et ne permet pas de définir la classe |
mosaic | par défaut | De nombreux petits objets par image ; Mosaic est utile |
Sur le jeu de démonstration aérien DOTA8 :
yolo obb train data=dota8.yaml model=yolo26n-obb.pt epochs=1 imgsz=320 flipud=0.5 degrees=180Pour une caméra de rue fixe, ces deux mêmes modifications échoueraient au test de déploiement : les voitures ne sont jamais à l’envers dans un flux provenant d’une caméra fixée à un mur.