Meet YOLO26: next-gen vision AI.

Link to this sectionAugmentation de données avec Ultralytics YOLO#

YOLO data augmentation examples showing original and augmented images for training

Link to this sectionIntroduction#

L'augmentation de données est une technique cruciale en vision par ordinateur qui étend artificiellement ton jeu de données d'entraînement en appliquant diverses transformations aux images existantes. Lors de l'entraînement de modèles de deep learning comme Ultralytics YOLO, l'augmentation de données aide à améliorer la robustesse du modèle, réduit le surapprentissage et améliore la généralisation à des scénarios du monde réel.



Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀

Link to this sectionPourquoi l'augmentation de données est importante#

L'augmentation de données sert plusieurs objectifs critiques lors de l'entraînement de modèles de vision par ordinateur :

  • Jeu de données étendu : En créant des variations à partir d'images existantes, tu peux augmenter efficacement la taille de ton jeu de données d'entraînement sans collecter de nouvelles données.
  • Généralisation améliorée : Les modèles apprennent à reconnaître des objets dans diverses conditions, les rendant plus robustes dans les applications réelles.
  • Surapprentissage réduit : En introduisant de la variabilité dans les données d'entraînement, les modèles sont moins susceptibles de mémoriser les caractéristiques spécifiques des images.
  • Performances améliorées : Les modèles entraînés avec une augmentation appropriée atteignent généralement une meilleure précision sur les jeux de validation et de test.

L'implémentation d'Ultralytics YOLO fournit une suite complète de techniques d'augmentation, chacune servant des objectifs spécifiques et contribuant aux performances du modèle de différentes manières. Ce guide explorera chaque paramètre d'augmentation en détail, t'aidant à comprendre quand et comment les utiliser efficacement dans tes projets.

Link to this sectionExemples de configurations#

Tu peux personnaliser chaque paramètre en utilisant l'API Python, l'interface de ligne de commande (CLI) ou un fichier de configuration. Voici ci-dessous des exemples sur la façon de configurer l'augmentation de données pour chaque méthode.

Exemples de configuration
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training without any augmentations (disabled values omitted for clarity)
model.train(
    data="coco.yaml",
    epochs=100,
    hsv_h=0.0,
    hsv_s=0.0,
    hsv_v=0.0,
    translate=0.0,
    scale=0.0,
    fliplr=0.0,
    mosaic=0.0,
    erasing=0.0,
    auto_augment=None,
)

# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)

Link to this sectionUtilisation d'un fichier de configuration#

Tu peux définir tous les paramètres d'entraînement, y compris les augmentations, dans un fichier de configuration YAML (par exemple, train_custom.yaml). Le paramètre mode est seulement requis lors de l'utilisation de la CLI. Ce nouveau fichier YAML remplacera ensuite celui par défaut situé dans le package ultralytics.

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

Ensuite, lance l'entraînement avec l'API Python :

Exemple d'entraînement
from ultralytics import YOLO

# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")

Link to this sectionAugmentations de l'espace colorimétrique#

Link to this sectionAjustement de la teinte (hsv_h)#

  • Plage : 0.0 - 1.0
  • Défaut : 0.015
  • Utilisation : Décale les couleurs de l'image tout en préservant leurs relations. L'hyperparamètre hsv_h définit l'amplitude du décalage, l'ajustement final étant choisi aléatoirement entre -hsv_h et hsv_h. Par exemple, avec hsv_h=0.3, le décalage est sélectionné aléatoirement entre -0.3 et 0.3. Pour des valeurs supérieures à 0.5, le décalage de teinte boucle autour de la roue chromatique, c'est pourquoi les augmentations semblent identiques entre 0.5 et -0.5.
  • Objectif : Particulièrement utile pour les scénarios en extérieur où les conditions d'éclairage peuvent affecter radicalement l'apparence des objets. Par exemple, une banane peut paraître plus jaune sous un soleil éclatant mais plus verdâtre à l'intérieur.
  • Implémentation d'Ultralytics : RandomHSV
-0.5-0.250.00.250.5
Augmentation décalage teinte -0.5Augmentation décalage teinte -0.25Image originale sans augmentationAugmentation décalage teinte 0.25Augmentation décalage teinte -0.5

