Augmentation de données
Pour une IA, une photo n’est pas une image, c’est uniquement une grille de pixels fixes. Si on lui montre seulement des photos où le fruit est parfaitement au centre, l’ordinateur va déduire que “pour être une pomme, l’objet doit obligatoirement se trouver pile au milieu”. Si on lui montre ensuite la même pomme décalée sur le côté, il sera incapable de la reconnaître, car les couleurs ne sont plus au même endroit sur sa grille.
L’augmentation de données sert à casser ces mauvaises habitudes pour forcer l’ordinateur à se concentrer sur ce qui compte vraiment. Au lieu de prendre des milliers de nouvelles photos, on prend celles qu’on a déjà et on les modifie artificiellement :
- Le basculement : On inverse la gauche et la droite (comme dans un miroir).
- La rotation : On tourne l’image pour que l’objet soit penché.
- La translation : On décale le contenu pour qu’il ne soit plus au centre.
- La mise à l’échelle : On zoome légèrement sur l’objet.
- Le bruit : On ajoute des petits défauts visuels ou du grain.
En bombardant le programme avec toutes ces variations d’une même image, il est obligé d’arrêter d’apprendre la position des pixels par cœur. Il finit par comprendre la véritable forme et texture de l’objet, peu importe comment il est présenté à l’écran.
Le script d’augmentation de données est développé en Python et s’appuie sur l’écosystème PyTorch, plus précisément sur le module torchvision. Le pipeline de traitement commence par la lecture des fichiers via la bibliothèque Pillow (PIL), qui charge les images en mémoire. Celles-ci passent ensuite à travers une série d’étapes probabilistes définie par torchvision.transforms.Compose.
Au lieu d’appliquer des modifications statiques, ce pipeline utilise des transformations aléatoires : RandomRotation pour les angles, RandomAfine pour la translation et la mise à l’échelle, ainsi que RandomHorizontalFlip pour le basculement horizontal. L’injection de bruit gaussien nécessite une manipulation de plus bas niveau : l’image est d’abord convertie en tensor PyTorch (ToTensor) , ce qui permet d’additionner une matrice de bruit générée par la fonction torch.randn directement aux valeurs numériques des pixels. Le résultat est contraint via torch.clamp pour éviter les aberrations (en gardant les valeurs entre 0 et 1), puis reconverti en image standard (ToPILImage).
Cette exécution aléatoire garantit que chaque passage d’une image génère des features uniques, maximisant ainsi la variance spatiale de votre dataset d’entraînement sans nécessiter de nouvelles acquisitions.
Voici des exemples des augmentations de données fait (Avant / Après):
Basculement
Rotation
Translation
Mise à l’échelle
Bruit
Lien vers le projet Github: https://github.com/HoraceTheOgre/Apples-And-Oranges-Data-Augmentation