Classer des pixels à l’aide du Deep Learning (Image Analyst)

Disponible avec une licence Image Analyst.

Synthèse

Exécute un modèle d’apprentissage profond entraîné sur un raster en entrée afin de générer un raster classé, une étiquette de classe étant attribuée à chaque pixel valide.

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 ou PyTorch) dans l’environnement Python ArcGIS AllSource. 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 AllSource, 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.

  • Pour plus d’informations sur l’apprentissage profond, reportez-vous à la rubrique Apprentissage profond dans ArcGIS AllSource.

  • L’exemple de code suivant utilise le fichier de définition de modèle Esri (.emd) :

    {
        "Framework":"TensorFlow",
        "ModelConfiguration":"deeplab",
    
        "ModelFile":"\\Data\\ImgClassification\\TF\\froz_inf_graph.pb",
        "ModelType":"ImageClassification",
        "ExtractBands":[0,1,2],
        "ImageHeight":513,
        "ImageWidth":513,
    
        "Classes" : [
            {
                "Value":0,
                "Name":"Evergreen Forest",
                "Color":[0, 51, 0]
             },
             {
                "Value":1,
                "Name":"Grassland/Herbaceous",
                "Color":[241, 185, 137]
             },
             {
                "Value":2,
                "Name":"Bare Land",
                "Color":[236, 236, 0]
             },
             {
                "Value":3,
                "Name":"Open Water",
                "Color":[0, 0, 117]
             },
             {
                "Value":4,
                "Name":"Scrub/Shrub",
                "Color":[102, 102, 0]
             },
             {
                "Value":5,
                "Name":"Impervious Surface",
                "Color":[236, 236, 236]
             }
        ]
    }
  • 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.

  • 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, cela signifie que la taille de lot est définie sur 4.

  • 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. .

Paramètres

ÉtiquetteExplicationType de données
Raster en entrée

Jeu de données raster en entrée à classer.

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

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
Définition de modèle

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.

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.

  • batch_size : nombre de tuiles d’image 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.
  • padding : nombre de pixels en bordure des tuiles d’image à partir duquel les prévisions sont 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.
  • tile_size : la largeur et la hauteur des tuiles d’image dans l’imagerie est fractionnée en vue de la prévision. L’argument est uniquement disponible pour l’architecture CycleGAN.
  • predict_background : indique si la classe d’arrière-plan est classée. S’il est défini sur Vrai, la classe d’arrière-plan est également classée. L’argument est disponible pour UNET, PSPNET, DeepLab et MMSegmentation.
  • 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 variants inversés et pivotés de l’image en entrée sont fusionnées dans la sortie finale. L’argument est disponible pour UNET, PSPNET, DeepLab, Détecteur de contours HED, Détecteur de contours BDCN, ConnectNet, MMSegmentation et Extracteur de routes multitâche.
  • 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 pour les architectures MultiTaskRoadExtractor et ConnectNet. Si IsEdgeDetection est présent dans le fichier .emd du modèle, les architectures BDCNEdgeDetector, HEDEdgeDetector et MMSegmentation sont également disponibles.
  • threshold : les prévisions dont le score de confiance est supérieur à ce seuil sont incluses dans les résultats. Les valeurs autorisées varient entre 0 et 1,0. Si ArcGISLearnVersion est de version 1.8.4 ou supérieure dans le fichier .emd du modèle, les architectures MultiTaskRoadExtractor et ConnectNet sont disponibles. Si ArcGISLearnVersion est de version 1.8.4 ou supérieure et que IsEdgeDetection est présent dans le fichier .emd du modèle, les architectures BDCNEdgeDetector, HEDEdgeDetector et MMSegmentation sont également disponibles.
  • return_probability_raster : indique si la sortie est un raster de probabilité. S’il est défini sur la valeur Vrai la sortie est un raster de probabilité. S’il est défini sur Faux, la sortie est un raster classé binaire. Par défaut, cette propriété est définie sur faux. Si ArcGISLearnVersion est de version 1.8.4 ou supérieure dans le fichier .emd du modèle, les architectures MultiTaskRoadExtractor et ConnectNet sont disponibles. Si ArcGISLearnVersion est de version 1.8.4 ou supérieure et que IsEdgeDetection est présent dans le fichier .emd du modèle, les architectures BDCNEdgeDetector, HEDEdgeDetector et MMSegmentation sont également disponibles.
  • direction : l’image est convertie d’un domaine à un autre. Les options sont AtoB et BtoA. L’argument est uniquement disponible pour l’architecture CycleGAN. Pour plus d’informations sur cet argument, reportez-vous à la rubrique Fonctionnement de CycleGAN.
  • thinning : indique si les arêtes prévues sont affinées ou grossières. Les options sont True et False. Si IsEdgeDetection est présent dans le fichier .emd du modèle, les architectures BDCNEdgeDetector, HEDEdgeDetector et MMSegmentation sont disponibles.