Link to this sectionAjustement de la saturation (hsv_s)#

  • Plage : 0.0 - 1.0
  • Défaut : 0.7
  • Utilisation : Modifie l'intensité des couleurs dans l'image. L'hyperparamètre hsv_s définit l'amplitude du décalage, l'ajustement final étant choisi aléatoirement entre -hsv_s et hsv_s. Par exemple, avec hsv_s=0.7, l'intensité est sélectionnée aléatoirement entre -0.7 et 0.7.
  • Objectif : Aide les modèles à gérer des conditions météorologiques et des réglages de caméra variables. Par exemple, un panneau de signalisation rouge peut paraître très vif un jour ensoleillé mais terne et délavé dans des conditions brumeuses.
  • Implémentation d'Ultralytics : RandomHSV
-1.0-0.50.00.51.0
Augmentation saturation -1.0 niveaux de grisAugmentation saturation -0.5Image originale sans augmentationAugmentation saturation 0.5Augmentation saturation 1.0 vif

Link to this sectionAjustement de la luminosité (hsv_v)#

  • Plage : 0.0 - 1.0
  • Défaut : 0.4
  • Utilisation : Modifie la luminosité de l'image. L'hyperparamètre hsv_v définit l'amplitude du décalage, l'ajustement final étant choisi aléatoirement entre -hsv_v et hsv_v. Par exemple, avec hsv_v=0.4, l'intensité est sélectionnée aléatoirement entre -0.4 et 0.4.
  • Objectif : Essentiel pour entraîner des modèles qui doivent fonctionner dans différentes conditions d'éclairage. Par exemple, une pomme rouge peut paraître brillante au soleil mais beaucoup plus sombre à l'ombre.
  • Implémentation d'Ultralytics : RandomHSV
-1.0-0.50.00.51.0
Augmentation luminosité -1.0 sombreAugmentation luminosité -0.5Image originale sans augmentationAugmentation luminosité 0.5Augmentation luminosité 1.0 brillant

Link to this sectionTransformations géométriques#

Link to this sectionRotation (degrees)#

  • Plage : 0.0 à 180
  • Défaut : 0
  • Utilisation : Fait pivoter les images aléatoirement dans la plage spécifiée. L'hyperparamètre degrees définit l'angle de rotation, l'ajustement final étant choisi aléatoirement entre -degrees et degrees. Par exemple, avec degrees=10.0, la rotation est sélectionnée aléatoirement entre -10.0 et 10.0.
  • Objectif : Crucial pour les applications où les objets peuvent apparaître à différentes orientations. Par exemple, dans l'imagerie par drone aérien, les véhicules peuvent être orientés dans n'importe quelle direction, exigeant des modèles qu'ils reconnaissent les objets indépendamment de leur rotation.
  • Implémentation d'Ultralytics : RandomPerspective
-180-900.090180
Augmentation rotation -180 degrésAugmentation rotation -90 degrésImage originale sans augmentationAugmentation rotation 90 degrésAugmentation rotation 180 degrés

Link to this sectionTranslation (translate)#

  • Plage : 0.0 - 1.0
  • Défaut : 0.1
  • Utilisation : Décale les images horizontalement et verticalement d'une fraction aléatoire de la taille de l'image. L'hyperparamètre translate définit l'amplitude du décalage, l'ajustement final étant choisi aléatoirement deux fois (une fois pour chaque axe) dans la plage -translate à translate. Par exemple, avec translate=0.5, la translation est sélectionnée aléatoirement entre -0.5 et 0.5 sur l'axe x, et une autre valeur aléatoire indépendante est sélectionnée dans la même plage sur l'axe y.
  • Objectif : Aide les modèles à apprendre à détecter les objets partiellement visibles et améliore la robustesse à la position des objets. Par exemple, dans les applications d'évaluation des dommages aux véhicules, les pièces de carrosserie peuvent apparaître entièrement ou partiellement dans le cadre selon la position et la distance du photographe, l'augmentation par translation apprendra au modèle à reconnaître ces caractéristiques indépendamment de leur intégralité ou de leur position.
  • Implémentation d'Ultralytics : RandomPerspective
  • Remarque : Par souci de simplicité, les translations appliquées ci-dessous sont les mêmes à chaque fois pour les axes x et y. Les valeurs -1.0 et 1.0 ne sont pas affichées car elles déplaceraient l'image complètement hors du cadre.
-0.5-0.250.00.250.5
Augmentation décalage translation -0.5Augmentation décalage translation -0.25Image originale sans augmentationAugmentation décalage translation 0.25Augmentation décalage translation 0.5

