YOLO Vision 2026 :

Techniques de prétraitement des données de vision par ordinateur annotées#

Le prétraitement des données transforme les images brutes et annotées en entrées propres et cohérentes dont un modèle de vision par ordinateur a besoin pour bien s'entraîner. Avec Ultralytics YOLO26, les opérations essentielles sur les pixels — conversion RGB, mise à l'échelle vers [0, 1] et redimensionnement — s'exécutent automatiquement dans le pipeline d'entraînement. Il reste donc principalement à diviser correctement ton jeu de données, à équilibrer les classes et à choisir les augmentations. Ce guide couvre ces techniques essentielles : redimensionnement, normalisation, division du jeu de données, augmentation des données et analyse exploratoire des données (EDA).



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

Cette étape intervient après que tu as défini les objectifs de ton projet et collecté et annoté tes données, et elle se situe au début du flux de travail d'un projet de vision par ordinateur.

Pourquoi le prétraitement est important#

Le prétraitement convertit tes données dans un format qui réduit la charge de calcul et améliore les performances du modèle. Il traite trois problèmes courants des données brutes :

  • Bruit : Variations non pertinentes ou aléatoires dans les données.
  • Incohérence : Variations de taille, de format et de qualité des images.
  • Déséquilibre : Répartition inégale des classes ou catégories dans le jeu de données.

Techniques de prétraitement#

Les principales techniques sont le redimensionnement, la normalisation, la division du jeu de données et l'augmentation. Avec YOLO26, les deux premières sont automatiques, tandis que tes choix sont particulièrement importants pour la division et l'augmentation.

Redimensionnement des images#

De nombreux modèles exigent une taille d'entrée cohérente. Le redimensionnement uniformise donc les images et réduit la complexité de calcul. Deux méthodes d'interpolation courantes sont :

  • Interpolation bilinéaire : Lisse les valeurs des pixels en calculant une moyenne pondérée des quatre pixels les plus proches.
  • Plus proche voisin : Copie la valeur du pixel le plus proche sans effectuer de moyenne — cette méthode est plus rapide, mais produit une image plus pixellisée.

Des bibliothèques comme OpenCV et PIL (Pillow) fournissent ces fonctions, mais avec YOLO26, tu n'as généralement pas besoin de redimensionner les images manuellement. L'argument imgsz s'en charge. Sur le chemin carré à taille fixe, la validation et l'inférence appliquent un letterbox aux images vers une entrée imgsz × imgsz telle que 640 × 640, en préservant le rapport d'aspect et en ajoutant une marge grise (valeur 114). Les images plus grandes sont réduites pour tenir dans le cadre, tandis que les images plus petites ne sont pas agrandies lorsque la mise à l'échelle ascendante est désactivée. Sur le chemin d'entraînement par défaut, mosaic=1.0 assemble plutôt quatre images sur une toile plus grande et recadre le résultat à imgsz ; une fois que close_mosaic désactive la mosaïque pour les dernières époques, les images reçoivent un letterbox puis subissent encore des transformations aléatoires au lieu d'être transmises telles quelles. Les lots rectangulaires (rect=True) et multi_scale utilisent des formes d'entrée différentes.

Normalisation des valeurs des pixels#

La normalisation convertit les valeurs des pixels vers une plage standard, ce qui aide le modèle à converger plus rapidement pendant l'entraînement. Deux techniques courantes sont :

  • Mise à l'échelle min-max : Convertit les valeurs des pixels vers une plage de 0 à 1.
  • Normalisation par score Z : Convertit les valeurs des pixels en fonction de leur moyenne et de leur écart type.

YOLO26 gère automatiquement la normalisation dans son pipeline de prétraitement : il convertit les images en RGB et met les valeurs des pixels à l'échelle [0, 1] en les divisant par 255 (mise à l'échelle min-max). Par défaut, YOLO n'applique pas la normalisation de la moyenne et de l'écart type propre à ImageNet (score Z), aucune étape de normalisation manuelle n'est donc nécessaire.

Division du jeu de données#

La division des données en ensembles d'entraînement, de validation et de test te permet d'évaluer le modèle sur des données inédites et de mesurer sa capacité de généralisation. Une répartition courante consiste à utiliser 70 % pour l'entraînement, 20 % pour la validation et 10 % pour les tests. Des outils comme scikit-learn ou TensorFlow simplifient cette opération.

Garde les points suivants à l'esprit lors de la division :

  • Maintenir la répartition des classes : Vérifie que chaque classe est représentée proportionnellement dans les ensembles d'entraînement, de validation et de test.
  • Équilibrer les classes : Pour les jeux de données déséquilibrés, envisage le suréchantillonnage de la classe minoritaire ou le sous-échantillonnage de la classe majoritaire — uniquement dans l'ensemble d'entraînement.