Value Table
Mode de traitement

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.
String
Dossier en sortie
(Facultatif)

Dossier dans lequel les rasters classés en sortie sont stockés. Un jeu de données mosaïque est généré à l’aide des rasters classés dans ce dossier.

Ce paramètre est requis lorsque le raster en entrée est un dossier d’images ou un jeu de données mosaïque dans lequel tous les éléments doivent être traités séparément. Par défaut, il s’agit d’un dossier du dossier de projet.

Folder
Entités en sortie
(Facultatif)

Classe d’entités dans laquelle les rasters classés en sortie sont stockés.

Ce paramètre est requis si le raster en entrée est une classe d’entités d’images.

Feature Class
Remplacer les pièces jointes
(Facultatif)

Indique si les images jointes existantes sont remplacées.

  • Désactivé : les images jointes existantes ne sont pas remplacées et les nouvelles images jointes sont stockées dans une nouvelle classe d’entités. Lorsque ce paramètre n’est pas activé, le paramètre Entités en sortie est disponible. Il s’agit de l’option par défaut.
  • Activé : la classe d’entités existante est remplacée par les nouvelles pièces jointes mises à jour.

Ce paramètre est disponible uniquement lorsque la valeur du paramètre Raster en entrée est une classe d’entités avec des images jointes.

Boolean

Valeur renvoyée

ÉtiquetteExplicationType de données
Jeu de données raster en sortie

Nom du jeu de données mosaïque ou raster contenant le résultat.

Raster Dataset

ClassifyPixelsUsingDeepLearning(in_raster, in_model_definition, {arguments}, processing_mode, {out_classified_folder}, {out_featureclass}, {overwrite_attachments})
NomExplicationType de données
in_raster

Jeu de données raster en entrée à classer.

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

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; 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.

  • batch_size : nombre de tuiles d’image 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.
  • padding : nombre de pixels en bordure des tuiles d’image à partir duquel les prévisions sont 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.
  • tile_size : la largeur et la hauteur des tuiles d’image dans l’imagerie est fractionnée en vue de la prévision. L’argument est uniquement disponible pour l’architecture CycleGAN.
  • predict_background : indique si la classe d’arrière-plan est classée. S’il est défini sur Vrai, la classe d’arrière-plan est également classée. L’argument est disponible pour UNET, PSPNET, DeepLab et MMSegmentation.
  • 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 variants inversés et pivotés de l’image en entrée sont fusionnées dans la sortie finale. L’argument est disponible pour UNET, PSPNET, DeepLab, Détecteur de contours HED, Détecteur de contours BDCN, ConnectNet, MMSegmentation et Extracteur de routes multitâche.
  • 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 pour les architectures MultiTaskRoadExtractor et ConnectNet. Si IsEdgeDetection est présent dans le fichier .emd du modèle, les architectures BDCNEdgeDetector, HEDEdgeDetector et MMSegmentation sont également disponibles.
  • threshold : les prévisions dont le score de confiance est supérieur à ce seuil sont incluses dans les résultats. Les valeurs autorisées varient entre 0 et 1,0. Si ArcGISLearnVersion est de version 1.8.4 ou supérieure dans le fichier .emd du modèle, les architectures MultiTaskRoadExtractor et ConnectNet sont disponibles. Si ArcGISLearnVersion est de version 1.8.4 ou supérieure et que IsEdgeDetection est présent dans le fichier .emd du modèle, les architectures BDCNEdgeDetector, HEDEdgeDetector et MMSegmentation sont également disponibles.
  • return_probability_raster : indique si la sortie est un raster de probabilité. S’il est défini sur la valeur Vrai la sortie est un raster de probabilité. S’il est défini sur Faux, la sortie est un raster classé binaire. Par défaut, cette propriété est définie sur faux. Si ArcGISLearnVersion est de version 1.8.4 ou supérieure dans le fichier .emd du modèle, les architectures MultiTaskRoadExtractor et ConnectNet sont disponibles. Si ArcGISLearnVersion est de version 1.8.4 ou supérieure et que IsEdgeDetection est présent dans le fichier .emd du modèle, les architectures BDCNEdgeDetector, HEDEdgeDetector et MMSegmentation sont également disponibles.
  • direction : l’image est convertie d’un domaine à un autre. Les options sont AtoB et BtoA. L’argument est uniquement disponible pour l’architecture CycleGAN. Pour plus d’informations sur cet argument, reportez-vous à la rubrique Fonctionnement de CycleGAN.
  • thinning : indique si les arêtes prévues sont affinées ou grossières. Les options sont True et False. Si IsEdgeDetection est présent dans le fichier .emd du modèle, les architectures BDCNEdgeDetector, HEDEdgeDetector et MMSegmentation sont disponibles.

