Détecter des objets à l’aide du Deep Learning (Image Analyst)

Disponible avec une licence Image Analyst.

Synthèse

Exécute un modèle de Deep Learning entraîné sur un raster en entrée afin de générer une classe d’entités contenant les objets qu’il trouve. Les entités peuvent correspondre à des emprises ou des polygones autour des objets trouvés ou encore des points situés aux centres des objets.

Cet outil nécessite un fichier de définition de modèle contenant des informations de modèle entraîné. Le modèle peut être entraîné avec l’outil Préparer le modèle d’apprentissage profond ou par un logiciel d’entraînement tiers tel que TensorFlow, PyTorch ou Keras. Le fichier de définition de modèle peut être un fichier JSON de définition de modèle Esri (.emd) ou un paquetage de modèle de Deep Learning. Il doit contenir le chemin d’accès à la fonction raster Python à appeler pour traiter chaque objet, ainsi que le chemin d’accès au fichier binaire de modèle de Deep Learning entraîné.

Utilisation

  • Vous devez installer l’API Python de la structure de Deep Learning appropriée (telle que TensorFlow, PyTorch ou Keras) dans l’environnement Python ArcGIS Pro. Si vous ne le faites pas, une erreur se produit lorsque vous ajoutez le fichier de définition de modèle Esri à l’outil. Procurez-vous les informations sur la structure appropriée auprès de l’auteur du fichier de définition de modèle Esri.

    Pour configurer votre machine afin d’utiliser des structures d’apprentissage profond dans ArcGIS Pro, consultez la rubrique Installer les structures d’apprentissage profond pour ArcGIS.

  • Cet outil appelle une API Python d’apprentissage profond tierce (telle que TensorFlow, PyTorch ou Keras) et utilise la fonction raster Python spécifiée pour traiter chaque objet.

  • Des exemples de cas d’utilisation pour cet outil sont disponibles sur la page de la fonction raster Python d’Esri dans GitHub. Vous pouvez également écrire des modules Python personnalisés en suivant les exemples et les instructions du référentiel GitHub.

  • La valeur du paramètre Définition de modèle peut être un fichier JSON de définition de modèle Esri (.emd), une chaîne JSON ou un paquetage de modèle de Deep Learning (.dlpk). Une chaîne JSON est utile lorsque cet outil est utilisé sur le serveur de manière à pouvoir coller la chaîne JSON au lieu de télécharger le fichier .emd. Le fichier .dlpk doit être stocké localement.

  • Consultez l’exemple ci-dessous pour le fichier .emd.

    {
        "Framework" :"TensorFlow",
        "ModelConfiguration": "ObjectDetectionAPI",
        
        "ModelFile": ".\\CoconutTreeDetection.model",
        "ModelType": "ObjectDetection",
        "ImageHeight": 850,
        "ImageWidth": 850,
        "ExtractBands": [0,1,2],
        "ImageSpaceUsed": "MAP_SPACE"
        "Classes": [
        {
            "Value": 0,
            "Name": "CoconutTree",
            "Color": [0, 255, 0]
        }
        ]
    }
  • L’outil peut traiter l’imagerie en entrée existant dans l’espace cartographique ou la résolution. L’imagerie dans l’espace cartographique se trouve dans un système de coordonnées basé sur une carte. L’imagerie dans la résolution se trouve dans un espace d’image brut, sans rotation ni distorsion. Le système de référence peut être spécifié lors de la génération des données d’entraînement dans l’outil Exporter les données d’apprentissage pour l’apprentissage profond à l’aide du paramètre Reference System (Système de référence). Si le modèle est entraîné dans un logiciel d’entraînement tiers, le système de référence doit être spécifié dans le fichier .emd à l’aide du paramètre ImageSpaceUsed, qui peut être défini sur MAP_SPACE ou PIXEL_SPACE.

  • Pour les couches d’imagerie orientée, le traitement s’effectue toujours dans l’espace pixel. Lorsque l’espace pixel est utilisé pour le traitement, les détections dans l’espace pixel sont conservées dans la table en sortie dans le champ IShape

  • Il est possible d’augmenter la taille de lot pour améliorer les performances de l’outil. Il convient toutefois de noter que le volume de mémoire utilisée est proportionnel à la taille de lot. Si un message d’erreur s’affiche pour mémoire insuffisante, utilisez une taille de lot plus petite. La valeur batch_size peut être ajustée à l'aide du paramètre Arguments.

  • Les tailles de lot sont des nombres au carré, tels que 1, 4, 9, 16, 25, 64, etc. Si la valeur en entrée ne correspond pas à un carré parfait, la valeur au carré la plus élevée possible est utilisée. Par exemple, si la valeur 6 est spécifiée, la taille de lot est définie sur 4.

  • Utilisez le paramètre Suppression non maximale pour identifier et supprimer les entités dupliquées de la détection d'objets. Pour en savoir plus sur ce paramètre, consultez la section Utilisation de l’outil Suppression non maximale. Lorsque les entrées sont des couches d’imagerie orientée, les doublons sont conservés avec des géométries au sol nulles.

  • Utilisez l’option Traiter les éléments candidats uniquement du paramètre Mode de traitement pour détecter uniquement les objets sur les images sélectionnées du jeu de données mosaïque. Vous pouvez utiliser l’outil Calculer des mosaïques candidates pour trouver les images candidates dans un jeu de données mosaïque et un service d’imagerie qui représentent le mieux la zone de mosaïquage.

  • Cet outil prend en charge et utilise plusieurs GPU le cas échéant. Pour utiliser un GPU spécifique, spécifiez l’environnement GPU ID (ID de GPU). Si l’ID de GPU n’est pas défini, l’outil utilise tous les GPU disponibles. Il s’agit de l’option par défaut.

  • Le raster en entrée peut être un raster unique, plusieurs rasters, une couche ou un jeu de données d’imagerie orientée, ou une classe d’entités avec des images en pièces jointes. Pour plus d’informations sur les fichiers joints, reportez-vous à la section Ajouter ou supprimer des fichiers joints.

  • Le raster en entrée peut consister en un raster unique, en plusieurs rasters ou en une classe d’entités avec des images rattachées. Pour plus d’informations sur les fichiers joints, reportez-vous à la section Ajouter ou supprimer des fichiers joints.

  • Pour en savoir plus sur les exigences relatives à l’exécution de cet outil, ainsi que sur les problèmes que vous pouvez rencontrer, consultez les rubriques FAQ Apprentissage profond. .

  • Pour plus d’informations sur le Deep Learning, reportez-vous à la rubrique Deep Learning à l’aide de l’extension ArcGIS Image Analyst.

