Augmentation de données avec Ultralytics YOLO#
Introduction#
Data augmentation est une technique essentielle en vision par ordinateur qui permet d'étendre 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 (overfitting) et renforce 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 🚀
Pourquoi 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.
- Performance améliorée : Les modèles entraînés avec une augmentation appropriée obtiennent généralement une meilleure précision sur les ensembles 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 explore les paramètres d'augmentation ci-dessous, t'aidant à comprendre quand et comment les utiliser efficacement dans tes projets.
Exemples 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.
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Training with custom augmentation parameters
model.train(data="coco8.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)
# Training with every configurable augmentation disabled (disabled values omitted for clarity)
model.train(
data="coco8.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="coco8.yaml", epochs=100, augmentations=custom_transforms)Les transformations répertoriées sur cette page sont celles que tu contrôles via les arguments d'entraînement. Ultralytics applique également un petit ensemble Albumentations — flou, flou médian, nuances de gris et CLAHE, chacun à p=0.01 — chaque fois que le paquet albumentations est installé, et aucun argument dans default.yaml ne le désactive. Désinstalle le paquet pour le supprimer, ou passe ta propre liste à augmentations pour le remplacer.
Utilisation 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 n'est requis que lors de l'utilisation de la CLI. Ce nouveau fichier YAML remplacera alors le fichier par défaut situé dans le paquet 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.5Ensuite, lance l'entraînement avec l'API Python :
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")Augmentations de l'espace colorimétrique#
Ajustement de la teinte (hsv_h)#
- Plage :
0.0-1.0 - Par défaut :
0.015 - Utilisation : Modifie les couleurs de l'image tout en préservant leurs relations. L'hyperparamètre
hsv_hdéfinit l'amplitude du décalage, l'ajustement final étant choisi aléatoirement entre-hsv_hethsv_h. Par exemple, avechsv_h=0.3, le décalage est sélectionné aléatoirement entre-0.3et0.3. Pour des valeurs supérieures à0.5, le décalage de teinte boucle autour du cercle chromatique, ce qui explique pourquoi les augmentations se ressemblent entre0.5et-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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajustement de la saturation (hsv_s)#
- Plage :
0.0-1.0 - Par défaut :
0.7 - Utilisation : Modifie l'intensité des couleurs dans l'image. L'hyperparamètre
hsv_sdéfinit l'amplitude du décalage, l'ajustement final étant choisi aléatoirement entre-hsv_sethsv_s. Par exemple, avechsv_s=0.7, l'intensité est sélectionnée aléatoirement entre-0.7et0.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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajustement de la luminosité (hsv_v)#
- Plage :
0.0-1.0 - Par défaut :
0.4 - Utilisation : Modifie la luminosité de l'image. L'hyperparamètre
hsv_vdéfinit l'amplitude du décalage, l'ajustement final étant choisi aléatoirement entre-hsv_vethsv_v. Par exemple, avechsv_v=0.4, l'intensité est sélectionnée aléatoirement entre-0.4et0.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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Transformations géométriques#
Rotation (degrees)#
- Plage : de
0.0à180 - Par défaut :
0 - Utilisation : Fait pivoter les images de manière aléatoire dans la plage spécifiée. L'hyperparamètre
degreesdéfinit l'angle de rotation, l'ajustement final étant choisi aléatoirement entre-degreesetdegrees. Par exemple, avecdegrees=10.0, la rotation est sélectionnée aléatoirement entre-10.0et10.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 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Translation (translate)#
- Plage :
0.0-1.0 - Par défaut :
0.1 - Utilisation : Déplace les images horizontalement et verticalement d'une fraction aléatoire de la taille de l'image. L'hyperparamètre
translatedéfinit l'amplitude du déplacement, l'ajustement final étant choisi aléatoirement deux fois (une fois pour chaque axe) dans la plage-translateettranslate. Par exemple, avectranslate=0.5, la translation est sélectionnée aléatoirement entre-0.5et0.5sur l'axe des x, et une autre valeur aléatoire indépendante est sélectionnée dans la même plage sur l'axe des 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
xety. Les valeurs-1.0et1.0ne sont pas affichées car elles déplaceraient l'image complètement hors du cadre.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Échelle (scale)#
- Plage :
0.0-1.0sous forme de nombre à virgule flottante, ou un tuple explicite(min, max) - Par défaut :
0.5 - Utilisation : Redimensionne les images d'un facteur aléatoire dans la plage spécifiée. Sous forme de nombre à virgule flottante, l'hyperparamètre
scaledéfinit le gain de mise à l'échelle, le facteur final étant choisi aléatoirement entre1-scaleet1+scale. Par exemple, avecscale=0.5, la mise à l'échelle est sélectionnée aléatoirement entre0.5et1.5. Sous forme de tuple,scaledéfinit directement cette plage, de sorte quescale=(0.5, 2.0)échantillonne le facteur entre0.5et2.0. - 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.0n'est pas affichée car elle ferait disparaître l'image, tandis que1.0entraîne simplement un zoom 2x. - Les valeurs affichées dans le tableau ci-dessous sont les deltas d'échelle réalisés, et non les valeurs que tu passes à l'hyperparamètre
scale. - La forme en nombre à virgule flottante est validée pour la plage
0.0-1.0, et une valeur en dehors de celle-ci génère une erreurValueError. Pour échantillonner un facteur au-delà d'un zoom 2x, passe plutôt la forme de tuple(min, max). - La forme de tuple s'applique uniquement aux tâches géométriques. L'entraînement de classification dérive sa propre plage de recadrage à partir du nombre à virgule flottante (
1.0 - scaleà1.0), donc y passer un tuple génère une erreurTypeError.
- La valeur
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Cisaillement (Shear) (shear)#
- Plage : de
-180à+180 - Par défaut :
0 - Utilisation : Introduit une transformation géométrique qui déforme l'image le long des axes x et y, déplaçant efficacement des parties de l'image dans une direction tout en maintenant des lignes parallèles. L'hyperparamètre
sheardéfinit l'angle de cisaillement, l'ajustement final étant choisi aléatoirement entre-shearetshear. Par exemple, avecshear=10.0, le cisaillement est sélectionné aléatoirement entre-10et10sur l'axe des x, et une autre valeur aléatoire indépendante est sélectionnée dans la même plage sur l'axe des 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
shearpeuvent 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.
- Les valeurs de
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Perspective (perspective)#
- Plage :
0.0-0.001 - Par défaut :
0 - Utilisation : Applique une transformation de perspective complète le long des axes x et y, simulant l'apparence d'objets vus depuis différentes profondeurs ou angles. L'hyperparamètre
perspectivedéfinit l'amplitude de la perspective, l'ajustement final étant choisi aléatoirement entre-perspectiveetperspective. Par exemple, avecperspective=0.001, la perspective est sélectionnée aléatoirement entre-0.001et0.001sur l'axe des x, et une autre valeur aléatoire indépendante est sélectionnée dans la même plage sur l'axe des 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.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Retournement vertical (Flip Up-Down) (flipud)#
- Plage :
0.0-1.0 - Par défaut :
0 - Utilisation : Effectue un retournement vertical en inversant l'image le long de l'axe des y. Cette transformation met toute l'image sens dessus dessous tout en préservant toutes les relations spatiales entre les objets. L'hyperparamètre flipud définit la probabilité d'appliquer la transformation, une valeur de
flipud=1.0garantissant que toutes les images sont retournées et une valeur deflipud=0.0désactivant complètement la transformation. Par exemple, avecflipud=0.5, chaque image a 50 % de chances d'être retournée sens dessus dessous. - 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é |
|---|---|
![]() | ![]() |
Retournement horizontal (Flip Left-Right) (fliplr)#
- Plage :
0.0-1.0 - Par défaut :
0.5 - Utilisation : Effectue un retournement horizontal en miroir de l'image le long de l'axe des x. Cette transformation permute les côtés gauche et droit tout en maintenant 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
fliplrdéfinit la probabilité d'appliquer la transformation, une valeur defliplr=1.0garantissant que toutes les images sont retournées et une valeur defliplr=0.0désactivant complètement la transformation. Par exemple, avecfliplr=0.5, chaque image a 50 % de chances d'être retournée de gauche à droite. - 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é |
|---|---|
![]() | ![]() |
Échange des canaux BGR (bgr)#
- Plage :
0.0-1.0 - Par défaut :
0 - Utilisation : Échange les canaux de couleur d'une image de RVB à BGR, modifiant l'ordre dans lequel les couleurs sont représentées. L'hyperparamètre
bgrdéfinit la probabilité d'appliquer la transformation,bgr=1.0garantissant que toutes les images subissent l'échange de canaux etbgr=0.0le désactivant. Par exemple, avecbgr=0.5, chaque image a 50 % de chances d'être convertie de RVB à 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é |
|---|---|
![]() | ![]() |
Mosaïque (Mosaic) (mosaic)#
- Plage :
0.0-1.0 - Par défaut :
1 - Utilisation : Combine quatre images d'entraînement en une seule. L'hyperparamètre
mosaicdéfinit la probabilité d'appliquer la transformation,mosaic=1.0garantissant que toutes les images sont combinées etmosaic=0.0désactivant la transformation. Par exemple, avecmosaic=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
mosaicrend le modèle plus robuste, elle peut aussi rendre le processus d'entraînement plus difficile. - L'augmentation
mosaicpeut être désactivée vers la fin de l'entraînement en définissantclose_mosaicsur le nombre d'époques avant la fin où elle doit être arrêtée. Par exemple, siepochsest défini sur200etclose_mosaicsur20, l'augmentationmosaicsera désactivée après180époques. Siclose_mosaicest défini sur0, l'augmentationmosaicsera activée pendant tout le processus d'entraînement. - La fermeture de la mosaïque désactive également
copy_paste,mixupetcutmixà la même époque. Les quatre sont désactivés ensemble, de sorte que les époques finales s'entraînent sans eux tandis que toutes les autres augmentations — les transformations géométriques, le HSV, les miroirs et Albumentations — continuent de s'exécuter. Note quecopy_pastedans son mode par défautflipfonctionne sur une seule image plutôt que d'en combiner plusieurs. - 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
mosaiccombine l'image actuelle avec 3 autres, tirées d'un tampon d'images récemment chargées, ou de n'importe où dans le jeu de données lorsquecache='ram'. Quoi qu'il en soit, elles sont échantillonnées avec remplacement, de sorte qu'une même image peut apparaître plus d'une fois dans une seule mosaïque.
- Même si l'augmentation
mosaic désactivé | mosaic activé |
|---|---|
![]() | ![]() |
Mixup (mixup)#
- Plage :
0.0-1.0 - Par défaut :
0 - Utilisation : Mélange deux images et leurs étiquettes avec une probabilité donnée. L'hyperparamètre
mixupdéfinit la probabilité d'appliquer la transformation,mixup=1.0garantissant que toutes les images sont mélangées etmixup=0.0désactivant la transformation. Par exemple, avecmixup=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 rapport
mixupest une valeur aléatoire tirée d'une distribution bêtanp.random.beta(32.0, 32.0), ce qui signifie que chaque image contribue à environ 50 %, avec de légères variations.
- Le rapport
Première image, mixup désactivé | Deuxième image, mixup désactivé | mixup activé |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)#
- Plage :
0.0-1.0 - Par défaut :
0 - Utilisation : Découpe une région rectangulaire d'une image et la colle sur une autre image avec une probabilité donnée. L'hyperparamètre
cutmixdéfinit la probabilité d'appliquer la transformation,cutmix=1.0garantissant que toutes les images subissent cette transformation etcutmix=0.0la désactivant complètement. Par exemple, aveccutmix=0.5, chaque image a 50 % de chances de voir une région remplacée par un patch provenant 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,
cutmixmaintient les intensités de pixels d'origine dans les régions découpées, préservant ainsi les caractéristiques locales. - Une région est collée dans l'image cible uniquement si elle ne chevauche aucune boîte englobante existante. De plus, seules les boîtes englobantes qui conservent une part suffisante de leur zone d'origine dans la région collée sont préservées.
- Ce seuil de surface minimale de boîte englobante ne peut pas être modifié avec l'implémentation actuelle. Il est de
0.1(10 %) pour les étiquettes de détection et de0.01(1 %) une fois que les étiquettes comportent des segments.
Première image, cutmix désactivé | Deuxième image, cutmix désactivé | cutmix activé |
|---|---|---|
![]() | ![]() | ![]() |
Augmentations spécifiques à la segmentation#
Copier-Coller (Copy-Paste) (copy_paste)#
- Plage :
0.0-1.0 - Par défaut :
0 - Utilisation : Fonctionne uniquement pour les tâches de segmentation, cette augmentation copie des objets à l'intérieur ou entre des images, contrôlée par
copy_paste_mode. En modeflip,copy_pasteest la fraction d'objets éligibles copiés : une image avec six objets éligibles gagne trois copies àcopy_paste=0.5. En modemixup, la même valeur contrôle également la probabilité que le copier-coller s'exécute.copy_paste=0.0désactive la transformation. - 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 indiqué dans la vidéo ci-dessous, l'augmentation
copy_pastepeut être utilisée pour copier des objets d'une image à une autre. - Une fois qu'un objet est sélectionné pour être copié, son IoA (Intersection over Area) est calculé par rapport à tous les objets déjà présents dans l'image cible, indépendamment de
copy_paste_mode. L'objet n'est collé que si toutes les valeurs d'IoA sont inférieures à0.3(30 %) ; il n'est pas collé si une valeur d'IoA est supérieure ou égale à0.3. - Le seuil d'IoA ne peut pas être modifié avec l'implémentation actuelle et est défini sur
0.3par défaut.
- Comme indiqué dans la vidéo ci-dessous, l'augmentation
copy_paste désactivé | copy_paste activé avec copy_paste_mode=flip | Visualiser le processus copy_paste |
|---|---|---|
![]() | ![]() |
Mode Copier-Coller (Copy-Paste Mode) (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 défini sur
'flip', les objets proviennent de la même image, tandis que'mixup'permet de copier des objets depuis différentes images. - 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 de l'IoA est le même pour les deux options de
copy_paste_mode, mais la manière dont les objets sont copiés diffère. - 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.
- Le principe de l'IoA est le même pour les deux options de
| Image de référence | Image choisie pour copy_paste | copy_paste activé avec copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Augmentations spécifiques à la classification#
Augmentation automatique (Auto 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 surNonedé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 tels que ImageNet, CIFAR10 et SVHN. Les utilisateurs peuvent sélectionner ces politiques existantes mais ne peuvent pas en entraîner de nouvelles au sein de 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 sont nécessaires. Référence au document de recherche AutoAugment.
- RandAugment : Applique une sélection aléatoire de transformations avec une amplitude uniforme. Cette approche réduit le besoin d'une phase de recherche intensive, ce tout en améliorant la robustesse du modèle. Référence au document de recherche 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 au document de recherche 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.
Effacement aléatoire (Random Erasing) (erasing)#
- Plage :
0.0-1.0 - Par défaut :
0.4 - Utilisation : Efface aléatoirement des portions de l'image lors de l'entraînement de classification. L'hyperparamètre
erasingdéfinit la probabilité d'appliquer la transformation,erasing=1.0effaçant une région dans chaque image eterasing=0.0désactivant la transformation. Par exemple, avecerasing=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
erasings'accompagne d'hyperparamètresscale,ratioetvaluequi ne peuvent pas être modifiés avec l'implémentation actuelle. Leurs valeurs par défaut sont respectivement(0.02, 0.33),(0.3, 3.3)et0, comme indiqué dans la documentation de PyTorch.
- L'augmentation
erasing désactivé | erasing activé (exemple 1) | erasing activé (exemple 2) | erasing activé (exemple 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Fonctionnalités d'augmentation avancées#
Transformations Albumentations personnalisées (augmentations)#
- Type :
listde transformations Albumentations - Par défaut :
None - Utilisation : Te permet de fournir des transformations Albumentations personnalisées pour l'augmentation des données via l'API Python. Ce paramètre accepte une liste d'objets de transformation Albumentations qui seront appliqués pendant l'entraînement au lieu 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. Ceci est particulièrement utile lorsque tu as besoin d'augmentations spécialisées au-delà des options YOLO intégrées, telles que des déformations élastiques et des distorsions de grille pour l'imagerie médicale, des transformations adaptées aux perspectives aériennes et satellitaires, des bruits et des variations de luminosité simulant des conditions de faible luminosité, ou des variations de texture de type défaut pour l'inspection industrielle.
- Implémentation d'Ultralytics : Albumentations
- Remarque :
- La construction des objets de transformation nécessite l'API Python. Ultralytics les sérialise avec
A.to_dict()lors de l'enregistrement d'un point de contrôle, de sorte qu'une liste déjà sérialisée passe par un fichier de configuration YAML ou la CLI, ce qui permet àresumede les restaurer. - Les transformations personnalisées remplacent complètement l'ensemble Albumentations par défaut. Chaque augmentation configurée ailleurs sur cette page —
mosaic,hsv_h,degreeset les autres — reste active et est appliquée indépendamment. - Sois prudent avec les transformations spatiales qui modifient la géométrie de l'image. Ultralytics ajuste automatiquement les boîtes englobantes, mais certaines transformations complexes peuvent nécessiter une configuration supplémentaire.
- Albumentations propose plus de 70 transformations ; la documentation d'Albumentations les répertorie toutes. L'ajout de nombreuses transformations, ou de transformations coûteuses en calcul, ralentit l'entraînement, alors commence par un petit ensemble et surveille le temps par époque.
- S'applique aux tâches
detect,segment,semantic,depth,poseetobb. La classification est exclue, car elle utilise un pipeline d'augmentation séparé.
- La construction des objets de transformation nécessite l'API Python. Ultralytics les sérialise avec
Les exemples ci-dessous nécessitent Albumentations 1.4.22 ou plus récent, et par conséquent Python 3.9 ou plus récent.
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(std_range=(0.0124, 0.0277), 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,
)FAQ#
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_sethsv_vconstituent un bon 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,shearouperspective. Cependant, si l'angle de la caméra peut varier et que tu as besoin que le modèle soit plus robuste, il vaut mieux conserver ces augmentations. - Utilise l'augmentation
mosaicuniquement si la présence d'objets partiellement occlus ou de plusieurs objets par image est acceptable et ne modifie pas la valeur de l'étiquette. Tu peux également gardermosaicactif mais augmenter la valeurclose_mosaicpour 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.
- 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
Si le paquet
albumentationsest installé, Ultralytics applique automatiquement un ensemble d'augmentations d'images supplémentaires en l'utilisant. Ces augmentations sont gérées en interne et ne nécessitent aucune configuration supplémentaire.Tu trouveras la liste complète des transformations appliquées dans notre documentation technique, ainsi que dans notre guide d'intégration Albumentations. Note que seules les augmentations dont la probabilité
pest supérieure à0sont actives. Celles-ci sont appliquées intentionnellement à de faibles fréquences pour imiter les artéfacts visuels du monde réel, tels que le flou ou les effets de niveau de gris.Tu peux également fournir tes propres transformations Albumentations personnalisées en utilisant l'API Python. Consulte la section Fonctionnalités d'augmentation avancées pour plus de détails.
Vérifie si le paquet
albumentationsest installé. Si ce n'est pas le cas, installe-le :pip install albumentationsUne fois installé, le paquet doit être automatiquement détecté et utilisé par Ultralytics.














































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