Link to this sectionMise à l'échelle (scale)#

  • Plage : 0.0 - 1.0
  • Défaut : 0.5
  • Utilisation : Redimensionne les images d'un facteur aléatoire dans la plage spécifiée. L'hyperparamètre scale définit le facteur de mise à l'échelle, l'ajustement final étant choisi aléatoirement entre 1-scale et 1+scale. Par exemple, avec scale=0.5, la mise à l'échelle est sélectionnée aléatoirement entre 0.5 et 1.5.
  • Objectif : Permet aux modèles de gérer des objets à différentes distances et tailles. Par exemple, dans les applications de conduite autonome, les véhicules peuvent apparaître à diverses distances de la caméra, exigeant que le modèle les reconnaisse quelle que soit leur taille.
  • Implémentation d'Ultralytics : RandomPerspective
  • Remarque :
    • La valeur -1.0 n'est pas affichée car elle ferait disparaître l'image, tandis que 1.0 résulte simplement en un zoom 2x.
    • Les valeurs affichées dans le tableau ci-dessous sont celles appliquées via l'hyperparamètre scale, pas le facteur de mise à l'échelle final.
    • Si scale est supérieur à 1.0, l'image peut être soit très petite soit inversée, car le facteur de mise à l'échelle est choisi aléatoirement entre 1-scale et 1+scale. Par exemple, avec scale=3.0, la mise à l'échelle est sélectionnée aléatoirement entre -2.0 et 4.0. Si une valeur négative est choisie, l'image est inversée.
-0.5-0.250.00.250.5
Augmentation zoom arrière 0.5xAugmentation zoom arrière 0.75xImage originale sans augmentationAugmentation zoom avant 1.25xAugmentation zoom avant 1.5x

Link to this sectionCisaillement (shear)#

  • Plage : -180 à +180
  • Défaut : 0
  • Utilisation : Introduit une transformation géométrique qui incline l'image le long des axes x et y, décalant efficacement des parties de l'image dans une direction tout en maintenant les lignes parallèles. L'hyperparamètre shear définit l'angle de cisaillement, l'ajustement final étant choisi aléatoirement entre -shear et shear. Par exemple, avec shear=10.0, le cisaillement est sélectionné aléatoirement entre -10 et 10 sur l'axe x, et une autre valeur aléatoire indépendante est sélectionnée dans la même plage sur l'axe y.
  • Objectif : Aide les modèles à se généraliser aux variations d'angles de vue causées par de légères inclinaisons ou des points de vue obliques. Par exemple, dans la surveillance du trafic, des objets comme les voitures et les panneaux de signalisation peuvent paraître inclinés en raison de placements de caméra non perpendiculaires. L'application d'une augmentation par cisaillement garantit que le modèle apprend à reconnaître les objets malgré de telles distorsions inclinées.
  • Implémentation d'Ultralytics : RandomPerspective
  • Remarque :
    • Les valeurs de shear peuvent rapidement déformer l'image, il est donc recommandé de commencer avec de petites valeurs et de les augmenter progressivement.
    • Contrairement aux transformations de perspective, le cisaillement n'introduit pas de profondeur ou de points de fuite mais déforme plutôt la forme des objets en changeant leurs angles tout en gardant les côtés opposés parallèles.
-10-50.0510
Augmentation cisaillement -10 degrésAugmentation cisaillement -5 degrésImage originale sans augmentationAugmentation cisaillement 5 degrésAugmentation cisaillement 10 degrés

Link to this sectionPerspective (perspective)#

  • Plage : 0.0 - 0.001
  • Défaut : 0
  • Utilisation : Applique une transformation de perspective complète le long des axes x et y, simulant l'apparence des objets vus sous différents angles ou profondeurs. L'hyperparamètre perspective définit l'amplitude de la perspective, l'ajustement final étant choisi de manière aléatoire entre -perspective et perspective. Par exemple, avec perspective=0.001, la perspective est sélectionnée au hasard entre -0.001 et 0.001 sur l'axe x, et une autre valeur aléatoire indépendante est sélectionnée dans la même plage sur l'axe y.
  • Objectif : L'augmentation de perspective est cruciale pour gérer les changements de point de vue extrêmes, surtout lorsque les objets paraissent raccourcis ou déformés par des changements de perspective. Par exemple, dans la détection d'objets par drone, les bâtiments, routes et véhicules peuvent sembler étirés ou compressés selon l'inclinaison et l'altitude du drone. En appliquant des transformations de perspective, les modèles apprennent à reconnaître les objets malgré ces distorsions, améliorant ainsi leur robustesse lors des déploiements en conditions réelles.
  • Implémentation d'Ultralytics : RandomPerspective