Paramètres

ÉtiquetteExplicationType de données
Raster en entrée

Image en entrée utilisée pour détecter les objets. L’entrée peut être un raster, plusieurs rasters d’un jeu de données mosaïque, un service d’imagerie, un dossier d’images, une classe d’entités avec des images en pièces jointes, ou un jeu de données ou une couche d’imagerie orientée.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class; Oriented Imagery Layer
Objets détectés en sortie

Classe d’entités en sortie qui contient les géométries encerclant l’objet ou les objets détectés dans l’image en entrée.

Si la classe d’entités existe déjà, les résultats sont ajoutés à la classe d’entités existante.

Feature Class
Définition de modèle

Ce paramètre peut être un fichier JSON de définition de modèle Esri (.emd), une chaîne JSON ou encore un paquetage de modèle de Deep Learning (.dlpk). Une chaîne JSON est utile lorsque cet outil est utilisé sur le serveur de manière à pouvoir coller la chaîne JSON au lieu de télécharger le fichier .emd. Le fichier .dlpk doit être stocké localement.

Il contient le chemin d’accès au fichier du modèle binaire d’apprentissage profond, le chemin d’accès à la fonction raster Python à utiliser et d’autres paramètres, tels que le remplissage ou la taille de préférence des tuiles.

File; String
Arguments
(Facultatif)