Évite les fuites de données

Divise le jeu de données avant d'appliquer toute augmentation ou tout autre prétraitement, et applique ces transformations uniquement à l'ensemble d'entraînement. Augmenter les données avant la division permet aux informations provenant des images de validation ou de test d'influencer l'entraînement, ce qui produit des scores artificiellement élevés qui s'effondrent sur des données réelles.

Augmentation du jeu de données#

L'augmentation des données augmente artificiellement la taille d'un jeu de données en créant des versions modifiées des images existantes. Elle contribue à réduire le surapprentissage et améliore la généralisation, avec plusieurs avantages :

  • Modèles plus robustes : Les variations d'éclairage, d'orientation et d'échelle rendent le modèle plus résilient aux distorsions du monde réel.
  • Rentabilité : Tu développes l'ensemble d'entraînement sans collecter ni étiqueter de nouvelles données.
  • Meilleure utilisation des données : Chaque image annotée produit plusieurs variantes d'entraînement.

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

Avec YOLO26, l'intensité de l'augmentation est contrôlée par les arguments d'entraînement transmis à model.train() ou par les indicateurs CLI équivalents, et non en modifiant le fichier YAML du jeu de données, qui définit les métadonnées du jeu de données telles que les chemins, les noms de classes et les divisions. L'unique exception est flip_idx : les jeux de données de pose le déclarent dans le YAML du jeu de données pour mapper les paires de points clés gauche/droite, et YOLO désactive entièrement fliplr et flipud lorsqu'il est absent. Les augmentations intégrées comprennent :

  • Mosaic, MixUp et CutMix (mosaic, mixup, cutmix) : Combinent plusieurs images en un seul échantillon d'entraînement.
  • Retournements (fliplr, flipud) : Reflètent les images horizontalement ou verticalement.
  • Transformations géométriques (degrees, translate, scale, shear, perspective) : Font pivoter, déplacer, zoomer et déformer les images.
  • Variation des couleurs HSV (hsv_h, hsv_s, hsv_v) : Modifient la teinte, la saturation et la luminosité.
  • Copy-paste (copy_paste) : Colle des copies supplémentaires d'objets segmentés, reflétés par défaut dans la même image ou provenant d'une autre image avec copy_paste_mode=mixup.
  • Permutation des canaux (bgr) : Permute l'ordre des canaux RGB en BGR.
  • Transformations de classification (auto_augment, erasing) : Appliquent une politique d'augmentation automatisée et un effacement aléatoire lors de l'entraînement d'un classificateur.
Définir l'intensité de l'augmentation lors de l'entraînement
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)

Pour obtenir la liste complète des arguments d'augmentation et de leurs valeurs par défaut, consulte la référence des paramètres d'augmentation et le guide dédié à l'augmentation des données YOLO. Si le paquet albumentations est installé, YOLO active également automatiquement ses augmentations intégrées basées sur Albumentations.

Étude de cas : prétraitement pour la détection de véhicules#

Prenons l'exemple d'un projet visant à détecter et classer des véhicules dans des images de circulation avec YOLO26, à partir d'images annotées avec des cadres englobants et des étiquettes. Voici à quoi correspond chaque décision de prétraitement :

  • Redimensionnement : Aucun travail manuel — YOLO26 redimensionne les images à imgsz pendant l'entraînement.
  • Normalisation : Aucun travail manuel — YOLO26 convertit automatiquement les valeurs des pixels à l'échelle [0, 1].
  • Division : Divise le jeu de données en 70 % pour l'entraînement, 20 % pour la validation et 10 % pour les tests, en conservant une répartition cohérente des classes entre les ensembles.
  • Augmentation : Définis des arguments d'entraînement adaptés aux scènes de circulation — par exemple fliplr pour l'invariance directionnelle, hsv_v pour l'éclairage jour/nuit et mosaic pour une densité variable des objets.

Une fois ces décisions prises, le jeu de données est prêt pour l'analyse exploratoire des données (EDA).

Analyse exploratoire des données (EDA)#

L'EDA utilise des statistiques et des visualisations pour révéler les tendances et les distributions de tes données, ce qui t'aide à détecter les problèmes tels que le déséquilibre des classes ou les valeurs aberrantes avant l'entraînement.

Techniques statistiques d'EDA#

L'EDA statistique commence par des mesures de base — moyenne, médiane, écart type et étendue — calculées sur des propriétés telles que les distributions d'intensité des pixels. Elles donnent un aperçu rapide de la qualité de ton jeu de données et font ressortir rapidement les irrégularités.

