Data Augmentation
La data augmentation est un ensemble de techniques qui augmentent artificiellement la taille et la diversité d’un dataset d’entraînement en créant des versions modifiées des données existantes, sans collecter de nouvelles données.
Vous avez un dataset trop petit et votre modèle fait de l’overfitting ? La data augmentation est votre premier levier. En appliquant des transformations contrôlées (rotation d’image, remplacement de synonymes, ajout de bruit audio), vous multipliez les exemples d’entraînement tout en préservant leur sens. Résultat : un modèle qui généralise mieux, sans le coût de collecte et d’annotation de nouvelles données.
- Catégorie
- Technique de préparation de données en machine learning
- Objectif
- Augmenter la taille et la diversité du dataset, réduire l’overfitting
- Modalités
- Image, texte, audio, vidéo, données tabulaires, séries temporelles
- Outils image
- Albumentations, TorchVision v2, Keras ImageDataGenerator, Kornia
- Outils texte
- nlpaug, TextAttack, LLM (GPT, Claude) via prompting
- Appliquée sur
- Le training set uniquement (jamais sur le test set)
Pourquoi la data augmentation est indispensable
Les modèles de deep learning, en particulier les CNN et les Transformers, sont gourmands en données. Plus le modèle est complexe, plus il a besoin d’exemples diversifiés pour apprendre des patterns généralisables plutôt que de mémoriser les données d’entraînement. Or, collecter et annoter des données coûte cher et prend du temps. La data augmentation résout ce problème de trois façons.
Réduction de l’overfitting. Quand un modèle voit exactement les mêmes images des centaines de fois, il finit par mémoriser des artefacts spécifiques (position, éclairage, angle) au lieu d’apprendre les features discriminantes. En introduisant des variations contrôlées, vous forcez le modèle à se concentrer sur ce qui compte vraiment. Des études montrent qu’un simple ajout de rotations et flips peut améliorer l’AUC d’un modèle de classification de 2 à 3 points, et les gains sont encore plus spectaculaires quand les données d’origine sont bruitées.
Compensation du manque de données. En imagerie médicale, en robotique, en véhicules autonomes, les datasets labelisés sont rares et chers. La data augmentation permet de transformer 1 000 images annotées en 10 000 variantes exploitables, ce qui peut faire la différence entre un modèle inutilisable et un modèle déployable.
Rééquilibrage des classes. Pour les datasets déséquilibrés (95% de cas négatifs, 5% de cas positifs), l’augmentation ciblée des classes minoritaires via des techniques comme SMOTE aide le modèle à mieux détecter les cas rares. C’est essentiel en détection de fraude, diagnostic médical ou maintenance prédictive.
Data augmentation vs données synthétiques
Les deux concepts sont liés mais distincts. La data augmentation crée des variantes à partir de données existantes : vous partez d’une image réelle et vous la retournez, la recadrez, modifiez ses couleurs. L’image originale reste reconnaissable. Les données synthétiques, elles, sont générées de toute pièce par un modèle (GAN, LLM, simulateur 3D) sans correspondance directe avec une donnée réelle spécifique.
En pratique, les deux approches se combinent : vous augmentez vos données réelles pour gagner en diversité, et vous ajoutez des données synthétiques pour couvrir des scénarios absents de votre dataset original. L’important est de toujours valider l’impact sur les métriques de performance, car une augmentation mal calibrée peut dégrader les résultats.
Techniques pour les images
Le domaine de la computer vision est celui où la data augmentation a été le plus étudiée et le plus systématisée. Les techniques se répartissent en quatre grandes catégories.
Transformations géométriques
Ces transformations modifient la géométrie spatiale de l’image sans toucher aux pixels eux-mêmes.
| Technique | Description | Cas d’usage typique |
|---|---|---|
| Flip horizontal/vertical | Retourner l’image comme un miroir | Classification d’objets, détection (sauf si l’orientation a un sens, comme le texte) |
| Rotation | Pivoter de quelques degrés (±10-30°) | Reconnaissance d’objets sous différents angles |
| Crop aléatoire | Extraire une sous-région de l’image | Forcer le modèle à détecter des features locales |
| Scaling | Redimensionner avec un facteur variable | Détection d’objets à différentes distances |
| Translation | Décaler l’image horizontalement ou verticalement | Rendre le modèle invariant à la position de l’objet |
| Distorsion élastique | Appliquer une déformation non linéaire | Reconnaissance d’écriture manuscrite, imagerie médicale |
Transformations photométriques (pixel-level)
Ces transformations modifient les valeurs des pixels sans changer la géométrie.
Ajustements de luminosité et contraste. Simuler des conditions d’éclairage variées (intérieur sombre, extérieur ensoleillé). Indispensable pour les modèles déployés dans des environnements à éclairage variable.
Color jittering. Modifier aléatoirement la teinte, la saturation et la luminosité. Rend le modèle robuste aux variations de couleur entre appareils photo ou conditions de prise de vue.
Ajout de bruit. Injecter du bruit gaussien ou « sel et poivre » simule les imperfections capteur (granulosité, pixels morts). Particulièrement utile pour l’imagerie en conditions difficiles (faible luminosité, caméras de surveillance).
Filtres et flou. Appliquer un flou gaussien ou un filtre de netteté simule différentes qualités d’optique. Le motion blur simule le mouvement de la caméra ou du sujet.
Techniques d’effacement et de mixage
Ces méthodes plus avancées manipulent des régions ou combinent plusieurs images.
Random Erasing (Cutout). Masquer aléatoirement une zone rectangulaire de l’image force le modèle à ne pas s’appuyer sur une seule région pour sa décision. Si votre modèle de classification de chats se base uniquement sur les oreilles, un cutout sur les oreilles l’oblige à aussi apprendre les pattes, la queue, le pelage.
CutMix. Découper une zone d’une image et la coller sur une autre, en ajustant les labels proportionnellement. Si vous collez 30% d’une image « chat » sur une image « chien », le label devient 30% chat, 70% chien. Cette technique produit des gains significatifs quand les méthodes classiques plafonnent.
MixUp. Fusionner deux images par interpolation linéaire (par exemple, 0,7 × image_A + 0,3 × image_B) avec des labels mixés. Cela lisse les frontières de décision et réduit la surconfiance du modèle.
Augmentation apprise (learned augmentation)
Plutôt que de définir manuellement les transformations, ces méthodes laissent un algorithme trouver la stratégie d’augmentation optimale.
AutoAugment (Google). Utilise un algorithme de recherche (reinforcement learning) pour identifier la meilleure combinaison de transformations parmi un espace de possibilités. Le résultat est une politique d’augmentation spécifique au dataset.
RandAugment. Version simplifiée d’AutoAugment qui ne nécessite que deux hyperparamètres : le nombre de transformations appliquées (N) et l’intensité (M). Plus simple à utiliser et presque aussi performant.
Augmentation par GAN. Un réseau antagoniste génératif apprend la distribution des images réelles et génère de nouveaux exemples réalistes. Cette approche est particulièrement prometteuse en imagerie médicale, où les données sont rares et les GAN peuvent générer des images de pathologies réalistes pour enrichir le dataset.
Techniques pour le texte (NLP)
L’augmentation de texte est plus délicate que l’augmentation d’images, car une modification même minime peut changer le sens d’une phrase. Les approches se sont considérablement enrichies avec l’arrivée des LLM.
Techniques classiques
Remplacement de synonymes. Remplacer certains mots par des synonymes (via WordNet ou des embeddings) tout en conservant le label. « Le film était excellent » → « Le film était remarquable ». Simple mais limité : les synonymes parfaits sont rares et le remplacement peut introduire des nuances non souhaitées.
Insertion/suppression/permutation aléatoire. Ajouter un mot aléatoire, supprimer un mot ou permuter l’ordre de deux mots adjacents. Ces perturbations mineures créent de la diversité tout en préservant globalement le sens. Ce sont les techniques EDA (Easy Data Augmentation), simples à implémenter et efficaces sur les petits datasets.
Back-translation. Traduire le texte vers une langue intermédiaire, puis le retraduire vers la langue d’origine. « Le chat dort sur le canapé » → (en anglais) « The cat sleeps on the sofa » → « Le chat sommeille sur le sofa ». La traduction aller-retour produit naturellement des paraphrases tout en préservant le sens. Des études récentes montrent que cette technique peut améliorer le F1-score de 12% en classification multilingue.
Augmentation par LLM
L’utilisation de LLM pour la data augmentation est une tendance majeure. Plusieurs approches coexistent.
Paraphrase par prompt. Demander à un LLM (GPT, Claude, Mistral) de reformuler un texte tout en préservant son sens et son label. C’est la méthode la plus directe. Un prompt du type « Reformulez cette phrase de 5 façons différentes en préservant le sentiment positif » produit des variantes naturelles et diversifiées.
Génération zero-shot. Demander au LLM de générer de nouveaux exemples à partir d’une simple description de la tâche, sans lui montrer de données existantes. Moins fidèle au style des données originales, mais excellent pour couvrir des cas que votre dataset ne contient pas.
Génération few-shot. Fournir quelques exemples au LLM et lui demander d’en produire de nouveaux similaires. Le bon équilibre entre diversité et fidélité au format original.
Techniques pour l’audio
L’augmentation audio est essentielle pour les tâches de reconnaissance vocale, de classification de sons et d’identification de locuteurs.
| Technique | Description | Effet |
|---|---|---|
| Ajout de bruit | Superposer du bruit ambiant (rue, café, bureau) | Robustesse aux environnements bruités |
| Pitch shifting | Modifier la hauteur tonale sans changer la durée | Variabilité des voix (graves/aiguës) |
| Time stretching | Accélérer ou ralentir sans modifier la hauteur | Robustesse au débit de parole |
| Time shifting | Décaler le signal dans le temps | Invariance à la position du début de parole |
| Réverbération | Simuler l’écho de différents environnements acoustiques | Généralisation entre pièces/appareils |
| Masquage spectral | Masquer des bandes de fréquence (SpecAugment) | Forcer le modèle à exploiter tout le spectre |
La technique SpecAugment, introduite par Google, est devenue un standard en reconnaissance vocale. Elle applique des masques temporels et fréquentiels directement sur le spectrogramme mel, ce qui est très efficace et computationnellement peu coûteux.
Techniques pour les données tabulaires
L’augmentation de données tabulaires est moins courante mais utile pour les datasets déséquilibrés en finance, santé et détection de fraude.
SMOTE (Synthetic Minority Oversampling Technique). La technique la plus populaire. SMOTE génère de nouveaux exemples synthétiques de la classe minoritaire en interpolant entre des exemples existants proches dans l’espace des features. Concrètement, il prend un exemple minoritaire, trouve ses k plus proches voisins (également minoritaires), et crée un nouvel exemple quelque part sur le segment reliant les deux points.
ADASYN. Variante adaptative de SMOTE qui génère plus d’exemples synthétiques dans les zones où la classe minoritaire est la plus difficile à classifier (frontière de décision). Plus ciblé que SMOTE, mais aussi plus sensible au bruit.
CTGAN. Un GAN conditionnel spécifiquement conçu pour les données tabulaires. Il apprend les corrélations entre colonnes (ce que SMOTE ne fait pas) et génère des lignes synthétiques réalistes. Particulièrement performant quand les features ont des distributions complexes ou des dépendances non linéaires.
Injection de bruit. Ajouter une perturbation gaussienne faible aux features numériques. Simple, rapide, mais ne résout pas les problèmes de déséquilibre de classes.
Techniques pour les séries temporelles
Les séries temporelles (données IoT, signaux médicaux, cours financiers) ont des contraintes spécifiques : l’ordre des points a un sens, et les transformations ne doivent pas briser la structure temporelle.
Window slicing. Extraire des sous-séquences chevauchantes pour multiplier les exemples. Simple et efficace, surtout pour les séquences longues.
Jittering. Ajouter un bruit gaussien faible pour simuler l’instabilité des capteurs. Fonctionne bien avec les données d’accéléromètre, d’ECG ou de capteurs industriels.
Magnitude warping. Modifier l’amplitude du signal par multiplication avec une courbe lisse aléatoire. Simule des variations de sensibilité capteur.
Time warping. Déformer l’axe temporel de façon non linéaire (accélérer certaines portions, ralentir d’autres). Simule les variations naturelles de rythme dans les signaux biologiques.
Bootstrapping. Rééchantillonner avec remplacement des segments du signal. Efficace avec les signaux ECG ou les données d’accéléromètre quand le dataset est très petit.
Outils et bibliothèques
Voici les outils les plus utilisés par modalité, avec une recommandation claire pour chaque cas.
Image
| Outil | Langage | Points forts | Verdict |
|---|---|---|---|
| Albumentations | Python | Plus de 100 transformations, ~2,5× plus rapide que TorchVision, supporte images + masks + bboxes + keypoints + volumes 3D | Recommandé |
| TorchVision v2 | Python (PyTorch) | Intégration native PyTorch, API simple, suffisant pour les transformations standards | Bon choix si tout-PyTorch |
| Kornia | Python (PyTorch) | Augmentations sur GPU, différentiables, utile pour les recherches sur l’augmentation apprise | Niche (GPU-only) |
| Keras ImageDataGenerator | Python (TF/Keras) | Intégration TensorFlow native | Legacy |
Pour la majorité des projets de computer vision, Albumentations est le choix par défaut. La bibliothèque propose plus de 100 transformations, gère nativement la synchronisation entre images, masques de segmentation, bounding boxes et keypoints, et offre des performances nettement supérieures à TorchVision (environ 2,5× plus rapide selon les benchmarks). Elle est compatible avec PyTorch, TensorFlow et JAX.
Texte
nlpaug. Bibliothèque Python qui regroupe les techniques classiques d’augmentation textuelle : remplacement de synonymes (via WordNet ou word embeddings), insertion/suppression/permutation, back-translation. Simple à utiliser, idéale pour le prototypage.
TextAttack. Framework orienté adversarial NLP qui inclut des méthodes d’augmentation de texte (remplacement de mots, paraphrase). Aussi utilisé pour tester la robustesse des modèles NLP face aux perturbations.
LLM via API. Utiliser l’API d’un LLM (Claude, GPT, Mistral) pour générer des paraphrases ou de nouveaux exemples à la volée. Plus coûteux que les méthodes locales, mais produit des textes d’une qualité et d’une diversité supérieures. Le coût est devenu très abordable avec les modèles économiques comme Haiku ou GPT-4o mini.
Audio
audiomentations. L’équivalent d’Albumentations pour l’audio. Supporte l’ajout de bruit, le time stretch, le pitch shift et d’autres transformations avec une API composable. Compatible avec PyTorch et TensorFlow.
torchaudio. Inclut des transformations audio (SpecAugment, time/frequency masking) nativement intégrées à l’écosystème PyTorch.
Implémentation pratique
Voici comment implémenter une pipeline d’augmentation d’images avec Albumentations et PyTorch.
import albumentations as A
from albumentations.pytorch import ToTensorV2
# Définir la pipeline d'augmentation pour le training
train_transform = A.Compose([
A.HorizontalFlip(p=0.5),
A.Rotate(limit=15, p=0.5),
A.RandomBrightnessContrast(
brightness_limit=0.2,
contrast_limit=0.2,
p=0.5
),
A.GaussNoise(var_limit=(10, 50), p=0.3),
A.CoarseDropout(
num_holes_range=(1, 3),
hole_height_range=(0.1, 0.2),
hole_width_range=(0.1, 0.2),
p=0.3
),
A.Normalize(
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]
),
ToTensorV2(),
])
# Pipeline pour la validation : PAS d'augmentation
val_transform = A.Compose([
A.Normalize(
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]
),
ToTensorV2(),
])
Et un exemple d’augmentation de texte avec un LLM via l’API :
# Augmentation de texte par paraphrase LLM
import anthropic
client = anthropic.Anthropic()
def augment_text(text: str, label: str, n_variants: int = 5) -> list:
"""Génère n variantes d'un texte en préservant le label."""
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=1024,
messages=[{
"role": "user",
"content": (
f"Reformulez cette phrase {n_variants} fois en "
f"préservant le sentiment ({label}). "
f"Variez le style, la longueur et le vocabulaire. "
f"Retournez uniquement les phrases, une par ligne.nn"
f'Phrase : "{text}"'
)
}]
)
return response.content[0].text.strip().split("n")
Bonnes pratiques
La data augmentation est puissante, mais mal utilisée, elle peut nuire à votre modèle. Voici les règles à suivre.
Augmentez uniquement le training set. Le validation set et le test set doivent refléter les données réelles, sans transformation artificielle. C’est la base, et pourtant cette erreur est fréquente chez les débutants.
Commencez simple, complexifiez progressivement. Les transformations géométriques basiques (flip, rotation, crop) donnent souvent l’essentiel du gain. Ajoutez CutMix, MixUp ou des augmentations apprises seulement si vous constatez encore de l’overfitting après les transformations simples.
Calibrez l’intensité. Une rotation de ±5° est réaliste pour la détection d’objets sur route. Une rotation de ±180° ne l’est pas. L’intensité de l’augmentation doit correspondre aux variations que votre modèle rencontrera en production. Des augmentations trop agressives produisent des exemples irréalistes qui confondent le modèle.
Respectez la sémantique. Un flip horizontal d’un chiffre « 6 » produit un « 6 » inversé qui pourrait ressembler à un « 9 ». Une permutation de mots dans un texte juridique peut en changer le sens. Chaque transformation doit préserver la validité du label.
Mesurez toujours l’impact. Toute stratégie d’augmentation doit être validée sur le validation set. Comparez systématiquement les courbes de training et de validation avec et sans augmentation. Si l’augmentation n’améliore pas la validation (ou la dégrade), supprimez-la.
Augmentez à la volée (online) plutôt qu’en amont (offline). L’augmentation online applique les transformations aléatoirement à chaque epoch : le modèle ne voit jamais exactement la même version d’un exemple deux fois. C’est plus efficace que de pré-calculer un dataset augmenté statique, et ça ne consomme pas d’espace disque supplémentaire.
Cas d’usage concrets
Imagerie médicale
L’imagerie médicale est le domaine où la data augmentation a le plus d’impact. Les datasets sont petits (quelques centaines à quelques milliers d’images), l’annotation nécessite des experts (radiologues, pathologistes), et les données sont soumises à des contraintes de confidentialité strictes (RGPD, HIPAA). Les techniques les plus efficaces dans ce contexte combinent des transformations géométriques (rotation, flip, élastic distortion) avec des GAN pour générer des images synthétiques de pathologies. Des résultats publiés montrent des gains de 10 à 20% de précision en classification de tumeurs grâce à l’augmentation.
Véhicules autonomes
Les systèmes de conduite autonome doivent fonctionner dans des conditions météorologiques et d’éclairage très variées. La data augmentation simule la pluie, le brouillard, la neige, les reflets du soleil, la nuit. Des environnements de simulation comme CARLA ou Nvidia DRIVE Sim génèrent des scénarios synthétiques complets (augmentation + données synthétiques) pour entraîner les modèles de perception.
NLP en langues peu dotées
Pour les langues disposant de peu de données annotées, la back-translation et l’augmentation par LLM sont des stratégies clés. Un modèle de classification d’intentions pour un chatbot en swahili ou en breton, par exemple, peut tirer un bénéfice majeur de la génération de variantes par un LLM multilingue, combinée à de la back-translation via plusieurs langues pivots.
Limites et pièges
La data augmentation n’est pas une solution miracle. Voici ses limites principales.
Amplification des biais. Si votre dataset d’origine est biaisé (sous-représentation de certaines catégories, biais de labellisation), l’augmentation amplifie ces biais. Augmenter un dataset biaisé produit un dataset plus gros mais toujours biaisé. Auditez les biais avant d’augmenter.
Pas un substitut à plus de données réelles. Un modèle entraîné sur 100 images augmentées en 10 000 ne rivalisera pas avec un modèle entraîné sur 10 000 images réelles diversifiées. L’augmentation crée de la variété locale, pas de la diversité fondamentale. Si vous pouvez collecter plus de données réelles, faites-le.
Coût de l’optimisation. Trouver la bonne stratégie d’augmentation (quelles transformations, avec quelle intensité, à quelle probabilité) est un processus d’essai-erreur qui prend du temps. Les méthodes d’augmentation apprise (AutoAugment, RandAugment) aident, mais elles ajoutent de la complexité et du coût computationnel.
Risque de dégradation. Des augmentations trop agressives ou inadaptées au domaine peuvent dégrader les performances. Un blur excessif sur des images médicales haute résolution, par exemple, efface les détails fins que le modèle doit justement apprendre à détecter.
Questions fréquentes sur la data augmentation
La data augmentation fonctionne-t-elle avec tous les types de modèles ?
Elle est surtout efficace avec les modèles de deep learning (CNN, Transformers, RNN) qui bénéficient le plus de grands volumes de données diversifiées. Pour les modèles classiques de machine learning (random forest, SVM, régression logistique), l’augmentation de données tabulaires (SMOTE, injection de bruit) peut aider dans les cas de déséquilibre de classes, mais l’impact est généralement plus modéré. La raison : les modèles de deep learning ont suffisamment de paramètres pour exploiter la diversité additionnelle, alors que les modèles plus simples sont déjà contraints par leur architecture.
Combien faut-il augmenter son dataset ?
Il n’y a pas de facteur multiplicateur universel. En augmentation online (la recommandation par défaut), la question ne se pose pas : chaque image est transformée aléatoirement à chaque passage, donc le modèle voit des variantes infinies au fil des epochs. En augmentation offline, un facteur de 5 à 10× est un bon point de départ. Mais l’important est de monitorer les courbes de validation : si la performance de validation cesse de s’améliorer alors que le training continue à progresser, vous avez probablement un bon niveau d’augmentation. Si la validation se dégrade, réduisez l’intensité ou changez de stratégie.
Peut-on utiliser ChatGPT ou Claude pour augmenter des données texte ?
Oui, c’est même l’une des approches les plus efficaces aujourd’hui. Les LLM produisent des paraphrases naturelles et diversifiées, largement supérieures aux techniques de remplacement de synonymes. Le coût est devenu très accessible avec les modèles économiques (Claude Haiku, GPT-4o mini). L’approche classique : envoyez vos exemples au LLM avec un prompt demandant des reformulations qui préservent le label. Attention cependant : validez toujours que les textes générés sont bien cohérents avec les labels attendus, car un LLM peut parfois altérer subtilement le sens.
Quelle est la différence entre data augmentation et régularisation ?
Les deux luttent contre l’overfitting, mais par des mécanismes différents. La data augmentation agit sur les données en augmentant la diversité du training set. La régularisation agit sur le modèle en contraignant sa complexité (dropout, weight decay, early stopping). En pratique, elles sont complémentaires : vous appliquez la data augmentation sur vos données ET de la régularisation sur votre modèle pour un effet combiné maximal contre l’overfitting.
Faut-il augmenter les données quand on fait du transfer learning ?
Oui, même avec le transfer learning. Le modèle pré-entraîné apporte des features génériques (contours, textures, formes), mais le fine-tuning sur votre dataset spécifique bénéficie toujours de la diversité apportée par l’augmentation. C’est d’autant plus vrai que les datasets de fine-tuning sont généralement petits. Un CNN pré-entraîné sur ImageNet et fine-tuné avec augmentation sur 500 images de votre domaine donnera de bien meilleurs résultats que le même modèle fine-tuné sans augmentation.