Les informations du paramètre Définition de modèle sont utilisées pour renseigner ce paramètre. Ces arguments varient selon l’architecture du modèle. Les arguments de modèle suivants sont pris en charge pour des modèles entraînés dans ArcGIS. Les modèles pré-entraînés ArcGIS et les modèles de Deep Learning personnalisés peuvent comporter des arguments supplémentaires pris en charge par l’outil.

  • padding : nombre de pixels en bordure des tuiles d’image à partir duquel les prévisions seront fusionnées pour les tuiles adjacentes. Pour lisser la sortie tout en réduisant les artefacts, augmentez la valeur. La valeur maximale de la marge intérieure peut représenter la moitié de la valeur de la taille d’une tuile. L’argument est disponible pour toutes les architectures de modèle.
  • threshold : les détections dont le score de confiance est supérieur à ce seuil seront incluses dans les résultats. Les valeurs autorisées varient entre 0 et 1,0. L’argument est disponible pour toutes les architectures de modèle.
  • batch_size : nombre de tuiles d’image qui seront traitées à chaque étape de l’inférence du modèle. Ce nombre dépend de la mémoire de la carte graphique. L’argument est disponible pour toutes les architectures de modèle.
  • nms_overlap : ratio de superposition maximale de deux entités se chevauchant, défini comme le rapport entre la zone d’intersection et la zone d’union. La valeur par défaut est 0,1. L’argument est disponible pour toutes les architectures de modèle.
  • exclude_pad_detections : si la valeur est vraie, les détections potentiellement tronquées sur les arêtes qui se trouvent dans la région remplie de fragments d’image sont filtrées. L’argument est disponible pour SSD, RetinaNet, YOLOv3, DETReg, MMDetection et Faster RCNN uniquement.
  • test_time_augmentation : procède à l’augmentation du temps de test lors de la prévision. Si la valeur est vraie, les prévisions des orientations inversées et pivotées de l’image en entrée sont fusionnées dans la sortie finale et la moyenne de leurs valeurs de fiabilité est calculée. Ainsi, il est possible que les valeurs de fiabilité passent en dessous du seuil pour les objets qui ne sont détectés que dans un petit nombre d’orientations de l’image. L’argument est disponible pour toutes les architectures de modèle.
  • tile_size : largeur et hauteur des tuiles d’image de fractionnement de l’imagerie en vue de la prévision. L’argument est disponible uniquement pour MaskRCNN.
  • merge_policy : stratégie utilisée pour fusionner les prévisions augmentées. Les options disponibles sont la moyenne, la valeur maximale ou la valeur minimale. Ce paramètre est seulement applicable si l’augmentation du temps de test est utilisée. L’argument est disponible uniquement pour MaskRCNN.
  • output_classified_raster : chemin vers le raster en sortie. L’argument est disponible uniquement pour MaXDeepLab.

Value Table
Suppression non maximale
(Facultatif)

Spécifie si la suppression non maximale est réalisée, auquel cas les d’objets dupliqués sont identifiés et les entités dupliquées dont la valeur de confiance est la plus faible sont supprimées.

  • Désactivée : la suppression non maximale n’est pas réalisée. Tous les objets détectés seront intégrés dans la classe d’entités en sortie. Il s’agit de l’option par défaut.
  • Activé : la suppression non maximale est réalisée et les objets dupliqués qui sont détectés seront supprimés. Lorsque les entrées sont des couches d’imagerie orientée, les doublons sont conservés avec des géométries au sol nulles.

Boolean
Champ de score de confiance
(Facultatif)

Nom du champ dans la classe d’entités qui contient les scores de confiance utilisés en sortie par la méthode de détection des objets.

Ce paramètre est obligatoire lorsque le paramètre Suppression non maximale est activé.

String
Champ de valeur de classe
(Facultatif)

Nom du champ de valeur de classe dans la classe d’entités en entrée.