-0.001-0.00050.00.00050.001
Perspective -0.001 transformationPerspective -0.0005 transformationImage originale sans augmentationPerspective 0.0005 transformationPerspective 0.001 transformation

Link to this sectionRetournement vertical (flipud)#

  • Plage : 0.0 - 1.0
  • Défaut : 0
  • Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of flipud=1.0 ensuring that all images are flipped and a value of flipud=0.0 disabling the transformation entirely. For example, with flipud=0.5, each image has a 50% chance of being flipped upside-down.
  • Objectif : Utile dans les scénarios où les objets peuvent apparaître à l'envers. Par exemple, dans les systèmes de vision robotique, des objets sur des tapis roulants ou des bras robotiques peuvent être saisis et placés dans diverses orientations. Le retournement vertical aide le modèle à reconnaître les objets indépendamment de leur positionnement haut-bas.
  • Implémentation d'Ultralytics : RandomFlip
flipud désactivéflipud activé
Original image without augmentationVertical flip augmentation enabled

Link to this sectionRetournement horizontal (fliplr)#

  • Plage : 0.0 - 1.0
  • Défaut : 0.5
  • Utilisation : Effectue un retournement horizontal en créant un effet miroir de l'image le long de l'axe x. Cette transformation échange les côtés gauche et droit tout en conservant la cohérence spatiale, ce qui aide le modèle à se généraliser aux objets apparaissant dans des orientations inversées. L'hyperparamètre fliplr définit la probabilité d'appliquer la transformation ; une valeur fliplr=1.0 garantit que toutes les images sont retournées, tandis qu'une valeur fliplr=0.0 désactive entièrement la transformation. Par exemple, avec fliplr=0.5, chaque image a 50 % de chances d'être retournée horizontalement.
  • Objectif : Le retournement horizontal est largement utilisé dans la détection d'objets, l'estimation de pose et la reconnaissance faciale pour améliorer la robustesse face aux variations gauche-droite. Par exemple, dans la conduite autonome, les véhicules et les piétons peuvent apparaître de chaque côté de la route, et le retournement horizontal aide le modèle à les reconnaître aussi bien dans les deux orientations.
  • Implémentation d'Ultralytics : RandomFlip
fliplr désactivéfliplr activé
Original image without augmentationHorizontal flip augmentation enabled

Link to this sectionÉchange de canaux BGR (bgr)#

  • Plage : 0.0 - 1.0
  • Défaut : 0
  • Utilisation : Échange les canaux de couleur d'une image de RGB à BGR, modifiant l'ordre de représentation des couleurs. L'hyperparamètre bgr définit la probabilité d'appliquer la transformation, avec bgr=1.0 garantissant que toutes les images subissent l'échange et bgr=0.0 le désactivant. Par exemple, avec bgr=0.5, chaque image a 50 % de chances d'être convertie de RGB à BGR.
  • Objectif : Augmente la robustesse face aux différents ordres de canaux de couleur. Par exemple, lors de l'entraînement de modèles devant fonctionner avec divers systèmes de caméras et bibliothèques d'imagerie utilisant de manière incohérente les formats RGB et BGR, ou lors du déploiement de modèles dans des environnements où le format de couleur d'entrée peut différer de celui des données d'entraînement.
  • Implémentation d'Ultralytics : Format
bgr désactivébgr activé
Original image without augmentationBGR channel swap augmentation

