extractDetectedObjects
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 !
Paramètres Clés
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.
| 1 | PROC 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; |
| 15 | QUIT; |
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.
| 1 | PROC CAS; |
| 2 | image.extractDetectedObjects / |
| 3 | TABLE={name="detections", caslib="casuser"} |
| 4 | casOut={name="cropped_objects", replace=true} |
| 5 | extractType="CROP" |
| 6 | outputFormat="MULTIPLE_ROWS"; |
| 7 | RUN; |
| 8 | QUIT; |
Résultat Attendu :
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.
| 1 | PROC 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; |
| 11 | RUN; |
| 12 | QUIT; |
Résultat Attendu :
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.
| 1 | PROC 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; |
| 8 | RUN; |
| 9 | QUIT; |