Si aucun nom de champ n’est fourni, un champ Classvalue ou Value est utilisé. Si ces champs n’existent pas, tous les enregistrements sont identifiés comme appartenant à une classe.

String
Ratio de superposition maximale
(Facultatif)

Ratio de superposition maximale de deux entités se chevauchant, défini comme le rapport entre la zone d’intersection et la zone d’union. La valeur par défaut est 0.

Double
Mode de traitement
(Facultatif)

Spécifie comment tous les éléments raster figurant dans un jeu de données mosaïque ou un service d’imagerie seront traités. Ce paramètre est appliqué lorsqu’un raster en entrée est un jeu de données mosaïque ou service d’imagerie.

  • Process as mosaicked image (Traiter en tant qu’image mosaïquée)Tous les éléments raster figurant dans le jeu de données mosaïque ou le service d’imagerie seront mosaïqués ensemble, puis traités. Il s’agit de l’option par défaut.
  • Process all raster items separately (Traiter tous les éléments raster séparément)Tous les éléments raster figurant dans le jeu de données mosaïque ou le service d’imagerie seront traités en tant qu’images séparées.
  • Traiter les éléments candidats uniquementSeuls les éléments raster dont la valeur est 1 ou 2 dans le champ Candidate de la table attributaire du jeu de données mosaïque cible seront traités.
String
Utiliser l’espace pixel
(Facultatif)

Indique si l’inférence est exécutée sur les images de l’espace pixel.

  • Désactivé – L’inférence est exécutée dans l’espace cartographique. Il s’agit de l’option par défaut.
  • Activé – L’inférence est exécutée dans l’espace image et la sortie est à nouveau transformée en espace cartographique. Cette option est utile si vous utilisez une imagerie oblique ou une imagerie à l’échelle des rues, lorsque les entités sont susceptibles d’être déformées dans l’espace cartographique.

Boolean
Objets d’intérêt
(Facultatif)

Indique les noms des objets détectés par l’outil. Les options disponibles dépendent de la valeur du paramètre Définition de modèle.

Ce paramètre est actif uniquement si le modèle détecte plusieurs types d’objets.

String

Sortie obtenue

ÉtiquetteExplicationType de données
Raster classé en sortie

Raster classé en sortie utilisé pour la classification de pixels. Le nom du jeu de données raster sera identique à celui de la valeur du paramètre Objets détectés en sortie.

Ce paramètre n’est applicable que si le type de modèle est défini sur Segmentation panoptique.

Raster Dataset

DetectObjectsUsingDeepLearning(in_raster, out_detected_objects, in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, {class_value_field}, {max_overlap_ratio}, {processing_mode}, {use_pixelspace}, {in_objects_of_interest})
NomExplicationType de données
in_raster

Image en entrée utilisée pour détecter les objets. L’entrée peut être un raster, plusieurs rasters d’un jeu de données mosaïque, un service d’imagerie, un dossier d’images, une classe d’entités avec des images en pièces jointes, ou un jeu de données ou une couche d’imagerie orientée.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class; Oriented Imagery Layer
out_detected_objects

Classe d’entités en sortie qui contient les géométries encerclant l’objet ou les objets détectés dans l’image en entrée.

Si la classe d’entités existe déjà, les résultats sont ajoutés à la classe d’entités existante.

Feature Class
in_model_definition

La valeur du paramètre in_model_definition peut être un fichier JSON de définition de modèle Esri (.emd), une chaîne JSON ou un paquetage de modèle de Deep Learning (.dlpk). Une chaîne JSON est utile lorsque cet outil est utilisé sur le serveur de manière à pouvoir coller la chaîne JSON au lieu de télécharger le fichier .emd. Le fichier .dlpk doit être stocké localement.

Il contient le chemin d’accès au fichier du modèle binaire d’apprentissage profond, le chemin d’accès à la fonction raster Python à utiliser et d’autres paramètres, tels que le remplissage ou la taille de préférence des tuiles.

File; String
arguments
[arguments,...]
(Facultatif)

