image

augmentImages

##set_image

Description

L'action augmentImages est l'outil ultime pour multiplier vos données d'entraînement sans avoir à reprendre des milliers de photos. Elle permet de générer des variantes d'images en extrayant des portions spécifiques (patches) et en leur appliquant des mutations comme des rotations, des retournements (flips), ou des ajustements de luminosité. C'est un passage obligé pour tout projet de Computer VisionDiscipline de l'IA permettant aux systèmes d'extraire des informations significatives à partir d'images ou de vidéos pour identifier, classer et réagir à des éléments visuels du monde réel. sérieux sur SAS Viya qui veut éviter le surapprentissage (overfittingSurapprentissage d'un modèle mémorisant le bruit des données d'entraînement au lieu des tendances, réduisant ainsi sa capacité de généralisation et sa précision sur de nouvelles observations.). Si votre modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). ne reconnaît pas un chat après avoir été entraîné avec des images augmentées, c'est probablement qu'il préfère les chiens !

Syntaxe Officielle
image.augmentImages /
addColumns={augmentAttributes={"OUTPUT_HEIGHT", "OUTPUT_WIDTH", "PATCH_HEIGHT", "PATCH_WIDTH", "PATCH_X", "PATCH_Y"}},
augmentations={{height=integer, mutations={mutationOptions}, occlude=true|false, outputHeight=integer, outputWidth=integer, stepSize=integer, sweepImage=true|false, useWholeImage=true|false, verticalStepSize=integer, width=integer, x=integer, y=integer}},
casOut={caslib="string", compress=true|false, indexVars={"variable-name"}, label="string", name="table-name", promote=true|false, replace=true|false, replication=integer},
copyVars={"variable-name"},
decode=true|false,
image="variable-name",
seed=64-bit-integer,
table={caslib="string", name="table-name", where="where-expression"},
writeRandomly=true|false

Paramètres Clés

Nom du paramètre Description
augmentations Liste des configurations de recadrage et de mutation. Chaque entrée définit comment l'image doit être découpée et transformée.
mutations Sous-paramètre de 'augmentations' définissant les transformations : flip horizontal/vertical, rotation, jittering de couleur, inversion de pixels, etc.
casOut Spécifie la table de sortie CAS qui contiendra les images augmentées.
addColumns Permet d'ajouter des métadonnées sur les augmentations (comme les coordonnées du patch) dans la table de sortie.
decode Si positionné à True, les images sont stockées décompressées dans la table de sortie.
writeRandomly Mélange l'ordre d'écriture des images, utile pour l'entraînement aléatoire de modèles de réseaux de neurones.

Préparation des données

Chargement d'images pour augmentation

Avant d'augmenter, il faut charger des images. Voici comment charger un répertoire d'images dans une table CAS.

1PROC CAS;
2 image.loadImages /
3 path="/data/images/entrainement",
4 casOut={name="images_entree", replace=true};
5RUN;

Exemples d'utilisation

Augmentation basique (Flip Horizontal)

Cet exemple crée une copie de chaque image en lui appliquant un retournement horizontal.

1PROC CAS;
2 image.augmentImages /
3 TABLE={name="images_entree"}
4 augmentations={{useWholeImage=true, mutations={horizontalFlip=true}}}
5 casOut={name="images_augmentees", replace=true};
6RUN;
Résultat Attendu :
Une table 'images_augmentees' contenant les images originales retournées horizontalement.
Augmentation complexe avec Patches et Mutations multiples

On extrait des patches de 224x224 pixels, on applique des rotations, un flip et un changement de luminosité (lighten) avec une valeur fixe.

1PROC CAS;
2 image.augmentImages /
3 TABLE={name="images_entree"}
4 addColumns={augmentAttributes={"PATCH_X", "PATCH_Y"}}
5 augmentations={
6 {
7 width=224, height=224, x=0, y=0,
8 mutations={
9 horizontalFlip=true,
10 rotateLeft={type="CONSTANT", value=15},
11 lighten={type="CONSTANT", value=20}
12 }
13 }
14 }
15 decode=true
16 seed=123
17 casOut={name="images_finales", replace=true};
18RUN;
Résultat Attendu :
Une table contenant des patches modifiés de 224x224 pixels, pivotés de 15 degrés vers la gauche et éclaircis.