image

extractDetectedObjects

##deeplearning ##set_image

Description

L'action `extractDetectedObjects` est le véritable couteau suisse du set d'actions `image` pour la vision par ordinateur. Elle permet d'extraire chirurgicalement des objets détectés au sein d'une image. Que vous souhaitiez découper des zones précises (CROP) ou simplement les mettre en évidence avec des boîtes englobantes (HIGHLIGHT), cette action transforme vos coordonnées de détection (souvent issues d'un 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). Deep LearningSous-ensemble du Machine Learning basé sur des réseaux de neurones artificiels profonds. Il excelle dans l'extraction automatique de motifs complexes depuis des données brutes (images, texte, son). comme YOLO) en nouvelles données exploitables. Elle est parfaite pour isoler des visages, des plaques d'immatriculation ou des défauts de fabrication pour une analyse ultérieure. Un peu de découpage pour plus de clarté, c'est pas sorcier !

Syntaxe Officielle
image.extractDetectedObjects /
table={caslib="nom_caslib", name="nom_table", where="expression_where"},
casOut={name="nom_table_sortie", replace=true},
coordType="RECT" | "COCO" | "YOLO",
extractType="CROP" | "HIGHLIGHT",
outputFormat="MULTIPLE_ROWS" | "MULTIPLE_COLUMNS",
image="_image_",
maxObjects=10,
decode=false,
copyVars={"liste_variables"};

Paramètres Clés

Nom du paramètre Description
table La table d'entrée contenant les images et les coordonnées des objets (boîtes englobantes).
casOut La table de sortie qui contiendra les objets extraits ou les images annotées.
coordType Définit le format des coordonnées fournies : RECT (standard x,y,w,h), COCO (utilisé dans les datasets célèbres) ou YOLO (format normalisé centré).
extractType CROP pour découper l'objet et créer une nouvelle image, ou HIGHLIGHT pour dessiner un cadre autour de l'objet sur l'image originale.
outputFormat MULTIPLE_ROWS crée une ligne par objet détecté. MULTIPLE_COLUMNS garde une ligne par image source mais ajoute des colonnes pour chaque objet.
maxObjects Le nombre maximum d'objets à extraire par image (par défaut 10).

Préparation des données

Préparation d'une table d'images avec détections simulées

Ce code charge une image d'exemple et crée une table avec des colonnes de coordonnées (x, y, largeur, hauteur) pour simuler une détection d'objet.

1PROC CAS;
2 /* Chargement d'une image */
3 image.loadImages / path="data/sunflower.jpg" caslib="casuser" casOut={name="imgs", replace=true};
4 /* Ajout manuel de coordonnées de détection simulées (ex: un rectangle au centre) */
5 DATA casuser.detections;
6 SET casuser.imgs;
7 _nObjects_ = 1;
8 _Object0_ = "Tournesol";
9 _Object0_x = 100;
10 _Object0_y = 100;
11 _Object0_width = 200;
12 _Object0_height = 200;
13 _Object0_score = 0.95;
14 RUN;
15QUIT;

Exemples d'utilisation

Découpage (Crop) basique d'objets

Cet exemple extrait les objets détectés en créant une nouvelle image recadrée pour chaque détection.

1PROC CAS;
2 image.extractDetectedObjects /
3 TABLE={name="detections", caslib="casuser"}
4 casOut={name="cropped_objects", replace=true}
5 extractType="CROP"
6 outputFormat="MULTIPLE_ROWS";
7RUN;
8QUIT;
Résultat Attendu :
Une nouvelle table 'cropped_objects' contenant une ligne pour chaque objet découpé, avec l'image rognée dans la colonne _image_.
Mise en évidence (Highlight) avec format YOLO et métadonnées

Dans cet exemple, nous encadrons les objets sur l'image d'origine en utilisant le format de coordonnées YOLO, tout en limitant l'extraction à 5 objets et en conservant les variables d'origine.

1PROC CAS;
2 image.extractDetectedObjects /
3 TABLE={name="detections", caslib="casuser"}
4 casOut={name="highlighted_images", replace=true}
5 coordType="YOLO"
6 extractType="HIGHLIGHT"
7 outputFormat="MULTIPLE_ROWS"
8 maxObjects=5
9 copyVars={"_id_", "_Object0_"}
10 decode=true;
11RUN;
12QUIT;
Résultat Attendu :
La table 'highlighted_images' contiendra les images originales avec des cadres dessinés autour des objets détectés, incluant les variables copiées pour l'identification.
Extraction en colonnes multiples pour analyse par lot

Ici, on extrait les objets mais on les stocke dans des colonnes différentes sur la même ligne pour faciliter la comparaison d'objets au sein d'une même image source.

1PROC CAS;
2 image.extractDetectedObjects /
3 TABLE={name="detections", caslib="casuser"}
4 casOut={name="objects_in_cols", replace=true}
5 extractType="CROP"
6 outputFormat="MULTIPLE_COLUMNS"
7 maxObjects=3;
8RUN;
9QUIT;
Résultat Attendu :
Une table où chaque ligne représente l'image source, avec des colonnes comme _image0_, _image1_, etc., contenant les vignettes des objets découpés.