Les informations du paramètre in_model_definition servent à définir les valeurs par défaut de ce paramètre. Ces arguments varient selon l’architecture du modèle. Les arguments de modèle suivants sont pris en charge pour des modèles entraînés dans ArcGIS. Les modèles pré-entraînés ArcGIS et les modèles de Deep Learning personnalisés peuvent comporter des arguments supplémentaires pris en charge par l’outil.

  • padding : nombre de pixels en bordure des tuiles d’image à partir duquel les prévisions seront fusionnées pour les tuiles adjacentes. Pour lisser la sortie tout en réduisant les artefacts, augmentez la valeur. La valeur maximale de la marge intérieure peut représenter la moitié de la valeur de la taille d’une tuile. L’argument est disponible pour toutes les architectures de modèle.
  • threshold : les détections dont le score de confiance est supérieur à ce seuil seront incluses dans les résultats. Les valeurs autorisées varient entre 0 et 1,0. L’argument est disponible pour toutes les architectures de modèle.
  • batch_size : nombre de tuiles d’image qui seront traitées à chaque étape de l’inférence du modèle. Ce nombre dépend de la mémoire de la carte graphique. L’argument est disponible pour toutes les architectures de modèle.
  • nms_overlap : ratio de superposition maximale de deux entités se chevauchant, défini comme le rapport entre la zone d’intersection et la zone d’union. La valeur par défaut est 0,1. L’argument est disponible pour toutes les architectures de modèle.
  • exclude_pad_detections : si la valeur est vraie, les détections potentiellement tronquées sur les arêtes qui se trouvent dans la région remplie de fragments d’image sont filtrées. L’argument est disponible pour SSD, RetinaNet, YOLOv3, DETReg, MMDetection et Faster RCNN uniquement.
  • test_time_augmentation : procède à l’augmentation du temps de test lors de la prévision. Si la valeur est vraie, les prévisions des orientations inversées et pivotées de l’image en entrée sont fusionnées dans la sortie finale et la moyenne de leurs valeurs de fiabilité est calculée. Ainsi, il est possible que les valeurs de fiabilité passent en dessous du seuil pour les objets qui ne sont détectés que dans un petit nombre d’orientations de l’image. L’argument est disponible pour toutes les architectures de modèle.
  • tile_size : largeur et hauteur des tuiles d’image de fractionnement de l’imagerie en vue de la prévision. L’argument est disponible uniquement pour MaskRCNN.
  • merge_policy : stratégie utilisée pour fusionner les prévisions augmentées. Les options disponibles sont la moyenne, la valeur maximale ou la valeur minimale. Ce paramètre est seulement applicable si l’augmentation du temps de test est utilisée. L’argument est disponible uniquement pour MaskRCNN.
  • output_classified_raster : chemin vers le raster en sortie. L’argument est disponible uniquement pour MaXDeepLab.

Value Table
run_nms
(Facultatif)

Spécifie si la suppression non maximale est réalisée, auquel cas les d’objets dupliqués sont identifiés et les entités dupliquées dont la valeur de confiance est la plus faible sont supprimées.

  • NO_NMSLa suppression non maximale n’est pas réalisée. Tous les objets détectés seront intégrés dans la classe d’entités en sortie. Il s’agit de l’option par défaut.
  • NMSLa suppression non maximale est réalisée et les objets dupliqués qui sont détectés seront supprimés. Lorsque les entrées sont des couches d’imagerie orientée, les doublons sont conservés avec des géométries au sol nulles.
Boolean
confidence_score_field
(Facultatif)

Nom du champ dans la classe d’entités qui contient les scores de confiance utilisés en sortie par la méthode de détection des objets.

Ce paramètre est requis lorsque le paramètre run_nms est défini sur NMS.

String
class_value_field
(Facultatif)

Nom du champ de valeur de classe dans la classe d’entités en entrée.

Si aucun nom de champ n’est fourni, un champ Classvalue ou Value est utilisé. Si ces champs n’existent pas, tous les enregistrements sont identifiés comme appartenant à une classe.