Techniques visuelles d'EDA#

Les visualisations révèlent des tendances que les statistiques récapitulatives ne montrent pas, comme le déséquilibre des classes et les valeurs aberrantes. Les outils courants comprennent :

  • Histogrammes et boîtes à moustaches : Montrent la distribution des valeurs des pixels et signalent les valeurs aberrantes dans les distributions d'intensité ou de caractéristiques.
  • Diagrammes à barres : Révèlent le déséquilibre des classes en comparant le nombre d'exemples de chaque classe.
  • Nuages de points : Permettent d'explorer les relations entre les caractéristiques des images ou les annotations.
  • Cartes thermiques : Visualisent les distributions d'intensité des pixels ou la répartition spatiale des annotations dans les images.

Ultralytics Platform pour l'EDA#

Pour effectuer une EDA sans code, téléverse ton jeu de données vers Ultralytics Platform. L'onglet Charts du jeu de données génère automatiquement des visualisations EDA essentielles : répartition des ensembles, nombre des principales classes, histogrammes de la largeur et de la hauteur des images, ainsi que cartes thermiques 2D des positions des annotations et des dimensions des images. L'onglet Images te permet de parcourir tes données en affichage grille, compact ou tableau, avec superposition des annotations, ce qui facilite la détection des exemples mal étiquetés ou des classes déséquilibrées sans écrire de code.

Conclusion#

Des données correctement divisées, normalisées et augmentées réduisent le bruit et améliorent la généralisation, transformant une collection brute d'images en un ensemble d'entraînement fiable. Une fois ton jeu de données prétraité, l'étape suivante consiste à entraîner ton modèle. Si tu as des questions en cours de route, adresse-toi à la communauté sur le dépôt GitHub d'Ultralytics ou le serveur Discord d'Ultralytics.

FAQ#

  • Le prétraitement garantit que tes données sont propres, cohérentes et dans un format optimisé pour l'entraînement. En traitant le bruit, les incohérences et le déséquilibre des classes dans les données brutes, des étapes comme le redimensionnement, la normalisation, l'augmentation et la division du jeu de données réduisent la charge de calcul et améliorent les performances du modèle. Consulte les étapes d'un projet de vision par ordinateur pour voir comment cette phase s'intègre au flux de travail global.

  • Configure l'augmentation via les arguments d'entraînement plutôt que dans le YAML du jeu de données. Transmets des arguments tels que fliplr, mosaic, hsv_h et degrees à model.train() (ou utilise les indicateurs CLI équivalents) pour définir la probabilité et l'intensité de chaque transformation. Ces paramètres sont définis dans les paramètres d'augmentation et expliqués dans le guide d'augmentation des données YOLO. Les jeux de données de pose font exception : leur mappage des points clés flip_idx se trouve dans le YAML du jeu de données, et les retournements sont désactivés en son absence.

  • Les deux techniques les plus courantes sont la mise à l'échelle min-max (recalage des pixels vers une plage de 0 à 1) et la normalisation par score Z (recalage en fonction de la moyenne et de l'écart type). YOLO26 applique automatiquement la mise à l'échelle min-max — en convertissant les images en RGB et en divisant les valeurs des pixels par 255 — tu n'as donc pas besoin d'une étape de normalisation manuelle. Il n'applique pas la normalisation par score Z par défaut.

  • Une pratique courante consiste à utiliser 70 % pour l'entraînement, 20 % pour la validation et 10 % pour les tests. Maintiens la répartition des classes dans les trois ensembles et évite les fuites de données en appliquant l'augmentation uniquement à l'ensemble d'entraînement après la division. Des outils comme scikit-learn ou TensorFlow gèrent efficacement cette division. Consulte le guide de collecte et d'annotation des données pour la préparation en amont du jeu de données.

  • Oui. L'argument imgsz contrôle la taille d'entrée cible sans travail manuel. Sur le chemin carré à taille fixe, la validation et l'inférence appliquent un letterbox aux images vers la forme spécifiée tout en préservant le rapport d'aspect ; les images plus grandes sont réduites pour tenir dans le cadre, tandis que les images plus petites ne sont pas agrandies lorsque la mise à l'échelle ascendante est désactivée. Pendant l'entraînement, l'augmentation mosaïque par défaut atteint plutôt la taille cible en assemblant quatre images puis en recadrant. Les lots rectangulaires (rect=True) et multi_scale utilisent des formes d'entrée différentes. Consulte la documentation sur l'entraînement des modèles pour plus de détails.

Commentaires