Link to this sectionMosaïque (mosaic)#

  • Plage : 0.0 - 1.0
  • Par défaut : 1
  • Utilisation : Combine quatre images d'entraînement en une seule. L'hyperparamètre mosaic définit la probabilité d'appliquer la transformation ; mosaic=1.0 garantit que toutes les images sont combinées et mosaic=0.0 désactive la transformation. Par exemple, avec mosaic=0.5, chaque image a 50 % de chances d'être combinée avec trois autres images.
  • Objectif : Très efficace pour améliorer la détection des petits objets et la compréhension du contexte. Par exemple, dans les projets de préservation de la vie sauvage où les animaux peuvent apparaître à diverses distances et échelles, l'augmentation mosaïque aide le modèle à apprendre à reconnaître la même espèce à travers différentes tailles, occlusions partielles et contextes environnementaux en créant artificiellement des échantillons d'entraînement diversifiés à partir de données limitées.
  • Implémentation d'Ultralytics : Mosaic
  • Remarque :
    • Même si l'augmentation mosaic rend le modèle plus robuste, elle peut également rendre le processus d'entraînement plus difficile.
    • L'augmentation mosaic peut être désactivée vers la fin de l'entraînement en définissant close_mosaic sur le nombre d'époques avant la fin où elle doit être arrêtée. Par exemple, si epochs est fixé à 200 et close_mosaic à 20, l'augmentation mosaic sera désactivée après 180 époques. Si close_mosaic est réglé sur 0, l'augmentation mosaic sera activée pendant tout le processus d'entraînement.
    • Le centre de la mosaïque générée est déterminé en utilisant des valeurs aléatoires, et peut se trouver à l'intérieur ou à l'extérieur de l'image.
    • L'implémentation actuelle de l'augmentation mosaic combine 4 images choisies au hasard dans le jeu de données. Si le jeu de données est petit, la même image peut être utilisée plusieurs fois dans la même mosaïque.
mosaic désactivémosaic activé
Original image without augmentationMosaic 4-image augmentation enabled

Link to this sectionMixup (mixup)#

  • Plage : 0.0 - 1.0
  • Défaut : 0
  • Utilisation : Mélange deux images et leurs étiquettes avec une probabilité donnée. L'hyperparamètre mixup définit la probabilité d'appliquer la transformation ; mixup=1.0 garantit que toutes les images sont mélangées et mixup=0.0 désactive la transformation. Par exemple, avec mixup=0.5, chaque image a 50 % de chances d'être mélangée avec une autre image.
  • Objectif : Améliore la robustesse du modèle et réduit le surapprentissage. Par exemple, dans les systèmes de reconnaissance de produits en magasin, le mixup aide le modèle à apprendre des caractéristiques plus robustes en mélangeant des images de différents produits, lui apprenant à identifier des articles même lorsqu'ils sont partiellement visibles ou obscurcis par d'autres produits sur des étagères bondées.
  • Implémentation d'Ultralytics : Mixup
  • Remarque :
    • Le ratio mixup est une valeur aléatoire choisie à partir d'une distribution bêta np.random.beta(32.0, 32.0), ce qui signifie que chaque image contribue à environ 50 %, avec de légères variations.
Première image, mixup désactivéSeconde image, mixup désactivémixup activé
First image for MixUp blendingSecond image for MixUp blendingMixUp blending augmentation enabled

Link to this sectionCutMix (cutmix)#

  • Plage : 0.0 - 1.0
  • Défaut : 0
  • Utilisation : Découpe une zone rectangulaire d'une image et la colle sur une autre image avec une probabilité donnée. L'hyperparamètre cutmix définit la probabilité d'appliquer la transformation ; cutmix=1.0 garantit que toutes les images subissent cette transformation et cutmix=0.0 la désactive complètement. Par exemple, avec cutmix=0.5, chaque image a 50 % de chances de voir une zone remplacée par un fragment d'une autre image.
  • Objectif : Améliore les performances du modèle en créant des scénarios d'occlusion réalistes tout en maintenant l'intégrité des caractéristiques locales. Par exemple, dans les systèmes de conduite autonome, le cutmix aide le modèle à apprendre à reconnaître des véhicules ou des piétons même lorsqu'ils sont partiellement masqués par d'autres objets, améliorant ainsi la précision de la détection dans des environnements réels complexes avec des objets qui se chevauchent.
  • Implémentation d'Ultralytics : CutMix
  • Remarque :
    • La taille et la position de la zone découpée sont déterminées de manière aléatoire pour chaque application.
    • Contrairement au mixup qui mélange les valeurs de pixels globalement, le cutmix maintient les intensités de pixels d'origine dans les zones découpées, préservant ainsi les caractéristiques locales.
    • Une zone est collée dans l'image cible seulement si elle ne chevauche aucune boîte englobante existante. De plus, seules les boîtes englobantes qui conservent au moins 0.1 (10 %) de leur zone d'origine dans la zone collée sont conservées.
    • Ce seuil minimal de zone de boîte englobante ne peut pas être modifié avec l'implémentation actuelle et est fixé à 0.1 par défaut.
Première image, cutmix désactivéSeconde image, cutmix désactivécutmix activé
First image for CutMixSecond image for CutMixCutMix augmentation enabled

Link to this sectionAugmentations spécifiques à la segmentation#

