?> augmentImages - WeAreCAS
image

augmentImages

Description

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.).

image.augmentImages { addColumns={augmentImagesAddColumnsParms}, augmentations={{augmentationOptions-1} <, {augmentationOptions-2}, ...>}, casOut={casouttable}, copyVars={"variable-name-1" <, "variable-name-2", ...>}, decode=TRUE | FALSE, image="variable-name", seed=64-bit-integer, table={castable}, writeRandomly=TRUE | FALSE };
Paramètres
ParamètreDescription
addColumnsSpécifie des colonnes supplémentaires à ajouter à la table de sortie, comme les attributs d'augmentation.
augmentationsDéfinit la liste des options de recadrage et de mutation à appliquer aux images.
casOutSpécifie la table de sortie pour stocker les images augmentées.
copyVarsListe des variables à copier de la table d'entrée vers la table de sortie.
decodeSi TRUE, décode les images avant de les écrire dans la table de sortie.
imageIndique la colonne contenant les données binaires des images. Par défaut, '_image_'.
seedSpécifie une graine pour la génération de nombres aléatoires, assurant la reproductibilité des augmentations aléatoires.
tableSpécifie la table d'entrée contenant les images à augmenter.
writeRandomlySi TRUE, écrit les images résultantes dans la table de sortie de manière aléatoire.
Préparation des Données
Préparation des données initiales

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`.

1PROC casutil;
2 load path="/chemin/vers/vos/images/" casout="myImages" importoptions=(fileType="IMAGE");
3QUIT;

Exemples

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.

Code SAS® / CAS
Copié !
1PROC CAS;
2 image.augmentImages /
3 TABLE={name='myImages'}
4 casOut={name='augmented_hflip', replace=true}
5 augmentations={{useWholeImage=true, mutations={horizontalFlip=true}}};
6QUIT;

Ici, nous extrayons des patches de 224x224 pixels de chaque image et appliquons un retournement vertical à chacun de ces patches.

Code SAS® / CAS
Copié !
1PROC 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}}};
6QUIT;

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.

Code SAS® / CAS
Copié !
1PROC 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 }};
15QUIT;

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é.

Code SAS® / CAS
Copié !
1PROC 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 };
9QUIT;

FAQ

Quel est le but de l'action `augmentImages` ?
Comment spécifier la table d'entrée contenant les images à traiter ?
Quels types de transformations (mutations) peuvent être appliquées aux images ?
Est-il possible de n'appliquer les augmentations que sur une partie spécifique de l'image ?
Comment est définie la table de sortie pour les images augmentées ?
Peut-on contrôler le caractère aléatoire des augmentations ?