CV2 et data augmentation
Dans cette page tu découvriras comment augmenter ton dataset avec la data-augmentation
Data augmentation
C’est quoi ?
- Je la mets en miroir horizontal? vertical? Les deux?
- Je la tourne légèrement dans un sens ou dans l’autre ?
- Si je la floute légèrement etc…
Tout cela permet de produire plus d’images à partir des mêmes images en base de donnée et d’étendre les données d’apprentissage.
Pour mettre cela en place nous allons pouvoir ajouter quelques couches de pré-traitement des images à notre réseau de neurones.
Exemple
Voici un petit exemple de deux couches qui permettent des rotations et miroir :
- Le flip permet de retourner l’image verticalement et/ou horizontalement
- La rotation permet de tourner d’un certain pourcentage de cercle
from keras.layers import RandomFlip, RandomRotation
model = Sequential()
model.add(RandomFlip(« horizontal_and_vertical »))
model.add(RandomRotation(0.5))
A la suite de ces couches tu peux ajouter tout le reste du réseau.
Une seule petite différence : après avoir ajouté toutes les couches, tu devras build ton modèle en précisant l’input_shape.
# Après toutes les couches du réseau :
model.build(input_shape=(batch_size,hauteur,largeur,couleur))
model.summary()
L’input shape est augmentée d’une dimension en 1ère position qui correspond à la batch_size
Tu trouveras dans ce fichier exemple différentes utilisation de ces couches et comment les visualiser
Documentation
Tu peux retrouver la doc complète des fonctions RandomRotation et RandomFlip
Il existe plein d’autres couches utilisables pour modifier les images :
- Luminosité RandomBrigthness
- Contraste RandomConstrast
- Découpe RandomCrop
- Découpe au centre CenterCrop
- Hauteur RandomHeight
- Translation RandomTranslation
- Largeur RandomWidth
- Zoom RandomZoom
Il est également possible d’intégrer directement le resize et le changement d’échelle (transformation des pixels entre 0 et 255 en des valeurs entre 0 et 1)