Link to this sectionCopier-Coller (copy_paste)#

  • Plage : 0.0 - 1.0
  • Défaut : 0
  • Utilisation : Fonctionne uniquement pour les tâches de segmentation. Cette augmentation copie des objets à l'intérieur ou entre des images selon une probabilité spécifiée, contrôlée par le copy_paste_mode. L'hyperparamètre copy_paste définit la probabilité d'appliquer la transformation ; copy_paste=1.0 garantit que toutes les images sont copiées et copy_paste=0.0 désactive la transformation. Par exemple, avec copy_paste=0.5, chaque image a 50 % de chances de voir des objets copiés à partir d'une autre image.
  • Objectif : Particulièrement utile pour les tâches de segmentation d'instance et les classes d'objets rares. Par exemple, dans la détection industrielle de défauts où certains types de défauts apparaissent rarement, l'augmentation copier-coller peut augmenter artificiellement l'occurrence de ces défauts rares en les copiant d'une image à l'autre, aidant ainsi le modèle à mieux apprendre ces cas sous-représentés sans nécessiter d'échantillons défectueux supplémentaires.
  • Implémentation d'Ultralytics : CopyPaste
  • Remarque :
    • Comme illustré dans le gif ci-dessous, l'augmentation copy_paste peut être utilisée pour copier des objets d'une image à une autre.
    • Une fois un objet copié, quel que soit le copy_paste_mode, son Intersection sur Aire (IoA) est calculée avec tous les objets de l'image source. Si tous les IoA sont inférieurs à 0.3 (30 %), l'objet est collé dans l'image cible. Si seulement un IoA est supérieur à 0.3, l'objet n'est pas collé dans l'image cible.
    • Le seuil IoA ne peut pas être modifié avec l'implémentation actuelle et est fixé à 0.3 par défaut.
copy_paste désactivécopy_paste activé avec copy_paste_mode=flipVisualiser le processus copy_paste
Original image without augmentationCopy-paste augmentation enabledCopy-paste augmentation animated demo

Link to this sectionMode Copier-Coller (copy_paste_mode)#

  • Options : 'flip', 'mixup'
  • Par défaut : 'flip'
  • Utilisation : Détermine la méthode utilisée pour l'augmentation copier-coller. S'il est réglé sur 'flip', les objets proviennent de la même image, tandis que 'mixup' permet de copier des objets à partir d'images différentes.
  • Objectif : Permet une flexibilité dans la manière dont les objets copiés sont intégrés dans les images cibles.
  • Implémentation d'Ultralytics : CopyPaste
  • Remarque :
    • Le principe IoA est le même pour les deux copy_paste_mode, mais la manière dont les objets sont copiés est différente.
    • Selon la taille de l'image, les objets peuvent parfois être copiés partiellement ou entièrement en dehors du cadre.
    • En fonction de la qualité des annotations polygonales, les objets copiés peuvent présenter de légères variations de forme par rapport aux originaux.
Image de référenceImage choisie pour copy_pastecopy_paste activé avec copy_paste_mode=mixup
Second image for MixUp blendingOriginal image without augmentationCopy-paste with MixUp mode

Link to this sectionAugmentations spécifiques à la classification#

Link to this sectionAuto Augment (auto_augment)#

  • Options : 'randaugment', 'autoaugment', 'augmix', None
  • Par défaut : 'randaugment'
  • Utilisation : Applique des politiques d'augmentation automatisées pour la classification. L'option 'randaugment' utilise RandAugment, 'autoaugment' utilise AutoAugment, et 'augmix' utilise AugMix. Définir sur None désactive l'augmentation automatisée.
  • Objectif : Optimise automatiquement les stratégies d'augmentation pour les tâches de classification. Les différences sont les suivantes :
    • AutoAugment : Ce mode applique des politiques d'augmentation prédéfinies apprises à partir de jeux de données comme ImageNet, CIFAR10 et SVHN. Tu peux sélectionner ces politiques existantes mais ne peux pas en entraîner de nouvelles avec Torchvision. Pour découvrir des stratégies d'augmentation optimales pour des jeux de données spécifiques, des bibliothèques externes ou des implémentations personnalisées seraient nécessaires. Référence vers l'article AutoAugment.
    • RandAugment : Applique une sélection aléatoire de transformations avec une magnitude uniforme. Cette approche réduit le besoin d'une phase de recherche extensive, la rendant plus efficace sur le plan computationnel tout en améliorant la robustesse du modèle. Référence vers l'article RandAugment.
    • AugMix : AugMix est une méthode d'augmentation de données qui améliore la robustesse du modèle en créant diverses variations d'images grâce à des combinaisons aléatoires de transformations simples. Référence vers l'article AugMix.
  • Implémentation d'Ultralytics : classify_augmentations()
  • Remarque :
    • Essentiellement, la différence principale entre les trois méthodes réside dans la manière dont les politiques d'augmentation sont définies et appliquées.
    • Tu peux consulter cet article qui compare les trois méthodes en détail.

