Data Augmentation
L’augmentation de données entraîne les modèles sur des copies d’images existantes transformées aléatoirement, par exemple par retournement, recadrage ou modification des couleurs, afin d’améliorer leur capacité de généralisation.
L'augmentation de données accroît la variété d'un jeu de données d'entraînement en appliquant des transformations aléatoires aux exemples qu'il contient déjà, comme des retournements, des recadrages, des changements d'échelle ou de couleur et des mélanges d'images. Chaque copie transformée conserve son étiquette d'origine ; le modèle apprend ainsi qu'un objet reste le même malgré les changements de point de vue, d'éclairage et de position. La collecte et l'annotation de nouvelles images sont lentes et coûteuses ; l'augmentation constitue donc la protection la moins chère contre le surapprentissage, et presque tous les modèles modernes de vision par ordinateur sont entraînés avec cette méthode.
Fonctionnement de l'augmentation de données#
La plupart des pipelines d'entraînement effectuent l'augmentation à la volée : le chargeur de données transforme chaque image lors de la construction d'un lot, en tirant de nouveaux paramètres aléatoires à chaque fois ; chaque époque voit donc une version différente de chaque image. À l'inverse, l'augmentation hors ligne écrit un nombre fixe de copies transformées sur le disque avant l'entraînement, ce qui multiplie l'espace de stockage nécessaire et offre au modèle beaucoup moins de variantes distinctes.
Deux règles permettent d’éviter que l’augmentation ne corrompe les données. Premièrement, les étiquettes doivent suivre les pixels : en détection d’objets, en segmentation d’instances et en estimation de pose, une transformation géométrique doit mettre à jour chaque boîte englobante, masque et point clé ; un retournement horizontal échange aussi les points clés gauche et droit. Deuxièmement, la transformation doit pouvoir être produite par le monde réel : les retournements verticaux conviennent aux images aériennes et aux images microscopiques, mais créent des voitures à l’envers qui n’apparaissent jamais à l’inférence dans les scènes de rue. Les transformations de Torchvision appliquent automatiquement la première règle lorsque les boîtes sont fournies avec l’image :
from urllib.request import urlopen
from PIL import Image
from torchvision import tv_tensors
from torchvision.transforms import v2
image = Image.open(urlopen("https://ultralytics.com/images/bus.jpg")) # 810 x 1080 pixels
boxes = tv_tensors.BoundingBoxes([[50, 400, 250, 900]], format="XYXY", canvas_size=(1080, 810))
# Flip every time (p=1.0) and shift colors; the box must move with the pixels
augment = v2.Compose([v2.RandomHorizontalFlip(p=1.0), v2.ColorJitter(brightness=0.4, saturation=0.7)])
new_image, new_boxes = augment(image, boxes)
print(f"Original box: {boxes.tolist()}")
print(f"Flipped box: {new_boxes.tolist()}")La boîte autour de l'homme à gauche de l'image passe de [50, 400, 250, 900] à [560, 400, 760, 900], en miroir sur une largeur de 810 pixels, tandis que la variation colorimétrique modifie les pixels sans toucher à la boîte.
Techniques courantes#
- Transformations géométriques : Retournements, rotations, changements d'échelle, translations, recadrages, cisaillements et déformations de perspective simulent différentes positions de caméra et tailles d'objets.
- Transformations photométriques : Les modifications de luminosité, de contraste, de saturation et de teinte, ainsi que le flou et le bruit, simulent différentes conditions d'éclairage, différents capteurs et différentes qualités d'image.
- Occlusion : L'effacement aléatoire et le masquage de zones vident des rectangles afin que le modèle ne puisse pas s'appuyer sur une seule partie d'un objet.
- Mélange d'images : MixUp mélange deux images et leurs étiquettes, CutMix colle un patch d'une image dans une autre, la mosaïque assemble quatre images en un échantillon d'entraînement, et le copier-coller déplace des objets segmentés sur de nouveaux arrière-plans.
- Politiques automatisées : RandAugment applique une séquence aléatoire de transformations contrôlée par seulement deux paramètres, le nombre de transformations et leur intensité ; la recherche coûteuse nécessaire aux politiques apprises précédentes n'est ainsi plus requise.
Pipelines d'augmentation pour la détection d'objets#
Les pipelines de détection enchaînent plusieurs transformations, chacune appliquée selon sa propre probabilité ; chaque image d'entraînement reçoit ainsi une combinaison aléatoire différente.
L'entraînement Ultralytics YOLO exécute ce pipeline par défaut, avec une mosaïque sur chaque image (mosaic=1.0), une probabilité de 50 % d'appliquer un retournement horizontal (fliplr=0.5), un changement d'échelle jusqu'à ±50 % et des décalages de couleur HSV ; la mosaïque est désactivée pour les 10 dernières époques (close_mosaic=10) afin que le modèle termine son entraînement sur des images complètes et d'apparence naturelle.
from ultralytics import YOLO
# Charger un modèle YOLO26n préentraîné
model = YOLO("yolo26n.pt")
# fliplr : probabilité de retournement horizontal ; scale : plage de zoom (+/- 70 %) ; degrees : plage de rotation (+/- 5)
results = model.train(data="coco8.yaml", epochs=10, fliplr=0.5, scale=0.7, degrees=5.0)Pendant cet entraînement, le formateur YOLO26 enregistre ses trois premiers lots augmentés sous la forme train_batch0.jpg, train_batch1.jpg et train_batch2.jpg, avec les boîtes dessinées, afin que tu puisses vérifier l'effet de chaque paramètre avant de lancer un entraînement de longue durée.
Augmentation de données et termes associés#
- Données synthétiques : Générées de toutes pièces à l'aide de moteurs de rendu, de simulateurs ou de modèles de diffusion. L'augmentation modifie des images réelles déjà existantes.
- Prétraitement des données : Étapes déterministes, comme le redimensionnement et la normalisation, appliquées de manière identique à chaque image pendant l'entraînement et l'inférence. L'augmentation est aléatoire et n'est effectuée que pendant l'entraînement.
- Augmentation au test (TTA) : Exécute l'inférence sur plusieurs versions augmentées de la même entrée, par exemple des copies retournées ou redimensionnées, puis fusionne les prédictions ; cela augmente le calcul pour un léger gain de précision.