Value Table
processing_mode

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.
String
out_classified_folder
(Facultatif)

Dossier dans lequel les rasters classés en sortie sont stockés. Un jeu de données mosaïque est généré à l’aide des rasters classés dans ce dossier.

Ce paramètre est requis lorsque le raster en entrée est un dossier d’images ou un jeu de données mosaïque dans lequel tous les éléments doivent être traités séparément. Par défaut, il s’agit d’un dossier du dossier de projet.

Folder
out_featureclass
(Facultatif)

Classe d’entités dans laquelle les rasters classés en sortie sont stockés.

Ce paramètre est requis si le raster en entrée est une classe d’entités d’images.

Feature Class
overwrite_attachments
(Facultatif)

Indique si les images jointes existantes sont remplacées.

  • NO_OVERWRITELes images jointes existantes ne sont pas remplacées et les nouvelles images jointes sont stockées dans une nouvelle classe d’entités. Lorsque cette option est spécifiée, le paramètre out_featureclass doit être renseigné. Il s’agit de l’option par défaut.
  • OVERWRITELa classe d’entités existante est remplacée par les nouvelles pièces jointes mises à jour.

Ce paramètre est valide uniquement lorsque la valeur du paramètre in_raster est une classe d’entités avec des images jointes.

Boolean

Valeur renvoyée

NomExplicationType de données
out_classified_raster

Nom du jeu de données mosaïque ou raster contenant le résultat.

Raster Dataset

Exemple de code

Exemple 1 d’utilisation de la fonction ClassifyPixelsUsingDeepLearning (fenêtre Python)

Cet exemple classe un raster en fonction d’une classification de pixels personnalisée à l’aide de la fonction ClassifyPixelsUsingDeepLearning.

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

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

ClassifyPixelsUsingDeepLearning("c:/classifydata/moncton_seg.tif",
     "c:/classifydata/moncton.tif", "c:/classifydata/moncton_sig.emd")
Exemple 2 d’utilisation de la fonction ClassifyPixelsUsingDeepLearning (script autonome)

Cet exemple classe un raster en fonction d’une classification de pixels personnalisée à l’aide de la fonction ClassifyPixelsUsingDeepLearning.

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


# Set local variables
in_raster = "c:\\classifydata\\moncton_seg.tif"
in_model_definition = "c:\\classifydata\\moncton_sig.emd"
model_arguments = "padding 0; batch_size 16"
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"

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

# Execute 
Out_classified_raster = ClassifyPixelsUsingDeepLearning(in_raster, 
                   in_model_definition, model_arguments, processing_mode)
Out_classified_raster.save("c:\\classifydata\\classified_moncton.tif")