Link to this sectionEffacement aléatoire (erasing)#

  • Plage : 0.0 - 0.9
  • Défaut : 0.4
  • Utilisation : Efface aléatoirement des portions de l'image pendant l'entraînement en classification. L'hyperparamètre erasing définit la probabilité d'appliquer la transformation, avec erasing=0.9 garantissant que presque toutes les images sont effacées et erasing=0.0 désactivant la transformation. Par exemple, avec erasing=0.5, chaque image a 50 % de chances de voir une portion effacée.
  • Objectif : Aide les modèles à apprendre des caractéristiques robustes et empêche une dépendance excessive à des régions spécifiques de l'image. Par exemple, dans les systèmes de reconnaissance faciale, l'effacement aléatoire aide les modèles à devenir plus robustes face à des occlusions partielles comme des lunettes de soleil, des masques ou d'autres objets qui pourraient couvrir partiellement les traits du visage. Cela améliore les performances en conditions réelles en forçant le modèle à identifier les individus en utilisant de multiples caractéristiques faciales plutôt que de dépendre uniquement de traits distinctifs qui pourraient être obscurcis.
  • Implémentation d'Ultralytics : classify_augmentations()
  • Remarque :
    • L'augmentation erasing est fournie avec des hyperparamètres scale, ratio et value qui ne peuvent pas être modifiés avec l'implémentation actuelle. Leurs valeurs par défaut sont (0.02, 0.33), (0.3, 3.3) et 0 respectivement, comme indiqué dans la documentation de PyTorch.
    • La limite supérieure de l'hyperparamètre erasing est fixée à 0.9 pour éviter d'appliquer la transformation à toutes les images.
erasing désactivéerasing activé (exemple 1)erasing activé (exemple 2)erasing activé (exemple 3)
Image originale sans augmentationExemple 1 d'effacement aléatoireExemple 2 d'effacement aléatoireExemple 3 d'effacement aléatoire

Link to this sectionFonctionnalités d'augmentation avancées#

Link to this sectionTransformations Albumentations personnalisées (augmentations)#

  • Type : list de transformations Albumentations
  • Par défaut : None
  • Utilisation : Te permet de fournir des transformations Albumentations personnalisées pour l'augmentation des données en utilisant l'API Python. Ce paramètre accepte une liste d'objets de transformation Albumentations qui seront appliqués pendant l'entraînement à la place des transformations Albumentations par défaut.
  • Objectif : Fournit un contrôle précis sur les stratégies d'augmentation des données en exploitant la vaste bibliothèque de transformations Albumentations. C'est particulièrement utile lorsque tu as besoin d'augmentations spécialisées au-delà des options YOLO intégrées, telles que des ajustements de couleur avancés, l'injection de bruit ou des transformations spécifiques au domaine.
  • Implémentation d'Ultralytics : Albumentations
Exemple Albumentations personnalisé
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]

# Train with custom Albumentations transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=custom_transforms,  # Pass custom transforms
    imgsz=640,
)

