Augmentation de données avec Ultralytics YOLO
Introduction
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 (overfitting) et améliore la généralisation à des scénarios réels.
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 remplit plusieurs objectifs critiques dans l'entraînement de modèles de vision par ordinateur :
- Jeu de données étendu : En créant des variations 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, ce qui les rend plus robustes dans les applications réelles.
- 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 remplissant 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.
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="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)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 est requis uniquement 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.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 - Défaut :
0.015 - Utilisation : Décale 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 au hasard entre-hsv_hethsv_h. Par exemple, avechsv_h=0.3, le décalage est sélectionné au hasard entre-0.3et0.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 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 en 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 - 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 au hasard entre-hsv_sethsv_s. Par exemple, avechsv_s=0.7, l'intensité est sélectionnée au hasard 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 lors d'une journée ensoleillée mais sembler 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 - Défaut :
0.4 - Utilisation : Change la luminosité de l'image. L'hyperparamètre
hsv_vdéfinit l'amplitude du décalage, l'ajustement final étant choisi au hasard entre-hsv_vethsv_v. Par exemple, avechsv_v=0.4, l'intensité est sélectionnée au hasard 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 :
0.0à180 - 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 au hasard entre-degreesetdegrees. Par exemple, avecdegrees=10.0, la rotation est sélectionnée au hasard entre-10.0et10.0. - Objectif : Crucial pour les applications où les objets peuvent apparaître sous différentes orientations. Par exemple, dans l'imagerie par drone aérien, les véhicules peuvent être orientés dans n'importe quelle direction, obligeant les modèles à reconnaître les objets quelle que soit leur rotation.
- Implémentation d'Ultralytics : RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Translation (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
translatedéfinit l'amplitude du décalage, l'ajustement final étant choisi deux fois au hasard (une fois pour chaque axe) dans la plage-translateettranslate. Par exemple, avectranslate=0.5, la translation est sélectionnée au hasard entre-0.5et0.5sur 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 des 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 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 complétude ou de leur position.
- Implémentation d'Ultralytics : RandomPerspective
- Note : Pour plus de simplicité, les translations appliquées ci-dessous sont identiques à chaque fois pour les axes
xety. Les valeurs-1.0et1.0ne sont pas affichées car elles transporteraient l'image complètement hors du cadre.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Échelle (scale)
- Plage :
0.0-1.0 - Défaut :
0.5 - Utilisation : Redimensionne les images par un facteur aléatoire dans la plage spécifiée. L'hyperparamètre
scaledéfinit le facteur de mise à l'échelle, l'ajustement final étant choisi au hasard entre1-scaleet1+scale. Par exemple, avecscale=0.5, la mise à l'échelle est sélectionnée au hasard entre0.5et1.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, obligeant le modèle à les reconnaître quelle que soit leur taille.
- Implémentation d'Ultralytics : RandomPerspective
- Note :
- La valeur
-1.0n'est pas affichée car elle ferait disparaître l'image, tandis que1.0aboutit simplement à 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 soit très petite, soit inversée, car le facteur de mise à l'échelle est choisi au hasard entre1-scaleet1+scale. Par exemple, avecscale=3.0, la mise à l'échelle est sélectionnée au hasard entre-2.0et4.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 - Défaut :
0 - Utilisation : Introduit une transformation géométrique qui incline l'image le long des axes x et y, déplaçant efficacement certaines parties de l'image dans une direction tout en conservant les lignes parallèles. L'hyperparamètre
sheardéfinit l'angle de cisaillement, l'ajustement final étant choisi au hasard entre-shearetshear. Par exemple, avecshear=10.0, le cisaillement est sélectionné au hasard entre-10et10sur 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 routiers 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é ces distorsions obliques.
- Implémentation d'Ultralytics : RandomPerspective
- Note :
- 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 - Défaut :
0 - Utilisation : Applique une transformation de perspective complète sur les axes x et y, simulant l'apparence des objets vus sous différents angles ou profondeurs. L'hyperparamètre
perspectivedéfinit l'ampleur de la perspective, l'ajustement final étant choisi de manière aléatoire entre-perspectiveetperspective. Par exemple, avecperspective=0.001, la perspective est sélectionnée aléatoirement entre-0.001et0.001sur 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, notamment dans les scénarios où les objets semblent raccourcis ou déformés en raison de décalages de perspective. Par exemple, pour la détection d'objets par drone, les bâtiments, routes et véhicules peuvent paraître é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 induites, améliorant ainsi leur robustesse dans des déploiements réels.
- Implémentation d'Ultralytics : RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Retournement haut-bas (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.0ensuring that all images are flipped and a value offlipud=0.0disabling the transformation entirely. For example, withflipud=0.5, each image has a 50% chance of being flipped upside-down. - Objectif : Utile pour les scénarios où les objets peuvent apparaître à l'envers. Par exemple, dans les systèmes de vision robotique, les objets sur des tapis roulants ou des bras robotisés 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 gauche-droite (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 inverse 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, avecfliplr=1.0garantissant que toutes les images sont retournées etfliplr=0.0désactivant complètement la transformation. Par exemple, avecfliplr=0.5, chaque image a 50 % de chance 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 piétons peuvent apparaître des deux côtés 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é |
|---|---|
![]() | ![]() |
Permutation des canaux BGR (bgr)
- Plage :
0.0-1.0 - Défaut :
0 - Utilisation : Échange les canaux de couleur d'une image de RGB vers BGR, modifiant l'ordre dans lequel les couleurs sont représentées. L'hyperparamètre
bgrdéfinit la probabilité d'appliquer la transformation, avecbgr=1.0garantissant que toutes les images subissent la permutation etbgr=0.0la désactivant. Par exemple, avecbgr=0.5, chaque image a 50 % de chance d'être convertie de RGB vers 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 où les formats RGB et BGR peuvent être utilisés de manière inconsistante, ou lors du déploiement de modèles dans des environnements où le format de couleur d'entrée pourrait différer des données d'entraînement.
- Implémentation d'Ultralytics : Format
bgr désactivé | bgr activé |
|---|---|
![]() | ![]() |
Mosaïque (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, avecmosaic=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 chance d'être combinée avec trois autres images. - Objectif : Très efficace pour améliorer la détection de petits objets et la compréhension du contexte. Par exemple, dans les projets de conservation de la faune 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
- Note :
- Même si l'augmentation
mosaicrend le modèle plus robuste, elle peut également rendre le processus d'entraînement plus difficile. - L'augmentation
mosaicpeut être désactivée vers la fin de l'entraînement en réglantclose_mosaicsur le nombre d'époques avant la fin où elle doit être arrêtée. Par exemple, siepochsest réglé sur200etclose_mosaicsur20, l'augmentationmosaicsera désactivée après180époques. Siclose_mosaicest réglé sur0, l'augmentationmosaicsera activée pendant tout le 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 de l'augmentation
mosaiccombine 4 images choisies aléatoirement 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.
- Même si l'augmentation
mosaic désactivé | mosaic activé |
|---|---|
![]() | ![]() |
Mixup (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
mixupdéfinit la probabilité d'appliquer la transformation, avecmixup=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 chance 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, 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 encombrées.
- Implémentation d'Ultralytics : Mixup
- Note :
- Le ratio
mixupest une valeur aléatoire choisie à partir 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 ratio
Première image, mixup désactivé | Deuxième image, mixup désactivé | mixup activé |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)
- Plage :
0.0-1.0 - 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, aveccutmix=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 chance de voir une région remplacée par une pièce 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 complexes du monde réel avec des objets qui se chevauchent.
- Implémentation d'Ultralytics : CutMix
- Note :
- La taille et la position de la zone découpée sont déterminées aléatoirement pour chaque application.
- Contrairement au mixup qui mélange les valeurs de pixels globalement, le
cutmixmaintient les intensités de pixels originales au sein des zones 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 au moins
0.1(10 %) de leur zone originale au sein de la région collée sont conservées. - Ce seuil de zone de boîte englobante minimale ne peut pas être modifié avec l'implémentation actuelle et est réglé sur
0.1par défaut.
Première image, cutmix désactivé | Deuxième image, cutmix désactivé | cutmix activé |
|---|---|---|
![]() | ![]() | ![]() |
Augmentations spécifiques à la segmentation
Copy-Paste (copy_paste)
- Plage :
0.0-1.0 - Défaut :
0 - Utilisation : Fonctionne uniquement pour les tâches de segmentation. Cette augmentation copie des objets au sein ou entre des images selon une probabilité spécifiée, contrôlée par
copy_paste_mode. L'hyperparamètrecopy_pastedéfinit la probabilité d'appliquer la transformation, aveccopy_paste=1.0garantissant que toutes les images sont copiées etcopy_paste=0.0désactivant la transformation. Par exemple, aveccopy_paste=0.5, chaque image a 50 % de chance de voir des objets copiés depuis 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 peu fréquemment, l'augmentation copy-paste 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
- Note :
- Comme illustré dans le GIF ci-dessous, l'augmentation
copy_pastepeut ê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 un seul 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 réglé sur
0.3par défaut.
- Comme illustré dans le GIF ci-dessous, l'augmentation
copy_paste désactivé | copy_paste activé avec copy_paste_mode=flip | Visualiser le processus copy_paste |
|---|---|---|
![]() | ![]() | ![]() |
Mode Copy-Paste (copy_paste_mode)
- Options :
'flip','mixup' - Par défaut :
'flip' - Utilisation : Détermine la méthode utilisée pour l'augmentation copy-paste. S'il est réglé sur
'flip', les objets proviennent de la même image, tandis que'mixup'permet de copier des objets depuis différentes images. - Objectif : Offre une flexibilité dans la manière dont les objets copiés sont intégrés dans les images cibles.
- Implémentation d'Ultralytics : CopyPaste
- Note :
- Le principe IoA est le même pour les deux
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.
- Selon 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 IoA est le même pour les deux
| Image de référence | Image choisie pour copy_paste | copy_paste activé avec copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Augmentations spécifiques à la classification
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 qu'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 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 exhaustive, la rendant plus efficace sur le plan computationnel tout en améliorant la robustesse du modèle. Référence au document 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 AugMix.
- Implémentation d'Ultralytics : classify_augmentations()
- Note :
- 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.
- Tu peux consulter cet article qui compare les trois méthodes en détail.
Effacement 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 à la classification. L'hyperparamètre
erasingdéfinit la probabilité d'appliquer la transformation, avecerasing=0.9garantissant que presque toutes les images sont effacées eterasing=0.0désactivant la transformation. Par exemple, avecerasing=0.5, chaque image a 50 % de chances de voir une partie effacée. - Objectif : Aide les modèles à apprendre des caractéristiques robustes et évite une dépendance excessive à certaines régions de l'image. Par exemple, dans les systèmes de reconnaissance faciale, l'effacement aléatoire aide les modèles à être plus robustes face à des occlusions partielles comme des lunettes de soleil, des masques faciaux ou d'autres objets pouvant couvrir partiellement les traits du visage. Cela améliore les performances réelles en forçant le modèle à identifier les individus en utilisant plusieurs caractéristiques faciales plutôt que de dépendre uniquement de traits distinctifs qui pourraient être masqués.
- Implémentation d'Ultralytics : classify_augmentations()
- Note :
- L'augmentation
erasingest accompagnée des hyperparamètresscale,ratioetvaluequi 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)et0respectivement, comme indiqué dans la documentation de PyTorch. - La limite supérieure de l'hyperparamètre
erasingest fixée à0.9pour éviter d'appliquer la transformation à toutes les images.
- 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 de 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 au lieu des transformations Albumentations par défaut.
- Objectif : Offre un contrôle précis sur les stratégies d'augmentation de données en tirant parti de 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, comme des ajustements de couleur avancés, l'injection de bruit ou des transformations spécifiques au domaine.
- Implémentation d'Ultralytics : Albumentations
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 (commemosaic,hsv_h,hsv_s,degrees, etc.) restent actives et sont appliquées indépendamment. - Compatibilité des BBox : Sois prudent lors de l'utilisation de 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 par 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 aériennes
- 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.
FAQ
Il y a trop d'augmentations parmi lesquelles choisir. Comment savoir lesquelles utiliser ?
Le choix des bonnes augmentations 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 de
hsv_h,hsv_sethsv_vsont 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,shearouperspective. 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
mosaicuniquement si avoir des objets partiellement occlus ou plusieurs objets par image est acceptable et ne modifie pas la valeur de l'étiquette. Alternativement, tu peux gardermosaicactif mais augmenter la valeurclose_mosaicpour le désactiver plus tôt dans le processus d'entraînement.
En bref : garde les choses simples. Commence par 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.
Au début d'un entraînement, je vois une référence albumentations: Blur[...]. Est-ce 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'images 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 délibérément à faible fréquence pour imiter les artefacts visuels du monde réel, comme le flou ou les effets de niveaux de gris.
Tu peux également fournir tes propres transformations Albumentations personnalisées en utilisant l'API Python. Voir la section Fonctionnalités d'augmentation avancées pour plus de détails.
Au début 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.
Comment personnaliser mes augmentations ?
You can customize augmentations by creating a custom dataset class and trainer. For example, you can replace the default Ultralytics classification augmentations with PyTorch's torchvision.transforms.Resize or other transforms. See the custom training example in the classification documentation for implementation details.
















































