Créer des échantillons d'apprentissage
Dans la plantation de palmiers de Kolovai, au Tonga, il faudrait un temps très long et une main-d’œuvre importante pour compter les arbres et évaluer l’état sanitaire de chacun d'entre eux. Pour simplifier ces tâches, vous allez utiliser un modèle de Deep Learning dans ArcGIS Pro afin d’identifier les palmiers, puis évaluer leur état sanitaire en mesurant la verdeur de la couverture végétale. Pour commencer, vous devez trouver des images de Kolovai au Tonga dont la résolution spectrale et spatiale est assez fine pour permettre d’identifier les arbres. Une fois que vous possédez l'imagerie adéquate, vous allez créer des échantillons d'apprentissage, que vous allez convertir dans un format utilisable par un modèle d’apprentissage profond. Enfin, pour que le modèle soit capable de reconnaître ce qu’il doit trouver, vous allez définir des images de palmiers qui vont l’aider à identifier les groupes de pixels et les tailles d’arbre similaires.
Remarque :
L’utilisation des outils de Deep Learning de ArcGIS Pro implique que vous ayez installé les bibliothèques de Deep Learning appropriées sur votre ordinateur. Si ces fichiers ne sont pas installés, vérifiez que ArcGIS Pro est fermé et suivez les étapes décrites dans les instructions Se préparer au Deep Learning dans ArcGIS Pro. Dans ces instructions, vous allez également découvrir comment vérifier si votre matériel informatique et vos logiciels peuvent exécuter des processus de Deep Learning et apprendre d’autres conseils utiles. Une fois que vous avez terminé, vous pouvez poursuivre le didacticiel.
Télécharger les images
L'extraction d’entités requiert impérativement une imagerie précise de haute résolution. En effet, pour que le modèle puisse identifier efficacement les palmiers, la taille de pixel doit être assez petite pour lui permettre d’en distinguer le feuillage. De plus, pour évaluer l'état des arbres, vous aurez besoin d’une image dont les bandes spectrales vous permettent de calculer un indice d'état sanitaire de la végétation. Vous allez rechercher l'imagerie requise pour cette étude et la télécharger à partir d’OpenAerialMap, un référentiel open source d’imagerie multispectrale et haute résolution.
- Accédez au site web d’OpenAerialMap.
- Cliquez sur Start Exploring (Commencer l’exploration).
Dans la vue cartographique interactive, vous pouvez réduire, agrandir, déplacer ou rechercher l’imagerie disponible de n’importe quel endroit de la planète. La carte comporte un carroyage. Si vous pointez sur une case du carroyage, un nombre apparaît. Il s’agit du nombre d'images disponibles pour cette case.
- Dans la zone de recherche, saisissez Kolovai et appuyez sur la touche Entrée. Dans la liste des résultats, cliquez sur Kolovai.
La carte effectue un zoom sur Kolovai. Dans cette ville située sur l’île principale de Tongatapu, se trouve une plantation de cocotiers.
- Si nécessaire, effectuez un zoom arrière jusqu’à ce que l’étiquette Kolovai apparaisse sur la carte. Cliquez sur la zone de carroyage directement sur Kolovai.
- Dans la fenêtre latérale, cliquez sur Kolovai UAV4R Subset (OSM-Fit) de Cristiano Giovando.
- Cliquez sur le bouton de téléchargement pour télécharger le fichier .tif brut. Enregistrez l’image dans un emplacement de votre choix.
En raison de la taille du fichier, le téléchargement peut nécessiter quelques minutes.
Par défaut, le nom du fichier est 5b1b6fb2-5024-4681-a175-9b667174f48c.
Explorer les données
Pour commencer le processus de classification, vous allez télécharger un projet ArcGIS Pro contenant quelques géosignets pour vous guider à travers le processus de création d’échantillons d’apprentissage.
- Téléchargez le fichier Palm_Tree_Detection.zip et procédez à l’extraction de son contenu dans un emplacement approprié sur votre ordinateur.
En raison de la taille du fichier, le téléchargement peut nécessiter quelques minutes.
- Si nécessaire, ouvrez le dossier Palm_Tree_Detection extrait. Ouvrez le dossier Kolovai. Double-cliquez sur le fichier de projet ArcGIS Kolovai.
À l’invite, connectez-vous à votre compte ArcGIS Online ou ArcGIS Enterprise.
Remarque :
Si vous ne disposez pas d’un compte d’organisation, consultez les options disponibles pour accéder aux logiciels.
Le projet s’ouvre avec une carte vierge ; vous allez télécharger l’imagerie que vous avez téléchargée.
- Sur le ruban, sous l’onglet Map (Carte), dans le groupe Layer (Couche), cliquez sur Add Data (Ajouter des données).
La fenêtre Add Data (Ajouter des données) s’affiche.
- Dans la fenêtre Add Data (Ajouter des données), sous Computer (Ordinateur), accédez à l'image Kolovai (souvenez-vous que le fichier s'intitule 5b1b6fb2-5024-4681-a175-9b667174f48c) que vous avez téléchargée depuis OpenAerialMap. Sélectionnez le fichier .tif et cliquez sur OK.
Remarque :
Si la fenêtre Calculate statistics (Calculer les statistiques) s’ouvre, cliquez sur Yes (Oui).
L'image de Kolovai est ajoutée à votre carte. La couche est répertoriée dans la fenêtre Contents (Contenu) d'après son identifiant unique, qui n’est pas évocateur. Il est recommandé de donner à la couche un nom explicite.
- Dans la fenêtre Contents (Contenu), double-cliquez sur le nom de la couche actuelle et saisissez Imagery (Imagerie). Appuyez sur la touche Entrée.
- Déplacez-vous sur la carte et appliquez des zooms pour découvrir à quoi ressemble une plantation de palmiers.
Un grand nombre de cocotiers figurent sur cette image. Il faudrait des jours pour les compter un par un, sur le terrain ou en examinant l’image à l’œil nu. Pour qu’un modèle de Deep Learning puisse faire ce travail à votre place, vous allez créer un échantillon de palmiers avec lequel vous allez entraîner votre modèle.
Créer des structures d’apprentissage
Il est important de créer des échantillons d’apprentissage performants pour entraîner efficacement un modèle d’apprentissage profond ou un modèle de classification d’images. Il s’agit souvent de l’étape la plus chronophage du processus. Pour donner à votre modèle d’apprentissage profond les informations nécessaires à l’extraction de tous les palmiers de l’image, vous allez créer des entités propres à plusieurs palmiers différents, afin « d’enseigner » au modèle la taille, la forme et la signature spectrale que peuvent avoir les cocotiers. Ces échantillons d’apprentissage sont créés et gérés via l’outil Étiqueter les objets pour le Deep Learning.
Remarque :
Créer un jeu de données d’apprentissage implique de numériser des centaines d’entités et peut nécessiter du temps. Si vous ne souhaitez pas créer les échantillons d’apprentissage, un jeu de données est à votre disposition dans la géodatabase Results, dans le dossier Provided Results. Vous pouvez avancer jusqu’à la section Créer des fragments d’image.
- Dans la fenêtre Contents (Contenu), vérifiez que la couche Imagery (Imagerie) est sélectionnée.
- Dans le ruban, cliquez sur l’onglet Imagerie. Dans le groupe Image Classification (Classification d’image), cliquez sur Classification Tools (Outils de classification) et choisissez Label Objects for Deep Learning (Étiqueter les objets pour le Deep Learning).
La fenêtre Image Classification (Classification d’image) apparaît avec une structure vide. Comme vous souhaitez uniquement extraire les cocotiers de l’imagerie, vous allez créer une structure avec une seule classe.
- Dans la fenêtre Image Classification (Classification d’image), cliquez avec le bouton droit sur New Schema (Nouvelle structure) et sélectionnez Edit Properties (Mettre à jour les propriétés).
- Dans Name (Nom), saisissez Coconut Palms (Cocotiers).
- Cliquez sur Save (Enregistrer).
La structure est renommée dans la fenêtre Image Classification (Classification d’image). Vous pouvez y ajouter des classes.
- Cliquez avec le bouton droit sur Coconut Palms (Cocotiers) et choisissez Add New Class (Ajouter une nouvelle classe).
La fenêtre Add New Class (Ajouter une nouvelle classe) s’ouvre. Vous allez définir certains paramètres de la classe qui entraîneront le modèle.
- Dans Name (Nom), saisissez Palm (Palmier).
Spécifiez ensuite la valeur ou le code utilisé par l’ordinateur lorsque vous entraînez un modèle. Les palmiers reçoivent la valeur 1.
- Dans Value (Valeur), saisissez 1.
Enfin, choisissez la couleur utilisée lorsque vous identifiez des entités. La couleur sélectionnée est arbitraire mais, puisque vous numérisez des entités dans une imagerie essentiellement verte, le jaune est très visible.
- Pour Color (Couleur), choisir un jaune vif, tel que Solar Yellow (Jaune solaire).
Conseil :
Pour voir le nom d’une couleur, pointez le curseur sur le carré de couleur.
- Cliquez sur OK.
La classe Palm (Palmier) est ajoutée à la structure Coconut Palms (Cocotiers) dans la fenêtre Image Classification (Classification d’image). Vous allez créer des entités dotées de la classe Palm (Palmier) pour entraîner le modèle de Deep Learning.
Créer des échantillons d'apprentissage
Pour que l’échantillon d'arbres capturé dans la zone soit représentatif, vous allez numériser des entités sur l’ensemble de l’image. Ces entités sont ensuite chargées dans le modèle d’apprentissage profond avec un format spécifique, intitulé fragment d’image. Les fragments d’image sont de petits blocs d’imagerie découpés dans l’image source. Une fois que vous avez créé un nombre suffisant d’entités dans la fenêtre Classification d’image, vous les exporterez en tant que fragments d’image avec des métadonnées.
- Sur le ruban, cliquez sur l’onglet Map (Carte). Dans le groupe Navigate (Naviguer), cliquez sur Bookmarks (Géosignets) et choisissez Training Location 1 (Emplacement d’apprentissage 1).
La carte effectue un zoom sur la première zone de palmiers d’échantillon que vous allez identifier.
- Dans la fenêtre Image Classification (Classification d’image), sélectionnez la classe Palm (Palmier) et cliquez sur l’outil Circle (Cercle).
Vous allez utiliser cet outil pour dessiner des cercles autour de chaque palmier figurant dans l'affichage actuel. Les cercles sont dessinés du centre de l’entité vers l’extérieur, en mesurant le rayon de l’entité.
- Sur la carte, cliquez au centre d’un palmier et dessinez un cercle autour de l’arbre.
Un nouvel enregistrement de palmier est ajouté dans le groupe Labeled Objects (Objets étiquetés) de la fenêtre Image Classification (Classification d’image). Vous allez créer un enregistrement de palmier pour chaque arbre possible, de manière à avoir un grand nombre de fragments d’image où tous les palmiers sont marqués.
- Dessinez des cercles autour de chaque arbre figurant dans l'affichage cartographique.
Remarque :
Si vous avez besoin de plus d’aide pour mieux comprendre comment dessiner ces cercles, ou si vous souhaitez ignorer l’étape de numérisation des arbres, un jeu de données d’échantillon d’apprentissage est à votre disposition dans le dossier que vous avez téléchargé. Sur le ruban, sous l’onglet Map (Carte), dans le groupe Layer (Couche), cliquez sur Add Data (Ajouter des données). Accédez au dossier Databases et double-cliquez sur la géodatabase Results. Cliquez sur PalmTraining puis sur OK.
Lorsque vous avez terminé avec l’étendue du premier géosignet, vous disposez d’environ 180 échantillons enregistrés dans la fenêtre Training Samples Manager (Gestionnaire d’échantillons d’apprentissage).
Voici quelques détails pour vous aider à identifier les arbres :
- Vous pouvez vous déplacer et zoomer sur la carte pour faciliter la numérisation, mais assurez-vous de numériser autant d’arbres que possible dans l’étendue du géosignet.
- Si vous n’êtes pas sûr de l’emplacement exact d’un arbre, vous pouvez l’ignorer. Assurez-vous de créer des échantillons d’apprentissage précis.
- Les cercles que vous dessinez peuvent se superposer.
- Votre modèle final allant prendre en compte la taille des arbres que vous identifiez, assurez-vous de marquer les palmiers de petite comme de grande taille.
- Créez un échantillon d’apprentissage par palmier dans chacun des six géosignets Training Location (Emplacement d’apprentissage) restants.
Même si la numérisation des échantillons d'apprentissage peut être chronophage, il est avantageux de disposer d’un grand nombre d'échantillons. En effet, les résultats produits par le modèle sont d’autant plus précis que ses données d’apprentissage intègrent un nombre élevé d’échantillons.
Comme exemple, le jeu de données d’apprentissage utilisé pour entraîner le modèle fourni avec ce didacticiel comporte plus de 600 échantillons.
- Lorsque vous avez terminé de créer des échantillons, dans la fenêtre Image Classification (Classification d’image), cliquez sur Save (Enregistrer).
- Dans la fenêtre Save current training samples (Enregistrer les échantillons d’apprentissage actuels), sous Project (Projet), cliquez sur Databases (Bases de données) et double-cliquez sur la géodatabase de projet par défaut, Kolovai.gdb.
- Attribuez à la classe d’entités le nom GeorgetownCo_OSP et cliquez sur Save (Enregistrer).
- Fermez la fenêtre Image Classification (Classification d’images). Si la fenêtre Label Objects (Étiqueter les objets) s’ouvre, cliquez sur Yes (Oui).
Bien que vous ayez enregistré les échantillons d’apprentissage dans une géodatabase, vous devez actualiser celle-ci afin de pouvoir accéder à ce jeu de données.
- Sur le ruban, cliquez sur l'onglet Vue. Dans le groupe Windows (Fenêtres), cliquez sur Catalog Pane (Fenêtre Catalogue).
La fenêtre Catalogue apparaît.
- Développez Databases (Bases de données). Cliquez avec le bouton droit sur Kolovai et choisissez Refresh (Actualiser).
Votre classe d’entités PalmTraining est à présent visible.
- Dans la barre d’outils Accès rapide, cliquez sur Save (Enregistrer).
Créer des fragments d’image
La dernière étape avant l’entraînement du modèle consiste à exporter vos échantillons d’apprentissage au format adéquat, en tant que fragments d’image.
- Dans la partie supérieure de la fenêtre d'application ArcGIS Pro, dans Command Search (Recherche de commande), saisissez Export Training Data for Deep Learning (Exporter les données d’entraînement pour Deep Learning). Cliquez sur Export Training Data for Deep Learning (Exporter les données d’entraînement pour Deep Learning).
La fenêtre Geoprocessing (Géotraitement) s’affiche.
Vous allez définir les paramètres de création de fragments d’image. Tout d’abord, choisissez l’imagerie utilisée pour l’entraînement.
- Dans Input Raster (Raster en entrée), sélectionnez Imagery (Imagerie).
Vous allez à présent créer un dossier pour stocker les fragments d’image.
- Pour Output Folder (Dossier en sortie), saisissez imagechips.
Vous allez maintenant sélectionner la classe d’entités contenant les échantillons d’apprentissage que vous avez créés.
- Pour Input Feature Class Or Classified Raster Or Table (Classe d’entités, raster classé ou table en entrée), accédez à la géodatabase Kolovai. Cliquez sur PalmTraining puis sur OK.
Remarque :
Si vous n’avez pas dessiné les échantillons d’apprentissage, un jeu de données est à votre disposition. Accédez au dossier Databases et ouvrez la géodatabase Results. Sélectionnez PalmTraining puis cliquez sur OK.
Vous allez maintenant sélectionner, dans vos données d’apprentissage, le champ contenant la valeur de classe de chaque entité que vous avez dessinée. Rappelez-vous que la valeur de votre classe de palmiers est 1.
- Pour Class Value Field (Champ de valeur de classe), sélectionnez Classvalue.
Vous allez ensuite choisir le format en sortie de vos fragments. Le format que vous choisissez est basé sur le type de modèle de Deep Learning que vous souhaitez entraîner.
- Pour Image Format (Format d’image), choisissez JPEG format (Format JPEG).
Définissez maintenant la taille, en pixels, de chacun de vos fragments d’image. La taille du fragment d’image dépend de la taille des entités que vous essayez de détecter. Si l’entité est plus grande que les dimensions x et y des tuiles, votre modèle ne produira pas de bons résultats.
- Pour Tile Size X (Taille de tuile X) et Tile Size Y (Taille de tuile Y), saisissez 448.
Assurez-vous à présent que votre format en sortie est correct. Cela dépend également du type de modèle de Deep Learning que vous créez.
- Pour Metadata Format (Format de métadonnées), assurez-vous que PASCAL Visual Object Classes (Classes PASCAL Visual Object) est sélectionné.
Avant d’exécuter l’outil et de créer des fragments d’image, définissez les environnements de l’outil. Vous devez en particulier connaître la résolution de l’imagerie. Il est recommandé de créer des fragments d’image présentant la même résolution que votre imagerie en entrée.
- Cliquez sur l'onglet Environnements.
- Sous Raster Analysis (Analyse raster), pour Cell Size (Taille de cellule), choisissez Same as layer Imagery (Comme la couche d’imagerie).
- Cliquez sur Run (Exécuter).
Selon la configuration matérielle de votre ordinateur, l’exécution de l’outil prend quelques minutes.
Les fragments d’image sont créés et prêts à être utilisés pour entraîner un modèle de Deep Learning.
- Enregistrez votre projet.
Dans ce module, vous avez téléchargé une imagerie open source que vous avez ajoutée à un projet, vous avez utilisé la fenêtre Training Samples Manager (Gestionnaire d’échantillons d’apprentissage) pour créer des échantillons d’apprentissage et vous les avez exportés dans un format compatible avec un modèle de Deep Learning pour lancer l’apprentissage. Vous allez ensuite créer un modèle de Deep Learning et identifier tous les arbres dans la plantation.
Détecter les palmiers à l'aide d’un modèle d’apprentissage profond
Pour pouvoir commencer à détecter les palmiers, vous devez entraîner un modèle. Entraîner un modèle implique d’extraire vos données d’exemple d’entraînement et de les faire transiter par un réseau neuronal encore et encore. Ce processus qui sollicite de multiples ressources est géré par un outil de géotraitement, mais c’est ainsi que le modèle découvre ce qu’est un palmier et ce qu’il n’est pas. Une fois que vous disposez d’un modèle, appliquez-le à votre imagerie pour identifier automatiquement les arbres.
Entraîner un modèle d’apprentissage profond
L’outil de géotraitement Train Deep Learning Model (Entraîner le modèle de Deep Learning) utilise les fragments d’image que vous avez étiquetés pour déterminer quelles combinaisons de pixels dans une image donnée représentent les palmiers. Vous allez utiliser ces échantillons d’apprentissage pour entraîner un modèle de Deep Learning Single Shot Detector (SSD).
Selon la configuration matérielle de votre ordinateur, l’entraînement du modèle peut prendre plus d’une heure. Il est recommandé d’équiper votre ordinateur d’une unité de traitement graphique (GPU) dédiée. Si vous ne voulez pas entraîner le modèle, un modèle de Deep Learning est à votre disposition dans le dossier Provided Results du projet. Vous pouvez également passer directement à la section Détection des palmiers de ce didacticiel.
- Sur le ruban, dans Command Search (Recherche de commande), saisissez Train Deep Learning Model (Entraîner le modèle de Deep Learning). Sélectionnez Train Deep Learning Model (Entraîner le modèle de Deep Learning).
La fenêtre Géotraitement s’affiche.
Vous allez tout d’abord définir l’outil pour utiliser vos échantillons d’apprentissage.
- Dans la fenêtre Geoprocessing (Géotraitement), pour Input Training Data (Données d’apprentissage en entrée), accédez au dossier de projet Kolovai. Sélectionnez le dossier imagechips et cliquez sur OK.
Le chargement du dossier peut prendre quelques secondes.
Le dossier imagechips contient deux dossiers, deux fichiers texte, un fichier .json et un fichier .emd créés à partir de l’outil Export Training Data for Deep Learning (Exporter les données d’apprentissage pour le Deep Learning). Le fichier esri_model_definition.emd est un modèle de formulaire dans lequel le chercheur ayant entraîné le modèle d'apprentissage va indiquer des informations telles que la structure d'apprentissage profond, le chemin d’accès au fichier du modèle entraîné, les noms de classes, le type de modèle et les spécifications de l’image utilisée pour l’apprentissage. Quant au fichier .emd, il assure la communication entre le modèle entraîné et ArcGIS Pro.
Vous allez à présent créer un dossier pour stocker votre modèle.
- Dans Output Model (Modèle en sortie), saisissez classify_palms.
Vous allez maintenant définir le nombre d’époques que votre modèle exécutera. Un epoch est un cycle entier à travers le jeu de données d’entraînement. Pendant chaque époque, le jeu de données d’entraînement que vous avez stocké dans le dossier imagechips va et vient une fois à travers le réseau neuronal.
- Dans Max Epochs (Nombre maximal d’époques), saisissez 50.
Vous allez maintenant vérifier que vous entraînez le type de modèle correct pour détecter les objets dans l’imagerie. Le type de modèle détermine l’algorithme de Deep Learning et le réseau neuronal que vous utiliserez pour entraîner le modèle. Vous utilisez dans ce cas la méthode Single Shot Detector car elle est optimisée pour la détection d’objet.
- Développez Model Parameters (Paramètres du modèle) et vérifiez que Model Type (Type de modèle) est défini sur Single Shot Detector (Object detection) (Détecteur de tir unique (Détection des objets)).
Vous allez maintenant définir la taille de lot. Ce paramètre détermine le nombre d’échantillons d’apprentissage allant être entraînés à la fois.
- Dans Batch Size (Taille de lot), saisissez 8.
Vous allez ensuite vous assurer que le modèle s’exécute pour l’ensemble des 100 époques.
- Développez Advanced (Avancé) et décochez la case Stop when model stops improving (Arrêter lorsque le modèle ne s’améliore plus).
- Acceptez le reste des paramètres par défaut.
Les arguments de modèle, valeurs de paramètre utilisées pour entraîner le modèle, varient en fonction du type de modèle que vous choisissez et peuvent être personnalisés. Pour plus d’informations sur le choix des arguments de modèle, reportez-vous à la documentation Entraîner le modèle d’apprentissage profond.
Pour terminer, si vous disposez d’un GPU, vous allez définir l’outil de manière à l’exécuter sur le GPU de votre ordinateur pour un traitement plus rapide. Dans le cas contraire, passez directement à l’étape suivante.
- Si votre ordinateur est équipé d’un GPU, cliquez sur l’onglet Environments (Environnements). Sous Processor Type (Type de processeur), définissez Processor Type (Type de processeur) sur GPU.
- Cliquez sur Run (Exécuter).
Remarque :
L’exécution de cet outil peut prendre plus d’une heure.
En cas d’échec de l’exécution du modèle, réduire le paramètre Batch Size (Taille de lot) peut aider. Vous devrez peut-être régler ce paramètre sur 4 ou 2 et exécuter de nouveau l’outil. Cela peut toutefois affecter la qualité des résultats de votre modèle entraîné.
Détection des palmiers
L'extraction d’entités à partir d’images consiste essentiellement à préparer les données, à créer des échantillons d'apprentissage et à entraîner le modèle. À présent que ces étapes sont terminées, vous allez utiliser un modèle entraîné pour détecter les palmiers dans l’ensemble de l’imagerie. La détection d’objet est un processus nécessitant généralement plusieurs tests pour produire les meilleurs résultats. Vous pouvez changer plusieurs paramètres afin que votre modèle produise les meilleurs résultats. Pour tester rapidement ces paramètres, vous allez essayer de détecter des arbres dans une petite section de l’image. Une fois que vous êtes satisfait des résultats, vous allez étendre les outils de détection à l’image entière.
Remarque :
Si vous n’avez pas entraîné de modèle dans la section précédente, un paquetage de Deep Learning est disponible dans le dossier Provided Results (Résultats fournis).
La classification des entités est un processus qui sollicite considérablement l’unité de traitement graphique (GPU) et qui peut durer un certain temps, selon la configuration matérielle de votre ordinateur. Si vous préférez ne pas détecter les palmiers, des résultats sont disponibles et vous pouvez passer directement à la section Affiner les entités détectées.
- Sur le ruban, cliquez sur l’onglet Map (Carte). Dans le groupe Navigate (Naviguer), cliquez sur Bookmarks (Géosignets). Choisissez Detection Area (Zone d’étude).
- Sur le ruban, dans Command Search (Recherche de commande), saisissez Detect Objects Using Deep Learning (Détecter des objets à l’aide du Deep Learning). Choisissez Detect Objects Using Deep Learning (Détecter des objets à l’aide du Deep Learning).
Vous allez d’abord définir l’imagerie dans laquelle vous souhaitez détecter les entités.
- Dans l’outil Detect Objects Using Deep Learning (Détecter des objets à l’aide du Deep Learning), pour Input Raster (Raster en entrée), choisissez Imagery (Imagerie).
Vous allez ensuite nommer la classe d’entités des objets détectés.
- Dans Output Detected Objects (Objets détectés en sortie), saisissez DetectedPalms.
Vous allez à présent choisir le modèle que vous avez créé pour détecter les palmiers.
- Pour Model Definition (Définition du modèle), accédez au dossier classify_palms. Cliquez sur le fichier de paquetage du modèle de Deep Learning classify_palms.dlpk. Cliquez sur OK.
Remarque :
Si vous n’avez pas procédé à l’entraînement d’un modèle de Deep Learning, accédez au dossier du projet. Ouvrez Provided Results. Ouvrez classify_palms. Cliquez sur le fichier de paquetage du modèle de Deep Learning classify_palms.dlpk. Cliquez sur OK.
Vous allez maintenant définir certains arguments du modèle. Les arguments permettent d’optimiser l’exécution du modèle en vue des meilleurs résultats.
Lorsque la convolution est exécutée sur l’imagerie dans la modélisation du réseau neuronal convolutif, les données sont de fait restreintes ; par conséquent, les pixels situés au bord de l’image sont beaucoup moins utilisés au cours de l’analyse que les pixels intérieurs. Le paramètre padding (remplissage) ajoute une limite de pixels supplémentaire aux bords externes de l’image. La perte d’informations due à la restriction des données et à la validité des pixels des bords est ainsi limitée. Vous allez laisser ce paramètre inchangé.
L’argument threshold (seuil) correspond au seuil de confiance à partir duquel il est acceptable d’étiqueter un objet en tant que palmier. Vous pouvez ajuster ce nombre pour obtenir la précision désirée.
- Pour threshold (seuil), saisissez 0.2.
Vous allez maintenant définir l’argument nms_overlap. Cet argument détermine le degré d’intersection autorisé pour chaque entité. Un nombre plus faible de ces arguments indiquerait que les objets ne peuvent pas se chevaucher et sont considérés comme des entités individuelles.
- Pour nms_overlap, conservez la valeur par défaut 0.1.
Vous allez maintenant définir la taille de lot.
- Pour batch_size, saisissez 8.
Avant d’exécuter l’outil, vous allez définir certains environnements.
- Cliquez sur l'onglet Environnements.
Vous allez ensuite définir l’étendue de traitement. Ce paramètre force l’outil à ne traiter que l’imagerie se trouvant au sein de l’étendue actuelle de la carte. Étant donné que le processus de détection d’objet sollicite considérablement le matériel, il est préférable d’exécuter l’outil sur une zone plus petite pour tester les paramètres avant de l’exécuter sur un jeu de données d’imagerie complet.
- Sous Processing Extent (Étendue de traitement), définissez Extent (Étendue) sur Current Display Extent (Étendue actuellement affichée).
Après avoir sélectionné Current Display Extent (Étendue actuellement affichée), les coordonnées de la zone d’emprise géographique de l’étendue apparaissent.
- Sous Raster Analysis (Analyse raster), pour Cell Size (Taille de cellule), sélectionnez Same as layer Imagery (Comme la couche d’imagerie).
- Si vous le souhaitez, si votre ordinateur est doté d’un GPU, sous Processor Type (Type de processeur), pour Processor Type (Type de processeur), choisissez GPU.
- Cliquez sur Run (Exécuter).
Que ce soit avec le processeur, le GPU ou la RAM, l’exécution de l’outil prend plusieurs minutes, selon les performances de votre matériel.
Examinez les résultats. Vous pouvez essayer de tester les arguments pour voir comment ils influencent les résultats.
Une fois que vous disposez d’arguments offrant de bons résultats, détectez les palmiers dans toute l’image.
- Dans l’onglet Environments (Environnements), pour Processing Extent (Étendue de traitement), choisissez Default (Par défaut).
- Cliquez sur Run (Exécuter).
Dans la mesure où l’outil s’exécute sur le jeu de données d’imagerie entier, le temps de traitement augmente en fonction du matériel de votre ordinateur.
Remarque :
Si vous n’exécutez pas le modèle pour détecter les palmiers, un jeu de données de palmier est fourni. Pour ajouter la classe d’entités DetectedPalms à la carte, sur le ruban, sous l’onglet Map (Carte), dans le groupe Layer (Couche), cliquez sur Add Data (Ajouter des données). Accédez au dossier Kolovai et au dossier Provided Results, ouvrez la géodatabase Results, puis double-cliquez sur la classe d’entités DetectedPalms.
Une fois l’exécution de l’outil terminée, examinez les résultats. La couleur des résultats finaux peut différer de l’image fournie.
Vous constatez que des entités se superposent au niveau de certains de vos palmiers. Cela signifie que de nombreux arbres ont été identifiés à de multiples reprises, d’où un nombre total d’arbres erroné. Après avoir changé la symbologie pour clarifier cette situation, vous allez supprimer ces entités superposées à l’aide d’un outil de géotraitement.
- Dans la fenêtre Contents (Contents), double-cliquez sur le symbole de la couche DetectedPalms.
La fenêtre Symbology (Symbologie) apparaît.
- Cliquez sur l’onglet Properties (Propriétés).
- Sous Appearance (Apparence), définissez les paramètres suivants :
- Dans Color (Couleur), sélectionnez No color (Aucune couleur).
- Dans Outline color (Couleur du contour), choisissez Solar yellow (Jaune solaire).
- Dans Outline width (Largeur du contour), saisissez 1.5.
- Cliquez sur Apply (Appliquer).
Examinez à nouveau les résultats maintenant que la symbologie a été changée.
Vous allez à présent supprimer les polygones en double.
- Enregistrez le projet.
Affiner les entités détectées
Il est important de s’assurer que le nombre de palmiers est exact. Puisque de nombreux arbres ont été comptés plusieurs fois, vous allez utiliser l’outil Suppression non maximale pour résoudre ce problème. Toutefois, soyez prudent : les couverts forestiers de palmiers peuvent se superposer. Vous allez donc supprimer les entités qui sont clairement des doubles du même arbre tout en veillant à ne pas supprimer les arbres distincts se superposant.
- Sur le ruban, dans Command Search (Recherche de commande), saisissez Non Maximum Suppression (Suppression non maximale). Sélectionnez Non Maximum Suppression (Suppression non maximale).
Vous allez d’abord choisir votre couche de palmiers créée par le modèle.
- Pour Input Feature Class (Classe d’entités en entrée), choisissez DetectedPalms.
Remarque :
Si vous avez ignoré la section précédente, un jeu de données de palmier est fourni. Pour ajouter la classe d’entités DetectedPalms à la carte, sur le ruban, sous l’onglet Map (Carte), dans le groupe Layer (Couche), cliquez sur Add Data (Ajouter des données). Accédez au dossier Kolovai et au dossier Provided Results, ouvrez la géodatabase Results, puis double-cliquez sur la classe d’entités DetectedPalms.
Chaque palmier de ce jeu de données présente un score de confiance représentant le degré de précision auquel le modèle a identifié chaque entité. Vous allez saisir ce champ dans l’outil.
- Dans Confidence Score Field (Champ de score de confiance), choisissez Confidence (Confiance).
Chaque entité détectée a également été marquée avec sa classe appropriée. Rappelez-vous que ce modèle comportait une classe, Palm. Ceci a été enregistré lorsque vous avez utilisé le modèle.
- Pour Class Value Field (Champ de valeur de classe), sélectionnez Class.
- Dans Output Feature Class (Classe d’entités en sortie), saisissez DetectedPalms_NMS.
Le paramètre Max Overlap Ratio (Ratio de superposition maximale) détermine le degré de superposition pouvant exister entre deux entités avant qu’elles ne soient considérées comme formant la même entité. Une valeur supérieure indique que deux entités peuvent se superposer davantage. L’entité présentant le score de confiance le plus bas est supprimée. Vous allez définir l’outil de manière à supprimer les arbres se superposant à plus de 50 %.
- Dans Max Overlap Ratio (Ratio de superposition maximale), saisissez 0.5.
- Cliquez sur Run (Exécuter).
Une nouvelle couche est ajoutée dans la fenêtre Contents (Contenu). Elle possède la même symbologie que la couche DetectedPalms.
- Dans la fenêtre Contents (Contenu), désactivez la couche Detected Palms (Palmiers détectés).
Vous constaterez que moins d’arbres se superposent dans la nouvelle couche.
Vous pouvez réexécuter l’outil selon les besoins avec différentes valeurs Max Overlap Ratio (Ratio de superposition maximale) pour obtenir des résultats optimaux.
- Supprimez la couche DetectedPalms de la carte.
- Dans la fenêtre Contents (Contenu), cliquez sur DetectedPalms_NMS deux fois et renommez-la Detected Palm Trees (Palmiers détectés).
- Désactivez la couche Detected Palms Trees (Palmiers détectés).
- Enregistrez votre projet.
Vous venez d’entraîner et d’utiliser un modèle pour détecter les palmiers. Vous allez à présent utiliser des fonctions raster pour évaluer l’état sanitaire de chaque arbre détecté dans votre zone d’étude.
Remarque :
Il est important de comprendre que les résultats de votre modèle ne seront pas nécessairement parfaits la première fois. Entraîner et mettre en œuvre un modèle de Deep Learning est un processus pouvant nécessiter plusieurs itérations pour fournir les meilleurs résultats. Pour obtenir des résultats optimaux, procédez comme suit :
- Augmentez la taille d’échantillon initiale des entités.
- Assurez-vous que vos échantillons d’entraînement capturent avec précision les entités à détecter.
- Assurez-vous que vos échantillons d’entraînement comprennent des entités de différentes tailles.
- Ajustez les paramètres des outils de géotraitement.
- Entraînez de nouveau un modèle à l’aide des paramètres avancés de l’outil Train Deep Learning Model (Entraîner le modèle de Deep Learning).
Évaluer l’état sanitaire de la végétation
Dans le module précédent, vous avez utilisé un modèle de Deep Learning pour extraire les cocotiers de l’imagerie. Dans ce module, vous allez calculer un indice permettant d’évaluer l’état sanitaire de la végétation dans cette même image.
Pour évaluer l’état sanitaire de la végétation, vous allez calculer l’indice de résistance atmosphérique visible (Visible Atmospherically Resistant Index, VARI), élaboré comme mesure indirecte de l’indice de surface foliaire (leaf area index, LAI) et de la fraction de couverture végétale (vegetation fraction, VF), en utilisant uniquement les valeurs de réflectance des longueurs d’onde visibles :
(Rg - Rr) / (Rg + Rr - R(Rg - Rb))
où Rr, Rv et Rb sont respectivement les valeurs de réflectance des bandes rouge, verte et bleue (Gitelson et autres, 2002).
Habituellement, on évalue l'état sanitaire de la végétation à l'aide des valeurs de réflectance des bandes de longueurs d’onde visibles et du proche infrarouge (NIR), comme dans l’indice de végétation par différence normalisée (NDVI). Cependant, l’imagerie que vous avez téléchargée d’OpenAerialMap est constituée d’une image multibande, dont les trois bandes font partie du spectre électromagnétique visible. Vous allez donc plutôt utiliser l’indice VARI.
Calculer l’indice VARI
L’indice VARI est calculé à partir des trois bandes de l’imagerie OpenAerialMap. Pour calculer l’indice VARI, vous allez utiliser la fonction raster Band Arithmetic (Arithmétique de bande). Les fonctions raster sont plus rapides que les outils de géotraitement : au lieu de créer un nouveau jeu de données raster, elles analysent en temps réel les pixels à mesure que vous vous déplacez et zoomez sur l’image.
- Dans le ruban, cliquez sur l’onglet Imagerie. Dans le groupe Analyse, cliquez sur Fonctions raster.
La fenêtre Fonctions raster apparaît.
- Dans la fenêtre Raster Functions (Fonctions raster), recherchez et sélectionner la fonction Band Arithmetic (Arithmétique de bande).
- Dans la fonction Band Arithmetic Properties (Propriétés de l’arithmétique de bande), définissez les paramètres suivants :
- Pour Raster, sélectionnez la couche raster Imagery (Imagerie).
- Dans Method (Méthode), sélectionnez VARI. Pour cette fonction, vous devez fournir le numéro d’indice de bande correspondant aux bandes en entrée de la formule. Sous le paramètre Band Indexes (Indices de bande), la propriété Input (Entrée) affiche Red Green Blue (Rouge Vert Bleu) ; vous allez donc indiquer les indices de bande correspondant respectivement aux bandes rouge, verte et bleue. Assurez-vous de séparer chaque bande par un seul espace.
- Dans Band Indexes (Indices de bande), saisissez 1 2 3.
- Cliquez sur Créer une nouvelle couche.
La couche VARI est ajoutée à la fenêtre Contents (Contenu) avec le nom Band Arithmetic_Imagery (Arithmétique de bande_Imagerie). En vous déplaçant et en zoomant sur la zone, vous pouvez distinguer des entités telles que le littoral, les routes, les bâtiments et les champs.
- Dans la fenêtre Contents (Contenu), vérifiez que la couche Band Arithmetic_Imagery (Arithmétique de bande_Imagerie) est sélectionnée.
Vous allez maintenant changer la manière dont le raster est dessiné sur la carte afin que la symbologie VARI soit plus claire.
- Sur le ruban, cliquez sur l’onglet Raster Layer (Couche raster).
- Dans le groupe Rendering (Rendu), cliquez sur le menu déroulant Stretch Type (Type d’étirement) et sélectionnez Standard Deviation (Écart type).
- Dans la fenêtre Contents (Contenu), renommez la couche Band Arithmetic_Imagery (Arithmétique de bande_Imagerie) VARI.
Extraire l’indice VARI des cocotiers
Il est utile d'avoir une couche raster affichant l’indice VARI, mais elle n’est pas forcément exploitable d'emblée. Pour déterminer quels arbres ont besoin de soins, vous devez connaître l’indice VARI moyen arbre par arbre. Pour ce faire, vous allez extraire la valeur VARI moyenne sous-jacente et la symboliser de manière à représenter les arbres en bonne santé et ceux qui doivent être traités.
Pour commencer, vous allez convertir les entités surfaciques en points.
- Sur le ruban, dans Command Search (Recherche de commande), saisissez Feature To Point (Entité vers points). Choisissez Feature To Point (Entité vers points).
- Dans l’outil Feature To Point (Entité vers points), saisissez les paramètres suivants :
- Dans Input Features (Entités en entrée), désactivez la couche Detected Palms Trees (Palmiers détectés).
- Pour Output Feature Class (Classe d’entités en sortie), saisissez PalmTree_Points.
- Cliquez sur Run (Exécuter).
Vous avez maintenant une classe d'entités ponctuelles au centroïde de chaque polygone détecté. Si vous zoomez sur plusieurs emplacements, vous pourrez constater, en utilisant l’outil Measure (Mesurer), que les palmiers ont un rayon moyen de 3 mètres environ. À l’étape suivante, vous allez créer une couche surfacique présentant une zone tampon de 3 mètres autour de chaque point.
Remarque :
L’outil Mesurer se trouve sur le ruban, dans le groupe Inquiry (Requête) de l’onglet Map (Carte).
- Sur le ruban, dans Command Search (Recherche de commande), saisissez Pairwise Buffer (Zone tampon deux par deux). Choisissez Pairwise Buffer (Zone tampon deux par deux).
- Dans l’outil Pairwise Buffer (Zone tampon deux par deux), saisissez les paramètres suivants :
- Pour Input Features (Entités en entrée), choisissez PalmTree_Points.
- Pour Output Feature Class (Classe d’entités en sortie), saisissez PalmTreeBuffer.
- Dans Distance, saisissez 3 puis choisissez Meters (Mètres).
- Cliquez sur Run (Exécuter).
Vous disposez maintenant d’une classe d’entités surfaciques représentant l’emplacement et la forme générale de chaque couvert forestier de palmiers.
- Dans la fenêtre Contents (Contenu), désactivez les couches VARI et PalmTree_Points.
Votre carte affiche les couverts forestiers estimés des palmiers dans l’imagerie.
À présent, vous allez extraire l’indice VARI moyen de chaque polygone. L’outil Zonal Statistics as Table (Statistiques zonales (table)) examine chaque polygone que vous avez créé l’un après l’autre, recherche tous les pixels VARI situés dans le polygone et calcule l’indice VARI moyen de ce polygone.
- Sur le ruban, dans Command Search (Recherche de commande), saisissez Zonal Statistics as Table (Statistiques zonales (table)). Choisissez Zonal Statistics as Table (Statistiques zonales (table)).
- Dans l’outil Zonal Statistics as Table (Statistiques zonales (table)), saisissez les paramètres suivants :
- Dans Input raster or feature zone data (Données raster ou vecteur de zones en entrée), choisissez PalmTreeBuffer.
- Dans Zone Field (Champ de zone), sélectionnez ORIG_FID.
- Dans Input Value Raster (Raster de valeurs en entrée), sélectionnez VARI.
- Dans Output Table (Table en sortie), saisissez MeanVARI_per_Palm.
- Assurez-vous que la case Ignore NoData in Calculations (Ignorer NoData dans les calculs) est cochée.
- Dans Statistics Type (Type de statistique), sélectionnez Mean (Moyenne).
Définissez Zone Field (Champ de zone) sur ORIG_FID pour obtenir des statistiques arbre par arbre. Cet attribut est l’ID unique issu de la couche DetectPalms d’origine.
- Cliquez sur Run (Exécuter).
La table en sortie est ajoutée au bas de la fenêtre Contents (Contenu). Si vous l’ouvrez, vous y trouverez la valeur du FID d’origine et une colonne intitulée MEAN (Moyenne) contenant la valeur VARI moyenne. Vous allez joindre cette table à la couche PalmTreesBuffer pour obtenir une classe d’entités avec l’indice VARI moyen pour chaque palmier détecté.
- Sur le ruban, dans Command Search (Recherche de commande), saisissez Join Field (Champ de jointure). Choisissez Join Field (Champ de jointure).
- Dans l’outil Join Field (Champ de jointure), saisissez les paramètres suivants :
- Dans Input Table (Table en entrée), choisissez PalmTreeBuffer.
- Dans Input Join Field (Champ de jointure en entrée), sélectionnez ORIG_FID.
- Dans Join Table (Table de jointure), sélectionnez MeanVARI_per_Palm.
- Pour Join Table Field (Champ de table de jointure), choisissez ORIG_FID.
- Pour Transfer Fields (Champs de transfert), choisissez MEAN (MOYENNE).
- Cliquez sur Run (Exécuter).
La couche PalmTreeBuffer possède désormais un champ qui lui est joint, intitulé MEAN (Moyenne). Vous allez renommer cette couche et la symboliser pour acquérir une meilleure compréhension de vos données.
- Dans la fenêtre Contents (Contenu), renommez la couche PalmTreeBuffer Palm Trees VARI (Indice VARI de palmiers).
- Dans la fenêtre Contents (Contenu), vérifiez que l'option Palm Trees VARI (Indice VARI de palmiers) est sélectionnée. Sur le ruban, dans l’onglet Feature Layer (Couche d’entités), dans le groupe Drawing (Dessin), cliquez sur Symbology (Symbologie).
La fenêtre Symbology (Symbologie) apparaît.
- Dans Primary symbology (Symbologie principale), sélectionnez Graduated Colors (Couleurs graduées).
- Dans Field (Champ), sélectionnez MEAN (Moyenne).
- Le cas échéant, dans Method (Méthode), sélectionnez Natural Breaks (Jenks) (Seuils naturels [Jenks]) et définissez Classes sur 4.
- Dans Color scheme (Combinaison de couleurs), cliquez sur le menu déroulant et cochez les options Show all (Afficher tout) et Show names (Afficher les noms). Faites défiler la liste vers le bas et sélectionnez la combinaison de couleurs Red-Yellow-Green (4 Classes) (Rouge-Jaune-Vert (4 classes)).
- Sous Classes, cliquez sur chaque étiquette et renommez les classes de la première à la dernière comme suit : Needs Inspection (Examen nécessaire), Declining Health (État sanitaire en détérioration), Moderate (État correct) et Healthy (En bonne santé).
Vous disposez maintenant d’une carte avec une classe d’entités indiquant l’emplacement et l’état sanitaire de chaque palmier dans l’image.
- Enregistrez le projet.
Facultatif : attribuez des tâches sur le terrain et surveillez l’avancement du projet.
Un des principaux avantages de l’utilisation d’ArcGIS Pro pour extraire des entités et analyser des images est qu’il peut être intégré à toute la plateforme ArcGIS. Dans le dernier didacticiel, vous avez utilisé les outils de Deep Learning de ArcGIS Pro pour identifier les cocotiers dans des images. Ces arbres peuvent être stockés en tant qu’entités dans une classe d'entités exploitable dans un SIG. Pour développer votre processus, vous pouvez publier vos résultats dans le cloud, configurer un modèle d’application web à des fins d'assurance qualité, affecter du personnel de terrain à des tâches d'inspection d’arbres et surveiller l'avancement du projet sur un tableau de bord.
Publier sur ArcGIS Online
Pour exploiter vos données à l’aide d’applications configurables, vous devez publier les palmiers en tant que service d’entités dans ArcGIS Online ou dans ArcGIS Enterprise. Dans ArcGIS Pro, cliquez avec le bouton droit sur la couche PalmTreesVARI dans la fenêtre Contents (Contenu), puis sélectionnez Sharing (Partage) et Share as Web Layer (Partager en tant que couche web). Elle sera publiée dans votre compte ArcGIS Online.
En savoir plus sur la publication d’un service d’entités.
Utiliser des modèles d’application pour vérifier la précision du Deep Learning
La précision des résultats des outils d’apprentissage profond est proportionnelle à celle des échantillons d'apprentissage et à la qualité du modèle entraîné. Autrement dit, ces résultats ne sont pas toujours parfaits. Pour vous faire une idée de la qualité des résultats du modèle, vous pouvez examiner le score Confidence (Confiance) de chaque arbre, stocké dans les résultats d'apprentissage profond, pour vérifier s’il est inférieur ou non à une valeur donnée. Plutôt que d’utiliser un filtre d’attributs dans ArcGIS Pro pour zoomer sur chaque enregistrement, le modèle d’application web configurable Image Visit (Visite d’image) vous permet de vérifier rapidement la précision de vos résultats dans une application web.
En savoir plus sur l’application Image Visit (Visite d’image)
Utiliser ArcGIS Workforce pour mener des vérifications sur le terrain
ArcGIS Workforce est une application mobile qui tire parti de l’emplacement des entités pour coordonner votre personnel sur le terrain. Vous pouvez utiliser l’application Workforce pour affecter des tâches aux membres de votre organisation : des travailleurs sur le terrain peuvent ainsi être attribués à tous les arbres dont le score d’indice VARI est « Needs Inspection » (Examen nécessaire), pour les examiner et faire des recommandations de traitement.
Pour en savoir plus sur ArcGIS Workforce
Utiliser ArcGIS Dashboards pour surveiller l’avancement du projet
Pour finir, vous pouvez surveiller l’avancement des affectations émises dans votre projet ArcGIS Workforce via ArcGIS Dashboards. ArcGIS Dashboards est une application web configurable offrant des fonctionnalités de visualisation et d’analyse permettant d’avoir une vue en temps réel des opérations du personnel, des services et des tâches.
Dans ce didacticiel, vous avez récupéré des images de drone open source et créé des échantillons d’apprentissage à partir des palmiers des images. Ces fragments d’image ont été transmis à un chercheur et utilisés par un modèle de Deep Learning entraîné afin d’extraire de l’image plus de 11 000 palmiers.
Vous avez découvert le Deep Learning et l’analyse d’images, ainsi que les applications configurables du système ArcGIS. Ce processus est applicable à une grande variété de tâches, dès lors que vous disposez de l’imagerie et des connaissances nécessaires en matière de modèles d’apprentissage profond. Par exemple, vous pouvez utiliser ces outils pour évaluer les dommages structurels provoqués par des catastrophes naturelles, compter le nombre de véhicules en circulation dans une zone urbaine ou repérer les structures à proximité de zones à risque géologique.
Vous trouverez d’autres didacticiels dans la bibliothèque des didacticiels.