String
max_overlap_ratio
(Facultatif)

Ratio de superposition maximale de deux entités se chevauchant, défini comme le rapport entre la zone d’intersection et la zone d’union. La valeur par défaut est 0.

Double
processing_mode
(Facultatif)

Spécifie comment tous les éléments raster figurant dans un jeu de données mosaïque ou un service d’imagerie seront traités. Ce paramètre est appliqué lorsqu’un raster en entrée est un jeu de données mosaïque ou service d’imagerie.

  • PROCESS_AS_MOSAICKED_IMAGETous les éléments raster figurant dans le jeu de données mosaïque ou le service d’imagerie seront mosaïqués ensemble, puis traités. Il s’agit de l’option par défaut.
  • PROCESS_ITEMS_SEPARATELYTous les éléments raster figurant dans le jeu de données mosaïque ou le service d’imagerie seront traités en tant qu’images séparées.
  • PROCESS_CANDIDATE_ITEMS_ONLYSeuls les éléments raster dont la valeur est 1 ou 2 dans le champ Candidate de la table attributaire du jeu de données mosaïque cible seront traités.
String
use_pixelspace
(Facultatif)

Indique si l’inférence est exécutée sur les images de l’espace pixel.

  • NO_PIXELSPACEL’inférence est exécutée dans l’espace cartographique. Il s’agit de l’option par défaut.
  • PIXELSPACEL’inférence est exécutée dans l’espace image et la sortie est à nouveau transformée en espace cartographique. Cette option est utile si vous utilisez une imagerie oblique ou une imagerie à l’échelle des rues, lorsque les entités sont susceptibles d’être déformées dans l’espace cartographique.
Boolean
in_objects_of_interest
[in_objects_of_interest,...]
(Facultatif)

Spécifie les objets détectés par l’outil. Les options disponibles dépendent de la valeur du paramètre in_model_definition.

Ce paramètre est actif uniquement si le modèle détecte plusieurs types d’objets.

String

Sortie obtenue

NomExplicationType de données
out_classified_raster

Raster classé en sortie utilisé pour la classification de pixels. Le nom du jeu de données raster sera identique à celui de la valeur du paramètre out_detected_objects.

Ce paramètre n’est applicable que si le type de modèle est défini sur Segmentation panoptique.

Raster Dataset

Exemple de code

Exemple 1 d’utilisation de l’outil DetectObjectsUsingDeepLearning (fenêtre Python)

Cet exemple crée une classe d’entités en fonction de la détection des objets.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

DetectObjectsUsingDeepLearning("c:/detectobjects/moncton_seg.tif", 
     "c:/detectobjects/moncton_seg.shp", "c:/detectobjects/moncton.emd", 
     "padding 0; threshold 0.5; batch_size 4", "NO_NMS", "Confidence", 
     "Class", 0, "PROCESS_AS_MOSAICKED_IMAGE")
Exemple 2 d’utilisation de l’outil DetectObjectsUsingDeepLearning (script autonome)

Cet exemple crée une classe d’entités en fonction de la détection des objets.

# Import system modules
import arcpy
from arcpy.ia import *

"""
Usage: DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
       in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, 
       {class_value_field}, {max_overlap_ratio}, {processing_mode})
"""

# Set local variables
in_raster = "c:/classifydata/moncton_seg.tif"
out_detected_objects = "c:/detectobjects/moncton.shp"
in_model_definition = "c:/detectobjects/moncton_sig.emd"
model_arguments = "padding 0; threshold 0.5; batch_size 4"
run_nms = "NO_NMS"
confidence_score_field = "Confidence"
class_value_field = "Class"
max_overlap_ratio = 0
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Execute 
DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
   in_model_definition, model_arguments, run_nms, confidence_score_field, 
   class_value_field, max_overlap_ratio, processing_mode)

Informations de licence

  • Basic: Nécessite Image Analyst
  • Standard: Nécessite Image Analyst
  • Advanced: Nécessite Image Analyst

Rubriques connexes