Augmentation des données à l’aide d’Ultralytics YOLO

Introduction
L'augmentation de données est une technique cruciale en vision par ordinateur qui étend artificiellement votre ensemble de données d'entraînement en appliquant diverses transformations aux images existantes. Lors de l'entraînement de modèles d'apprentissage profond comme Ultralytics YOLO, l'augmentation de données contribue à améliorer la robustesse du modèle, à réduire le surapprentissage et à améliorer la généralisation aux scénarios du monde réel.
Regarder : Comment utiliser Mosaic, MixUp et d'autres augmentations de données pour aider les modèles Ultralytics YOLO à mieux généraliser 🚀
Pourquoi l'augmentation des données est-elle importante ?
L’augmentation des données remplit plusieurs objectifs essentiels dans la formation des modèles de vision par ordinateur :
- Ensemble de données étendu : En créant des variations d’images existantes, vous pouvez augmenter efficacement la taille de votre ensemble de données d’entraînement sans collecter de nouvelles données.
- Amélioration de la généralisation : Les modèles apprennent à reconnaître les objets dans diverses conditions, ce qui les rend plus robustes dans les applications du monde réel.
- Réduction du surapprentissage : 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 atteignent 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 ayant des objectifs spécifiques et contribuant à la performance du modèle de différentes manières. Ce guide explorera chaque paramètre d’augmentation en détail, vous aidant à comprendre quand et comment les utiliser efficacement dans vos projets.
Exemples de configurations
Vous pouvez personnaliser chaque paramètre à l’aide de l’API Python, de l’interface de ligne de commande (CLI) ou d’un fichier de configuration. Vous trouverez ci-dessous des exemples de configuration de l’augmentation des données dans chaque méthode.
Exemples de configuration
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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)
# Training with custom augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5
Utilisation d'un fichier de configuration
Vous pouvez 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 mode paramètre n'est requis que lors de l'utilisation de la CLI. Ce nouveau fichier YAML remplacera alors celui par défaut situé dans le ultralytics package.
# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5
Lancez ensuite l'entraînement avec l'API python :
Exemple d'entraînement
from ultralytics import YOLO
# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" cfg=train_custom.yaml
Augmentations de l'espace colorimétrique
Réglage de la teinte (hsv_h)
- Plage:
0.0-1.0 - Par défaut:
0.015 - Utilisation: Décale les couleurs de l'image tout en préservant leurs relations. Le
hsv_hl'hyperparamètre dé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 dans-0.3à0.3. Pour les valeurs supérieures à0.5, le décalage de teinte fait le tour de la roue chromatique, c'est pourquoi les augmentations se ressemblent entre0.5et-0.5. - Objectif : Particulièrement utile pour les scénarios extérieurs où les conditions d'éclairage peuvent affecter considérablement 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. Le
hsv_sl'hyperparamètre dé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 dans-0.7à0.7. - Objectif : Aide les modèles à gérer les conditions météorologiques variables et les paramètres de la caméra. Par exemple, un panneau de signalisation rouge peut paraître très vif par une journée ensoleillée, mais avoir l'air terne et délavé par temps brumeux.
- Implémentation d’Ultralytics : RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Réglage de la luminosité (hsv_v)
- Plage:
0.0-1.0 - Par défaut:
0.4 - Utilisation: Modifie la luminosité de l'image. Le
hsv_vl'hyperparamètre dé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 dans-0.4à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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Transformations géométriques
Rotation (degrees)
- Plage:
0.0à180 - Par défaut:
0.0 - Utilisation: Fait pivoter les images de manière aléatoire dans la plage spécifiée. Le
degreesl'hyperparamètre dé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 dans-10.0à10.0. - Objectif : Essentiel pour les applications où les objets peuvent apparaître à différentes orientations. Par exemple, dans l'imagerie aérienne par drone, les véhicules peuvent être orientés dans n'importe quelle direction, ce qui exige que les modèles reconnaissent les objets quelle que soit leur rotation.
- Implémentation d’Ultralytics : RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Traduction (translate)
- Plage:
0.0-1.0 - Par défaut:
0.1 - Utilisation: Décale les images horizontalement et verticalement d'une fraction aléatoire de la taille de l'image. Le
translatel'hyperparamètre définit l'amplitude du décalage, 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 dans-0.5à0.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 de l'objet. Par exemple, dans les applications d'évaluation des dommages aux véhicules, les pièces automobiles peuvent apparaître entièrement ou partiellement dans le cadre en fonction de la position et de la distance du photographe, l'augmentation de la translation enseignera au modèle à reconnaître ces caractéristiques quelle que soit leur exhaustivité ou leur position.
- Implémentation d’Ultralytics : RandomPerspective
- Remarque: Par souci de simplicité, les traductions appliquées ci-dessous sont les mêmes à chaque fois pour les deux
xetyaxes. Valeurs-1.0et1.0ne sont pas affichés car ils traduiraient complètement l'image hors du cadre.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Échelle (scale)
- Plage: ≥
0.0 - Par défaut:
0.5 - Utilisation: Redimensionne les images par un facteur aléatoire dans la plage spécifiée. Le
scalel'hyperparamètre définit le facteur d'échelle, l'ajustement final étant choisi aléatoirement entre1-scaleet1+scale. Par exemple, avecscale=0.5, la mise à l'échelle est sélectionnée aléatoirement dans0.5à1.5. - Objectif : Permet aux modèles de gérer les objets à différentes distances et tailles. Par exemple, dans les applications de conduite autonome, les véhicules peuvent apparaître à différentes distances de la caméra, ce qui exige que le modèle les reconnaisse quelle que soit leur taille.
- Implémentation d’Ultralytics : RandomPerspective
- Remarque:
- La valeur
-1.0n’est pas affiché car cela ferait disparaître l’image, tandis que1.0se traduit simplement par un zoom 2x. - Les valeurs affichées dans le tableau ci-dessous sont celles appliquées via l'hyperparamètre
scale, et non le facteur d'échelle final. - Si
scaleest supérieur à1.0, l'image peut être très petite ou inversée, car le facteur d'échelle est choisi aléatoirement entre1-scaleet1+scale. Par exemple, avecscale=3.0, la mise à l'échelle est sélectionnée aléatoirement dans-2.0à4.0. Si une valeur négative est choisie, l'image est inversée.
- La valeur
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Cisaillement (shear)
- Plage:
-180à+180 - Par défaut:
0.0 - Utilisation: Introduit une transformation géométrique qui biaise l'image le long des axes x et y, déplaçant ainsi des parties de l'image dans une direction tout en conservant les lignes parallèles. Le
shearl'hyperparamètre dé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 dans-10à10sur 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 à généraliser les variations des angles de vue causées par de légères inclinaisons ou des points de vue obliques. Par exemple, dans la surveillance du trafic, les objets tels que les voitures et les panneaux de signalisation peuvent apparaître inclinés en raison du placement non perpendiculaire des caméras. L'application de l'augmentation de cisaillement garantit que le modèle apprend à reconnaître les objets malgré ces distorsions asymétriques.
- Implémentation d’Ultralytics : RandomPerspective
- Remarque:
shearles valeurs 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 ni de points de fuite, mais déforme plutôt la forme des objets en modifiant leurs angles tout en gardant les côtés opposés parallèles.
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Perspective (perspective)
- Plage:
0.0-0.001 - Par défaut:
0.0 - Utilisation: Applique une transformation de perspective complète le long des axes x et y, simulant la façon dont les objets apparaissent lorsqu'ils sont vus sous différents angles ou profondeurs. Le
perspectivel'hyperparamètre dé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 dans-0.001à0.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 la perspective est essentielle pour gérer les changements extrêmes de point de vue, en particulier dans les scénarios où les objets apparaissent raccourcis ou déformés en raison des changements de perspective. Par exemple, dans la détection d'objets par drone, les bâtiments, les routes et les véhicules peuvent apparaître étirés ou comprimés en fonction de l'inclinaison et de l'altitude du drone. En appliquant des transformations de perspective, les modèles apprennent à reconnaître les objets malgré ces distorsions induites par la perspective, améliorant ainsi leur robustesse dans les déploiements du monde réel.
- Implémentation d’Ultralytics : RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Retournement haut-bas (flipud)
- Plage:
0.0-1.0 - Par défaut:
0.0 - Utilisation: Effectue un retournement vertical en inversant l'image le long de l'axe des y. Cette transformation met en miroir l'image entière à l'envers, mais préserve toutes les relations spatiales entre les objets. L'hyperparamètre flipud définit la probabilité d'application de la transformation, avec une valeur de
flipud=1.0garantissant que toutes les images sont retournées et une valeur deflipud=0.0désactiver complètement la transformation. Par exemple, avecflipud=0.5, chaque image a 50 % de chances d'être inversée de haut en bas. - Objectif : Utile dans les scénarios où les objets peuvent apparaître à l’envers. Par exemple, dans les systèmes de vision robotique, les objets sur les bandes transporteuses ou les bras robotiques peuvent être ramassés et placés dans diverses orientations. Le retournement vertical aide le modèle à reconnaître les objets, quelle que soit leur position de haut en bas.
- Implémentation d’Ultralytics : RandomFlip
flipud désactivé | flipud sur |
|---|---|
![]() | ![]() |
Retournement gauche-droite (fliplr)
- Plage:
0.0-1.0 - Par défaut:
0.5 - Utilisation: Effectue un retournement horizontal en mettant en miroir l'image le long de l'axe des x. Cette transformation inverse les côtés gauche et droit tout en maintenant la cohérence spatiale, ce qui aide le modèle à généraliser les objets apparaissant dans des orientations inversées. Le
fliplrl'hyperparamètre définit la probabilité d'application de la transformation, avec une valeur defliplr=1.0garantissant que toutes les images sont retournées et une valeur defliplr=0.0désactiver complètement la transformation. Par exemple, avecfliplr=0.5, chaque image a 50 % de chances d'être inversée de gauche à droite. - Objectif : Le retournement horizontal est largement utilisé dans la détection d'objets, l'estimation de la pose et la reconnaissance faciale pour améliorer la robustesse contre les 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 sur |
|---|---|
![]() | ![]() |
Inversion des canaux BGR (bgr)
- Plage:
0.0-1.0 - Par défaut:
0.0 - Utilisation: Inverse les canaux de couleur d'une image de RGB à BGR, modifiant l'ordre dans lequel les couleurs sont représentées. Le
bgrl'hyperparamètre définit la probabilité d'application de la transformation, avecbgr=1.0garantissant que toutes les images subissent l'échange de canaux etbgr=0.0en la désactivant. Par exemple, avecbgr=0.5, chaque image a 50 % de chances d'être convertie de RGB à BGR. - Objectif : Augmente la robustesse aux différents ordres des canaux de couleur. Par exemple, lors de l'entraînement de modèles qui doivent fonctionner avec divers systèmes de caméras et bibliothèques d'imagerie où les formats RVB et BGR peuvent être utilisés de manière incohérente, ou lors du déploiement de modèles dans des environnements où le format de couleur d'entrée peut différer des données d'entraînement.
- Implémentation d’Ultralytics : Format
bgr désactivé | bgr sur |
|---|---|
![]() | ![]() |
Mosaïque (mosaic)
- Plage:
0.0-1.0 - Par défaut:
1.0 - Utilisation: Combine quatre images d'entraînement en une seule. Le
mosaicl'hyperparamètre définit la probabilité d'application de la transformation, avecmosaic=1.0garantissant que toutes les images sont combinées etmosaic=0.0désactiver 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 conservation de la faune où les animaux peuvent apparaître à différentes 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 le
mosaicl'augmentation rend le modèle plus robuste, mais elle peut également rendre le processus d'entraînement plus difficile. - L'argument
mosaicl'augmentation peut être désactivée vers la fin de l'entraînement en définissantclose_mosaicau nombre d'époques avant la fin, moment où il doit être désactivé. Par exemple, siepochsest défini sur200etclose_mosaicest défini sur20, la fonctionmosaicl'augmentation sera désactivée après180epochs. Siclose_mosaicest défini sur0, la fonctionmosaicl'augmentation sera activée pour l'ensemble du processus d'entraînement. - Le centre de la mosaïque générée est déterminé à l'aide de valeurs aléatoires et peut se trouver à l'intérieur ou à l'extérieur de l'image.
- L'implémentation actuelle du
mosaicl'augmentation combine 4 images choisies au hasard dans l'ensemble de données. Si l'ensemble de données est petit, la même image peut être utilisée plusieurs fois dans la même mosaïque.
- Même si le
mosaic désactivé | mosaic sur |
|---|---|
![]() | ![]() |
Mixup (mixup)
- Plage:
0.0-1.0 - Par défaut:
0.0 - Utilisation: Mélange deux images et leurs étiquettes avec une probabilité donnée. Le
mixupl'hyperparamètre définit la probabilité d'application de la transformation, avecmixup=1.0garantissant que toutes les images sont mélangées etmixup=0.0désactiver 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 de vente au détail, mixup aide le modèle à apprendre des caractéristiques plus robustes en mélangeant des images de différents produits, lui apprenant à identifier les articles même lorsqu'ils sont partiellement visibles ou masqués par d'autres produits sur les étagères bondées des magasins.
- Implémentation d’Ultralytics : Mixup
- Remarque:
- L'argument
mixupratio est une valeur aléatoire choisie parmi unnp.random.beta(32.0, 32.0)distribution bêta, ce qui signifie que chaque image contribue à environ 50 %, avec de légères variations.
- L'argument
Première image, mixup désactivé | Deuxième image, mixup désactivé | mixup sur |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)
- Plage:
0.0-1.0 - Par défaut:
0.0 - Utilisation: Coupe une région rectangulaire d'une image et la colle sur une autre image avec une probabilité donnée. Le
cutmixl'hyperparamètre définit la probabilité d'application de la transformation, aveccutmix=1.0garantissant que toutes les images subissent cette transformation etcutmix=0.0en la 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 la performance 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, cutmix aide le modèle à apprendre à reconnaître les véhicules ou les piétons même lorsqu'ils sont partiellement occultés par d'autres objets, améliorant ainsi la précision de la détection dans des environnements complexes du monde réel avec des objets qui se chevauchent.
- Implémentation d’Ultralytics : CutMix
- Remarque:
- La taille et la position de la région coupée sont déterminées aléatoirement pour chaque application.
- Contrairement au mixup qui mélange les valeurs des pixels globalement,
cutmixconserve les intensités de pixels d'origine dans les régions 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 au moins
0.1(10 %) de leur surface d'origine dans la région collée sont conservés. - Ce seuil minimal de surface de la boîte englobante ne peut pas être modifié avec l'implémentation actuelle et est défini sur
0.1par défaut.
Première image, cutmix désactivé | Deuxième image, cutmix désactivé | cutmix sur |
|---|---|---|
![]() | ![]() | ![]() |
Augmentations spécifiques à la segmentation
Copier-Coller (copy_paste)
- Plage:
0.0-1.0 - Par défaut:
0.0 - Utilisation: Fonctionne uniquement pour les tâches de segmentation. Cette augmentation copie les objets à l'intérieur ou entre les images en fonction d'une probabilité spécifiée, contrôlée par le
copy_paste_mode. Lecopy_pastel'hyperparamètre définit la probabilité d'application de la transformation, aveccopy_paste=1.0garantissant que toutes les images sont copiées etcopy_paste=0.0désactiver la transformation. Par exemple, aveccopy_paste=0.5, chaque image a 50 % de chances de voir des objets copiés 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 de défauts industriels où certains types de défauts apparaissent rarement, l'augmentation par copier-coller peut augmenter artificiellement l'occurrence de ces défauts rares en les copiant d'une image à une 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, le
copy_pastel'augmentation peut être utilisée pour copier des objets d'une image à une autre. - Une fois qu'un objet est copié, quel que soit le
copy_paste_mode, son Intersection over Area (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 l'un des IoA est supérieur à0.3, l'objet n'est pas collé dans l'image cible. - Le seuil d'IoA ne peut pas être modifié avec l'implémentation actuelle et est défini sur
0.3par défaut.
- Comme illustré dans le GIF ci-dessous, le
copy_paste désactivé | copy_paste continuer avec copy_paste_mode=flip | Visualiser le copy_paste processus |
|---|---|---|
![]() | ![]() | ![]() |
Mode Copier-Coller (copy_paste_mode)
- Options:
'flip','mixup' - Par défaut:
'flip' - Utilisation: Détermine la méthode utilisée pour copier-coller augmentation. Si défini sur
'flip', les objets proviennent de la même image, tandis que'mixup'permet de copier des objets à partir de différentes images. - Objectif : Permet une flexibilité dans la façon 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
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.
- Selon la qualité des annotations de polygones, 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
| Image de référence | Image choisie pour copy_paste | copy_paste continuer 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. Le
'randaugment'option utilise RandAugment,'autoaugment'utilise AutoAugment, et'augmix'utilise AugMix. Définition 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 d'ensembles de données tels qu'ImageNet, CIFAR10 et SVHN. Les utilisateurs peuvent sélectionner ces politiques existantes, mais ne peuvent pas en former de nouvelles dans Torchvision. Pour découvrir des stratégies d'augmentation optimales pour des ensembles de données spécifiques, des bibliothèques externes ou des implémentations personnalisées seraient nécessaires. Référence au document 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 approfondie, ce qui la rend plus efficace sur le plan du calcul tout en améliorant la robustesse du modèle. Référence à l’article de 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’image grâce à des combinaisons aléatoires de transformations simples. Référence à l’article AugMix.
- Implémentation d’Ultralytics : classify_augmentations()
- Remarque:
- Essentiellement, la principale différence entre les trois méthodes réside dans la manière dont les politiques d'augmentation sont définies et appliquées.
- Vous pouvez vous référer à cet article qui compare les trois méthodes en détail.
Effacement aléatoire (erasing)
- Plage:
0.0-0.9 - Par défaut:
0.4 - Utilisation: Efface aléatoirement des portions de l'image pendant l'entraînement à la classification. Le
erasingl'hyperparamètre définit la probabilité d'application de la transformation, avecerasing=0.9garantissant que presque toutes les images sont effacées eterasing=0.0désactiver 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 la 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 aux occlusions partielles comme les lunettes de soleil, les masques faciaux ou d'autres objets qui pourraient couvrir partiellement les traits du visage. Cela améliore la performance dans le monde réel en forçant le modèle à identifier les individus en utilisant de multiples caractéristiques faciales plutôt que de dépendre uniquement de caractéristiques distinctives qui pourraient être masquées.
- Implémentation d’Ultralytics : classify_augmentations()
- Remarque:
- L'argument
erasingl'augmentation est fournie avec unscale,ratio, etvaluehyperparamètres qui ne peuvent pas être modifiés avec le implémentation actuelle. Leurs valeurs par défaut sont(0.02, 0.33),(0.3, 3.3), et0, respectivement, comme indiqué dans PyTorch. documentation. - La limite supérieure de la
erasingl'hyperparamètre est défini sur0.9pour éviter d'appliquer la transformation à toutes les images.
- L'argument
erasing désactivé | erasing activé (exemple 1) | erasing activé (exemple 2) | erasing activé (exemple 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Caractéristiques de l'augmentation avancée
Transformations des albuminations sur mesure (augmentations)
- Type:
listdes transformations d'Albumentations - Par défaut:
None - Utilisation: Permet de fournir des transformations Albumentations personnalisées pour l'augmentation des données à l'aide de l'API Python . Ce paramètre accepte une liste d'objets de transformation d'Albumentations qui seront appliqués pendant l'entraînement à la place des transformations d'Albumentations par défaut.
- Objectif: Permet de contrôler finement les stratégies d'augmentation des données en exploitant la vaste bibliothèque de transformations d'Albumentations. Ceci est particulièrement utile lorsque vous avez 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 à un domaine.
- Mise en œuvre d'Ultralytics: Albumentations
Exemple d'albumentations personnalisées
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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,
)
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Define advanced custom Albumentations transforms with specific parameters
advanced_transforms = [
A.OneOf(
[
A.MotionBlur(blur_limit=7, p=1.0),
A.MedianBlur(blur_limit=7, p=1.0),
A.GaussianBlur(blur_limit=7, p=1.0),
],
p=0.3,
),
A.OneOf(
[
A.GaussNoise(var_limit=(10.0, 50.0), p=1.0),
A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
],
p=0.2,
),
A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, brightness_by_max=True, p=0.5),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
A.CoarseDropout(
max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=0, p=0.2
),
]
# Train with advanced custom transforms
model.train(
data="coco8.yaml",
epochs=100,
augmentations=advanced_transforms,
imgsz=640,
)
Points clés :
- APIPython uniquement: Les transformations d'Albumentations personnalisées ne sont actuellement prises en charge que par l'API Python . Elles ne peuvent pas être spécifiées via les fichiers de configuration CLI ou YAML.
- Remplace les transformations par défaut: Lorsque vous fournissez des transformations personnalisées par l'intermédiaire de l'option
augmentationsils remplacent complètement les transformations par défaut d'Albumentations. Les augmentations par défaut de YOLO (commemosaic,hsv_h,hsv_s,degreesetc.) restent actives et sont appliquées indépendamment. - Compatibilité avec la boîte de délimitation: Soyez prudent lorsque vous utilisez des transformations spatiales (transformations qui modifient la géométrie de l'image). Ultralytics gère automatiquement les ajustements du cadre de délimitation, mais certaines transformations complexes peuvent nécessiter une configuration supplémentaire.
- Bibliothèque étendue: Albumentations propose plus de 70 transformateurs différents. Explorez la documentation d'Albumentations pour découvrir toutes les options disponibles.
- Considération des performances: L'ajout d'un trop grand nombre d'augmentations ou l'utilisation de transformations coûteuses en termes de calcul peut ralentir la formation. Commencez par un petit ensemble et surveillez la vitesse d'apprentissage.
Cas d'utilisation courants :
- Imagerie médicale: Appliquer des transformations spécialisées telles que les déformations élastiques ou les distorsions de grille pour l'amélioration des images radiographiques ou IRM.
- Imagerie aérienne/satellite: Utiliser des transformations optimisées pour les perspectives aériennes
- Conditions de faible luminosité: Appliquez des ajustements de bruit et de luminosité pour simuler des conditions d'éclairage difficiles.
- Inspection industrielle: Ajouter des motifs de type défaut ou des variations de texture pour les applications de contrôle de la qualité
Notes de compatibilité :
- Nécessite la version 1.0.3 d'Albumentations ou une version plus récente.
- Compatible avec toutes les tâches de détection et de segmentation de YOLO
- Non applicable aux tâches de classification (la classification utilise un pipeline d'augmentation différent)
Pour plus d'informations sur les Albumentations et les transformations disponibles, consultez la documentation officielle des Albumentations.
FAQ
Il y a trop d'augmentations au choix. Comment savoir lesquelles utiliser ?
Le choix des bonnes augmentations dépend de votre cas d'utilisation et de votre ensemble de données spécifiques. Voici quelques directives générales pour vous 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, ethsv_vsont 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é, vous pouvez probablement ignorer les transformations géométriques telles que
rotation,translation,scale,shear, ouperspective. Cependant, si l'angle de la caméra peut varier et que vous avez besoin que le modèle soit plus robuste, il est préférable de conserver ces augmentations. - Utilisez la
mosaicl'augmentation uniquement si le fait d'avoir des objets partiellement occlus ou plusieurs objets par image est acceptable et ne modifie pas la valeur de l'étiquette. Alternativement, vous pouvez conservermosaicactif mais augmenter leclose_mosaicvaleur pour le désactiver plus tôt dans le processus de formation.
En bref : restez simple. Commencez avec un petit ensemble d'augmentations et ajoutez-en progressivement au besoin. L'objectif est d'améliorer la généralisation et la robustesse du modèle, et non de compliquer excessivement le processus d'entraînement. Assurez-vous également que les augmentations que vous appliquez reflètent la même distribution de données que celle que votre modèle rencontrera en production.
Lors du démarrage d'un entraînement, je vois un albumentations: Blur[...] référence. Cela signifie-t-il que Ultralytics YOLO exécute une augmentation supplémentaire comme le floutage ?
Si le albumentations package est 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.
Vous pouvez trouver la liste complète des transformations appliquées dans notre documentation technique, ainsi que dans notre Guide d’intégration d’Albumentations. Notez que seules les augmentations avec une probabilité p supérieur à 0 sont actifs. Ceux-ci sont appliqués intentionnellement à basses fréquences pour imiter les artefacts visuels du monde réel, tels que les effets de flou ou de niveaux de gris.
Vous pouvez également fournir vos propres transformations Albumentations personnalisées à l'aide de l'API Python . Voir la section Fonctionnalités d'augmentation avancées pour plus de détails.
Lors du démarrage d'un entraînement, je ne vois aucune référence à albumentations. Pourquoi ?
Vérifiez si le albumentations package est installé. Si ce n'est pas le cas, vous pouvez l'installer en exécutant pip install albumentations. Une fois installé, le paquet devrait être automatiquement détecté et utilisé par Ultralytics.
Comment puis-je personnaliser mes augmentations ?
Vous pouvez personnaliser les augmentations en créant une classe de dataset et un entraîneur personnalisés. Par exemple, vous pouvez remplacer les augmentations de classification Ultralytics par défaut par torchvision.transforms.Resize de PyTorch ou d’autres transformations. Consultez l’exemple d’entraînement personnalisé dans la documentation de classification pour plus de détails sur l’implémentation.
















































