image augmentImages

Scénario Standard : Détection de défauts sur des pièces manufacturées

Scénario de test & Cas d'usage

Contexte Métier

Une entreprise spécialisée dans la fabrication de pièces automobiles souhaite améliorer son système de contrôle qualité automatisé. L'objectif est d'enrichir le jeu de données d'images de pièces (conformes et défectueuses) pour entraîner un modèle de deep learning plus robuste, capable de généraliser malgré les variations de luminosité et d'orientation des pièces sur la chaîne de production.
À propos du Set : image

Traitement, manipulation et analyse d'images.

Découvrir toutes les actions de image
Préparation des Données

Création d'une table CAS simulée 'pieces_prod' contenant des métadonnées sur les images de pièces. En pratique, les images seraient chargées avec 'casutil load'. Ici, nous simulons la table avec des ID et des labels de défaut.

Copié !
1DATA casuser.pieces_prod;
2 LENGTH id_piece $ 10 image_path $ 50;
3 INPUT id_piece $ is_defective;
4 image_path = '/path/to/images/' || id_piece || '.jpg';
5 DATALINES;
6PIECE_001 0
7PIECE_002 1
8PIECE_003 0
9;
10RUN;
11 
12PROC CASUTIL;
13 load DATA=casuser.pieces_prod casout='pieces_prod_cas' replace;
14 /* Étape de chargement d'image réelle omise pour la simulation */
15 /* load path='/path/to/images/' casout='images_cas' importoptions=(fileType='IMAGE'); */
16 /* La jointure se ferait ensuite pour lier les labels aux images */
17QUIT;

Étapes de réalisation

1
Chargement des images dans une table CAS nommée 'source_images'. Pour ce test, nous supposons que 'source_images' existe et contient les colonnes '_image_', 'id_piece' et 'is_defective'.
Copié !
1/* Étape préliminaire : nous supposons que la table 'source_images' a été préparée et chargée en CAS. */
2
Application d'augmentations réalistes : retournement horizontal, rotation aléatoire modérée et léger assombrissement pour simuler les conditions variables de la ligne de production. La graine (seed) est fixée pour la reproductibilité du test.
Copié !
1PROC CAS;
2 image.augmentImages /
3 TABLE={name='source_images', where='is_defective=1'},
4 casOut={name='augmented_defects', replace=true},
5 seed=42,
6 copyVars={'id_piece', 'is_defective'},
7 augmentations={{
8 useWholeImage=true,
9 mutations={
10 horizontalFlip=true,
11 rotateRight={type='RANGE', value={0, 15}},
12 darken={type='RANGE', value={0.9, 1.0}}
13 }
14 }};
15QUIT;

Résultat Attendu


La table de sortie 'augmented_defects' doit être créée en CAS. Elle doit contenir uniquement des augmentations des images marquées comme défectueuses (is_defective=1). Chaque image source doit avoir généré une nouvelle image augmentée avec les transformations spécifiées. Les colonnes 'id_piece' et 'is_defective' doivent être présentes et correctement reportées pour chaque nouvelle image, permettant une traçabilité complète.