Points clés :

  • API Python uniquement : Les transformations Albumentations personnalisées ne sont actuellement prises en charge que via l'API Python. Elles ne peuvent pas être spécifiées via la CLI ou des fichiers de configuration YAML.
  • Remplace les transformations par défaut : Lorsque tu fournis des transformations personnalisées via le paramètre augmentations, elles remplacent complètement les transformations Albumentations par défaut. Les augmentations YOLO par défaut (comme mosaic, hsv_h, hsv_s, degrees, etc.) restent actives et sont appliquées indépendamment.
  • Compatibilité des boîtes englobantes (BBox) : Sois prudent lorsque tu utilises des transformations spatiales (transformations qui modifient la géométrie de l'image). Ultralytics gère automatiquement les ajustements des boîtes englobantes, mais certaines transformations complexes peuvent nécessiter une configuration supplémentaire.
  • Bibliothèque étendue : Albumentations propose plus de 70 transformations différentes. Explore la documentation d'Albumentations pour découvrir toutes les options disponibles.
  • Considération sur les performances : Ajouter trop d'augmentations ou utiliser des transformations coûteuses en calcul peut ralentir l'entraînement. Commence avec un petit ensemble et surveille la vitesse d'entraînement.

Cas d'utilisation courants :

  • Imagerie médicale : Applique des transformations spécialisées comme des déformations élastiques ou des distorsions de grille pour l'augmentation d'images radiographiques ou IRM.
  • Imagerie aérienne/satellite : Utilise des transformations optimisées pour les perspectives zénithales.
  • Conditions de faible luminosité : Applique des ajustements de bruit et de luminosité pour simuler des éclairages difficiles.
  • Inspection industrielle : Ajoute des motifs semblables à des défauts ou des variations de texture pour des applications de contrôle qualité.

Notes de compatibilité :

  • Nécessite la version 1.0.3 ou supérieure d'Albumentations
  • Compatible avec toutes les tâches de détection et de segmentation YOLO
  • Non applicable aux tâches de classification (la classification utilise un pipeline d'augmentation différent)

Pour plus d'informations sur Albumentations et les transformations disponibles, visite la documentation officielle d'Albumentations.

Link to this sectionFAQ#

Link to this sectionIl y a trop d'augmentations parmi lesquelles choisir. Comment savoir lesquelles utiliser ?#

Le choix des augmentations appropriées dépend de ton cas d'utilisation spécifique et de ton jeu de données. Voici quelques directives générales pour t'aider à décider :

  • Dans la plupart des cas, de légères variations de couleur et de luminosité sont bénéfiques. Les valeurs par défaut pour hsv_h, hsv_s et hsv_v sont un excellent point de départ.
  • Si le point de vue de la caméra est cohérent et ne changera pas une fois le modèle déployé, tu peux probablement ignorer les transformations géométriques telles que rotation, translation, scale, shear ou perspective. Cependant, si l'angle de la caméra peut varier et que tu as besoin que le modèle soit plus robuste, il est préférable de conserver ces augmentations.
  • Utilise l'augmentation mosaic uniquement si la présence d'objets partiellement occultés ou de plusieurs objets par image est acceptable et ne modifie pas la valeur de l'étiquette. Alternativement, tu peux garder mosaic actif mais augmenter la valeur close_mosaic pour le désactiver plus tôt dans le processus d'entraînement.

En résumé : fais simple. Commence avec un petit ensemble d'augmentations et ajoute-en progressivement au besoin. L'objectif est d'améliorer la généralisation et la robustesse du modèle, pas de compliquer inutilement le processus d'entraînement. Assure-toi également que les augmentations que tu appliques reflètent la même distribution de données que celle que ton modèle rencontrera en production.

Link to this sectionLors du démarrage d'un entraînement, je vois une référence albumentations: Blur[...]. Cela signifie-t-il qu'Ultralytics YOLO exécute une augmentation supplémentaire comme le flou ?#

Si le paquet albumentations est installé, Ultralytics applique automatiquement un ensemble d'augmentations d'image supplémentaires en l'utilisant. Ces augmentations sont gérées en interne et ne nécessitent aucune configuration supplémentaire.

Tu peux trouver la liste complète des transformations appliquées dans notre documentation technique, ainsi que dans notre guide d'intégration d'Albumentations. Note que seules les augmentations avec une probabilité p supérieure à 0 sont actives. Celles-ci sont appliquées intentionnellement à basse fréquence pour imiter les artefacts visuels réels, tels que le flou ou les effets de niveaux de gris.

Tu peux également fournir tes propres transformations Albumentations personnalisées via l'API Python. Voir la section Fonctionnalités d'augmentation avancées pour plus de détails.

Link to this sectionLors du démarrage d'un entraînement, je ne vois aucune référence à albumentations. Pourquoi ?#

Vérifie si le paquet albumentations est installé. Si ce n'est pas le cas, tu peux l'installer en exécutant pip install albumentations. Une fois installé, le paquet devrait être automatiquement détecté et utilisé par Ultralytics.

Link to this sectionComment puis-je personnaliser mes augmentations ?#

Tu peux personnaliser les augmentations en créant une classe de jeu de données et un entraîneur personnalisés. Par exemple, tu peux remplacer les augmentations de classification Ultralytics par défaut par torchvision.transforms.Resize de PyTorch ou d'autres transformations. Voir l'exemple d'entraînement personnalisé dans la documentation de classification pour les détails d'implémentation.

Commentaires