?>
L'action `augmentImages` est une fonctionnalité puissante du traitement d'images dans SAS Viya. Elle permet de créer des versions augmentées d'un jeu d'images en générant des 'patches' (imagettes) et en leur appliquant diverses mutations. Cette technique est fondamentale en apprentissage profond (deep learning) pour enrichir artificiellement les jeux de données, ce qui aide à améliorer la robustesse et la performance des modèles de vision par ordinateur en les exposant à une plus grande variété de scénarios (changements de luminosité, d'angle, de couleur, etc.).
| Paramètre | Description |
|---|---|
| addColumns | Spécifie des colonnes supplémentaires à ajouter à la table de sortie, comme les attributs d'augmentation. |
| augmentations | Définit la liste des options de recadrage et de mutation à appliquer aux images. |
| casOut | Spécifie la table de sortie pour stocker les images augmentées. |
| copyVars | Liste des variables à copier de la table d'entrée vers la table de sortie. |
| decode | Si TRUE, décode les images avant de les écrire dans la table de sortie. |
| image | Indique la colonne contenant les données binaires des images. Par défaut, '_image_'. |
| seed | Spécifie une graine pour la génération de nombres aléatoires, assurant la reproductibilité des augmentations aléatoires. |
| table | Spécifie la table d'entrée contenant les images à augmenter. |
| writeRandomly | Si TRUE, écrit les images résultantes dans la table de sortie de manière aléatoire. |
Avant d'utiliser `augmentImages`, il est nécessaire de charger les images dans une table CAS. Ce code montre comment charger des images depuis un chemin accessible par le serveur CAS dans une table nommée `myImages`.
1 PROC casutil; 2 load path="/chemin/vers/vos/images/" casout="myImages" importoptions=(fileType="IMAGE"); 3 QUIT;
Cet exemple applique une seule augmentation : un retournement horizontal sur l'ensemble de chaque image. C'est une des techniques d'augmentation les plus courantes.
| 1 | PROC CAS; |
| 2 | image.augmentImages / |
| 3 | TABLE={name='myImages'} |
| 4 | casOut={name='augmented_hflip', replace=true} |
| 5 | augmentations={{useWholeImage=true, mutations={horizontalFlip=true}}}; |
| 6 | QUIT; |
Ici, nous extrayons des patches de 224x224 pixels de chaque image et appliquons un retournement vertical à chacun de ces patches.
| 1 | PROC CAS; |
| 2 | image.augmentImages / |
| 3 | TABLE={name='myImages'} |
| 4 | casOut={name='augmented_patches_vflip', replace=true} |
| 5 | augmentations={{width=224, height=224, sweepImage=true, mutations={verticalFlip=true}}}; |
| 6 | QUIT; |
Cet exemple complexe génère des données d'entraînement enrichies. Pour chaque image, il crée des patches de 256x256, les redimensionne en 224x224, puis applique une série de mutations aléatoires : retournement horizontal, rotation aléatoire jusqu'à 30 degrés vers la gauche ou la droite, et un léger assombrissement. Une graine (seed) est utilisée pour garantir que les résultats aléatoires peuvent être reproduits.
| 1 | PROC CAS; |
| 2 | image.augmentImages / |
| 3 | TABLE={name='myImages'} |
| 4 | casOut={name='augmented_training_data', replace=true} |
| 5 | seed=1234 |
| 6 | augmentations={{ |
| 7 | sweepImage=true, width=256, height=256, outputWidth=224, outputHeight=224, |
| 8 | mutations={ |
| 9 | horizontalFlip=true, |
| 10 | rotateLeft={type='RANGE', value={0, 30}}, |
| 11 | rotateRight={type='RANGE', value={0, 30}}, |
| 12 | darken={type='RANGE', value={0.8, 1.0}} |
| 13 | } |
| 14 | }}; |
| 15 | QUIT; |
Cette technique avancée applique deux schémas d'augmentation distincts en une seule passe. La première crée des patches de 128x128 avec retournement horizontal. La seconde utilise l'image entière et applique une gigue de couleur (color jittering). Cela permet de générer un jeu de données encore plus varié.
| 1 | PROC CAS; |
| 2 | image.augmentImages / |
| 3 | TABLE={name='myImages'} |
| 4 | casOut={name='augmented_multi_config', replace=true} |
| 5 | augmentations={ |
| 6 | {width=128, height=128, sweepImage=true, mutations={horizontalFlip=true}}, |
| 7 | {useWholeImage=true, mutations={colorJittering=true}} |
| 8 | }; |
| 9 | QUIT; |