Entraîner le modèle de classification du nuage de points (3D Analyst)

Synthèse

Entraîne un modèle Deep Learning pour la classification du nuage de points.

En savoir plus sur l’entraînement d’un modèle de classification du nuage de points

Utilisation

  • L’outil requiert l’installation de Deep Learning Essentials, qui fournit de nombreuses solutions de réseau neuronal incluant des architectures neuronales pour la classification des nuages de points.

    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.

  • Le modèle de classification du nuage de points peut être entraîné à l’aide d’une carte graphique NVIDIA compatible CUDA ou du CPU. Il est généralement plus rapide d’utiliser le GPU que le CPU. Utilisez le CPU uniquement si aucun GPU n’est disponible. Si vous utilisez l’unité centrale pour l’entraînement, commencez par utiliser l’architecture RandLA-Net car celle-ci consomme moins de mémoire que l’architecture PointCNN. Vous pouvez également tester l’utilisation de l’échantillon d’entraînement le plus petit possible afin d’estimer le temps nécessaire au traitement des données avant de procéder à l’entraînement avec le jeu de données d’entraînement complet.

  • Si vous utilisez l’unité de traitement graphique (GPU) pour entraîner un modèle sur un ordinateur doté de plusieurs cartes graphiques, l’outil utilisera la carte graphique de l’ordinateur la plus rapide. Vous pouvez aussi spécifier l’unité de traitement graphique à l’aide du paramètre d’environnement ID GPU. Si l’ordinateur est doté de plusieurs cartes graphiques, vous pouvez optimiser les performances de l’entraînement en dédiant la carte graphique possédant les meilleures ressources de calcul à l’entraînement et la carte graphique possédant moins de ressources à l’écran. Si l’unité de traitement graphique est également utilisée pour l’écran, sa mémoire disponible sera diminuée par le système d’exploitation et toute application utilisant l’écran au cours du processus d’entraînement.

  • L’utilisation d’un modèle pré-entraîné est intéressante, en particulier pour faire face aux limitations en termes de données, de temps ou de ressources de calcul. Les modèles pré-entraînés réduisent la nécessité d’un entraînement complet et offrent un point de départ fiable pour créer plus rapidement un modèle utile. Pour profiter du modèle pré-entraîné, les nouvelles données d’entraînement doivent être compatibles. Vérifiez que les nouvelles données d’entraînement ont les mêmes attributs et codes de classe que celles qui ont permis de créer le modèle pré-entraîné. Si les codes de classe dans les données d’entraînement ne correspondent pas à celles du modèle pré-entraîné, les classes des données d’entraînement doivent être réappariées.

  • Lorsque l’outil est en cours d’exécution, son message de progression signale les statistiques suivantes sur les résultats d’entraînement qui ont été atteints pour chaque époque :

    • Époque : numéro d’époque auquel le résultat est associé
    • Perte d’entraînement : résultat de la fonction de perte d’entropie dont la moyenne a été calculée pour les données d’entraînement
    • Perte de validation : résultat de la fonction de perte d’entropie qui a été déterminée lors de l’application du modèle entraîné dans l’époque sur les données de validation
    • Exactitude : ratio de points dans les données de validation qui ont été correctement classés par le modèle entraîné dans l’époque (vrais positifs) par rapport à tous les points dans les données de validation
    • Précision : macro moyenne de la précision pour tous les codes de classe
    • Rappel : macro moyenne du rappel pour tous les codes de classe
    • Score F1 : moyenne harmonique de la macro moyenne des valeurs de précision et de rappel pour tous les codes de classe

    Un modèle qui atteint une perte d’entraînement faible, mais une perte de validation élevée est considéré comme étant en état de sur-ajustement par rapport aux données d’entraînement : il détecte les modèles des artefacts dans les données d’entraînement. En conséquence, le modèle ne fonctionne pas bien pour les données de validation. Un modèle qui atteint une perte d’entraînement élevée et une perte de validation élevée est considéré comme étant en état de sous-ajustement par rapport aux données d’entraînement : aucun modèle ne peut être appris efficacement pour produire un modèle utilisable.

    En savoir plus sur l’évaluation des résultats d’entraînement du nuage de points

  • Un dossier permettant de stocker les modèles des points de contrôle (modèles créés à la fin de chaque époque) est créé. Le nom du dossier est le même que celui avec le suffixe .checkpoints et il est stocké dans la valeur du paramètre Localisation du modèle en sortie. Une fois l’entraînement terminé, une table CSV dont le nom est identique à la valeur Nom du modèle en sortie et se termine par _stats.csv est créée dans le dossier des points de contrôle. Cette table inclut les champs suivants concernant les résultats obtenus pour chaque code de classe et époque :

    • Epoch : numéro de l’époque associée aux résultats de la ligne. Cette valeur correspond au modèle créé dans le répertoire de modèles de points de contrôle. Les résultats sont obtenus en appliquant le modèle entraîné dans l’époque sur les données de validation.
    • Class_Code : code de classe pour lequel les résultats sont signalés.
    • Precision : ratio des points qui ont été correctement classés (vrais positifs) par rapport à tous les points qui ont été classés (vrais positifs et faux positifs).
    • Recall : ratio des points correctement classés (vrais positifs) par rapport à tous les points qui auraient dû être classés avec cette valeur (vrais positifs et faux positifs).
    • F1_Score : moyenne harmonique de la précision et de la valeur de rappel.
  • La mémoire dédiée utilisée au cours de l’entraînement est la somme de la mémoire allouée par la structure de Deep Learning et de la taille des données traitées dans chaque lot d’une itération à une époque donnée. La taille des données dans chaque lot dépend du nombre d’attributs ponctuels supplémentaires spécifiés dans le paramètre Attribute Selection (Sélection des attributs), du nombre total de points dans un bloc donné et du nombre de blocs qui seront traités dans chaque lot, tel que spécifié par le paramètre Batch Size (Taille de lot). Le nombre maximal de points par bloc est déterminé lorsque les données d’entraînement sont exportées. Cette valeur doit être supposée lors de l’estimation de la quantité de mémoire potentielle de l’opération d’entraînement.

  • L’option Hauteur relative dans le paramètre Sélection des attributs est un attribut qui identifie la hauteur d’un point à partir d’une surface de référence, telle qu’un modèle d’élévation de terre nue. L’utilisation de cet attribut peut potentiellement améliorer la capacité du modèle à apprendre des relations directionnelles au cours de l’entraînement.

Paramètres

ÉtiquetteExplicationType de données
Données d’entraînement en entrée

Données d’entraînement du nuage de points (fichier *.pctd) utilisées pour entraîner le modèle de classification.

File
Localisation du modèle en sortie

Dossier existant qui stockera le nouveau répertoire contenant le modèle de Deep Learning.

Folder
Nom du modèle en sortie

Le nom du fichier de définition du modèle Esri en sortie (*.emd), du paquetage de Deep Learning (*.dlpk) et du répertoire qui sera créé pour les stocker.

String
Modèle pré-entraîné
(Facultatif)

Le modèle préalablement entraîné qui sera affiné. Lorsqu’un modèle préalablement entraîné est fourni, les données d’entraînement en entrée doivent avoir les mêmes attributs, codes de classes et nombre maximal de points que ceux utilisés par les données d’entraînement qui ont permis de générer ce modèle.

File
Sélection des attributs
(Facultatif)

Détermine les attributs ponctuels qui seront utilisés pour entraîner le modèle. Seuls les attributs présents dans les données d’entraînement du nuage de points seront disponibles. Aucun attribut supplémentaire n’est inclus par défaut.

  • IntensitéLa mesure de la magnitude du retour de l’impulsion lidar sera utilisée.
  • Numéro de retourLa position ordinale du point obtenue d’une impulsion lidar donnée sera utilisée.
  • Nombre de retoursLe nombre total de retours lidar qui ont été identifiés en tant que points à partir de l’impulsion associée à un point donné sera utilisé.
  • Canal rougeLa valeur du canal rouge d’un nuage de points avec des informations de couleurs sera utilisée.
  • Canal vertLa valeur du canal vert d’un nuage de points avec des informations de couleurs sera utilisée.
  • Canal bleuLa valeur du canal bleu d’un nuage de points avec des informations de couleurs sera utilisée.
  • Canal proche infrarougeLa valeur du canal proche infrarouge d’un nuage de points avec des informations proche infrarouge sera utilisée.
  • Hauteur relativeLa hauteur relative de chaque point par rapport à une surface de référence, généralement un MNE de terre nue, sera utilisée.
String
Nombre minimal de points par bloc
(Facultatif)

Nombre minimal de points qui doivent être présents dans un bloc donné pour qu’il soit utilisé lors de l’entraînement du modèle. La valeur par défaut est 0.

Long
Réappariement de classe
(Facultatif)

Détermine la façon dont les valeurs des codes de classe seront appariées aux nouvelles valeurs avant d’entraîner le modèle de Deep Learning.

Value Table
Codes de classes d’intérêt
(Facultatif)

Codes de classes qui serviront à filtrer les blocs dans les données d’entraînement. Lorsque les codes de classes d’intérêt sont spécifiés, tous les autres codes de classes sont réappariés au code de classe d’arrière-plan.

Long
Code de classe d’arrière-plan
(Facultatif)

Valeur du code de classe qui sera utilisée pour tous les autres codes de classes lorsque des codes de classes d’intérêt ont été spécifiés.

Long
Description de classe
(Facultatif)

Descriptions de ce que représente chaque code de classe dans les données d’entraînement.

Value Table
Critères de sélection du modèle
(Facultatif)

Spécifie la base statistique qui servira à déterminer le modèle final.

  • Perte de validationLe modèle qui atteint le résultat le plus faible lorsque la fonction de perte d’entropie est appliquée aux données de validation sera utilisé.
  • RappelerLe modèle qui atteint la meilleure macro moyenne du rappel pour tous les codes de classe sera utilisé. La valeur de rappel de chaque code de classe est déterminée par le ratio des points classés correctement (vrais positifs) par rapport aux points qui auraient dû être classés avec cette valeur (positifs attendus). Il s’agit de l’option par défaut.
  • Score F1Le modèle qui atteint la meilleure moyenne harmonique entre la macro moyenne de la précision et les valeurs de rappel pour tous les codes de classe sera utilisé. Ceci offre un équilibre entre précision et rappel, ce qui favorise l’optimisation des performances globales.
  • PrécisionLe modèle qui atteint la meilleure macro moyenne de la précision pour tous les codes de classe sera utilisé. La précision de chaque code de classe est déterminée par le ratio de points qui sont correctement classés (vrais positifs) par rapport à tous les points qui sont classés (vrais positifs et faux positifs).
  • PrécisionLe modèle qui atteint le ratio le plus élevé de points correctement classés par rapport à tous les points dans les données de validation sera utilisé.
String
Nombre maximal d’époques
(Facultatif)

Nombre de transmissions de chaque bloc de données vers l’avant ou l’arrière via le réseau neuronal. La valeur par défaut est 25.

Long
Itérations par époque (%)
(Facultatif)

Pourcentage des données qui seront traitées dans chaque époque d’entraînement. La valeur par défaut est 100.

Double
Vitesse d’apprentissage
(Facultatif)

Vitesse à laquelle les informations existantes sont remplacées par de nouvelles informations. Si aucune valeur n’est indiquée, la vitesse d’apprentissage optimale est extraite de la courbe d’apprentissage lors du processus d’entraînement. Il s’agit de l’option par défaut.

Double
Taille de lot
(Facultatif)

Nombre de blocs de données d’entraînement qui est traité à tout moment. La valeur par défaut est 2.

Long
Arrêter l’entraînement lorsque le modèle ne s’améliore plus
(Facultatif)

Indique si l’entraînement du modèle doit ou non s’arrêter lorsque la mesure spécifiée dans le paramètre Critères de sélection du modèle n’enregistre aucune amélioration après cinq époques consécutives.

  • Activé : l’entraînement du modèle s’arrête lorsque le modèle ne s’améliore plus. Il s’agit de l’option par défaut.
  • Désactivé : l’entraînement du modèle continue jusqu’à atteindre le nombre maximal d’époques.
Boolean
Stratégie de vitesse d’apprentissage
(Facultatif)

Indique comment la vitesse d’apprentissage est modifiée au cours de l’entraînement.

  • Vitesse d’apprentissage d’un cycleLa vitesse d’apprentissage décrit un cycle à travers chaque époque à l’aide de l’implémentation de Fast.AI de la technique 1cycle afin que les réseaux neuronaux d’entraînement puissent faciliter l’entraînement d’un réseau neural convolutif. Il s’agit de l’option par défaut.
  • Vitesse d’apprentissage fixeLa même vitesse d’apprentissage est utilisée tout au long du processus d’entraînement.
String
Architecture du modèle
(Facultatif)

Spécifie l’architecture du réseau neuronal à utiliser pour entraîner le modèle. Lorsqu’un modèle préentraîné est spécifié, l’architecture qui a été utilisée pour créer le modèle préentraîné est sélectionnée automatiquement.

  • PointCNNL’architecture PointCNN sera utilisée.
  • RandLA-NetL’architecture RandLA-Net sera utilisée. L’architecture RandLA-Net s’appuie sur les principes de l’échantillonnage aléatoire simple et de l’agrégation d’entités locales. Il s’agit de l’option par défaut.
  • Semantic Query NetworkL’architecture Semantic Query Network (SQN) sera utilisée. L’architecture SQN ne requiert pas la classification complète des données d’entraînement, à la différence d’autres architectures de réseau neuronal.
String

Sortie obtenue

ÉtiquetteExplicationType de données
Modèle en sortie

Modèle généré par cet outil.

File
Statistiques de modèle en sortie

Le fichier .csv contenant la précision, le rappel et les scores F1 pour chaque code de classe et époque.

Text File
Statistiques d’époque en sortie

Le fichier .csv contenant la perte d’entraînement, la perte de validation, l’exactitude, la précision, le rappel et les scores F1 obtenus dans chaque époque.

Text File

arcpy.ddd.TrainPointCloudClassificationModel(in_training_data, out_model_location, out_model_name, {pretrained_model}, {attributes}, {min_points}, {class_remap}, {target_classes}, {background_class}, {class_descriptions}, {model_selection_criteria}, {max_epochs}, {epoch_iterations}, {learning_rate}, {batch_size}, {early_stop}, {learning_rate_strategy}, {architecture})
NomExplicationType de données
in_training_data

Données d’entraînement du nuage de points (fichier *.pctd) utilisées pour entraîner le modèle de classification.

File
out_model_location

Dossier existant qui stockera le nouveau répertoire contenant le modèle de Deep Learning.

Folder
out_model_name

Le nom du fichier de définition du modèle Esri en sortie (*.emd), du paquetage de Deep Learning (*.dlpk) et du répertoire qui sera créé pour les stocker.

String
pretrained_model
(Facultatif)

Le modèle préalablement entraîné qui sera affiné. Lorsqu’un modèle préalablement entraîné est fourni, les données d’entraînement en entrée doivent avoir les mêmes attributs, codes de classes et nombre maximal de points que ceux utilisés par les données d’entraînement qui ont permis de générer ce modèle.

File
attributes
[attributes,...]
(Facultatif)

Détermine les attributs ponctuels qui seront utilisés pour entraîner le modèle. Seuls les attributs présents dans les données d’entraînement du nuage de points seront disponibles. Aucun attribut supplémentaire n’est inclus par défaut.

  • INTENSITYLa mesure de la magnitude du retour de l’impulsion lidar sera utilisée.
  • RETURN_NUMBERLa position ordinale du point obtenue d’une impulsion lidar donnée sera utilisée.
  • NUMBER_OF_RETURNSLe nombre total de retours lidar qui ont été identifiés en tant que points à partir de l’impulsion associée à un point donné sera utilisé.
  • REDLa valeur du canal rouge d’un nuage de points avec des informations de couleurs sera utilisée.
  • GREENLa valeur du canal vert d’un nuage de points avec des informations de couleurs sera utilisée.
  • BLUELa valeur du canal bleu d’un nuage de points avec des informations de couleurs sera utilisée.
  • NEAR_INFRAREDLa valeur du canal proche infrarouge d’un nuage de points avec des informations proche infrarouge sera utilisée.
  • RELATIVE_HEIGHTLa hauteur relative de chaque point par rapport à une surface de référence, généralement un MNE de terre nue, sera utilisée.
String
min_points
(Facultatif)

Nombre minimal de points qui doivent être présents dans un bloc donné pour qu’il soit utilisé lors de l’entraînement du modèle. La valeur par défaut est 0.

Long
class_remap
[class_remap,...]
(Facultatif)

Détermine la façon dont les valeurs des codes de classe seront appariées aux nouvelles valeurs avant d’entraîner le modèle de Deep Learning.

Value Table
target_classes
[target_classes,...]
(Facultatif)

Codes de classes qui serviront à filtrer les blocs dans les données d’entraînement. Lorsque les codes de classes d’intérêt sont spécifiés, tous les autres codes de classes sont réappariés au code de classe d’arrière-plan.

Long
background_class
(Facultatif)

Valeur du code de classe qui sera utilisée pour tous les autres codes de classes lorsque des codes de classes d’intérêt ont été spécifiés.

Long
class_descriptions
[class_descriptions,...]
(Facultatif)

Descriptions de ce que représente chaque code de classe dans les données d’entraînement.

Value Table
model_selection_criteria
(Facultatif)

Spécifie la base statistique qui servira à déterminer le modèle final.

  • VALIDATION_LOSSLe modèle qui atteint le résultat le plus faible lorsque la fonction de perte d’entropie est appliquée aux données de validation sera utilisé.
  • RECALLLe modèle qui atteint la meilleure macro moyenne du rappel pour tous les codes de classe sera utilisé. La valeur de rappel de chaque code de classe est déterminée par le ratio des points classés correctement (vrais positifs) par rapport aux points qui auraient dû être classés avec cette valeur (positifs attendus). Il s’agit de l’option par défaut.
  • F1_SCORELe modèle qui atteint la meilleure moyenne harmonique entre la macro moyenne de la précision et les valeurs de rappel pour tous les codes de classe sera utilisé. Ceci offre un équilibre entre précision et rappel, ce qui favorise l’optimisation des performances globales.
  • PRECISIONLe modèle qui atteint la meilleure macro moyenne de la précision pour tous les codes de classe sera utilisé. La précision de chaque code de classe est déterminée par le ratio de points qui sont correctement classés (vrais positifs) par rapport à tous les points qui sont classés (vrais positifs et faux positifs).
  • ACCURACYLe modèle qui atteint le ratio le plus élevé de points correctement classés par rapport à tous les points dans les données de validation sera utilisé.
String
max_epochs
(Facultatif)

Nombre de transmissions de chaque bloc de données vers l’avant ou l’arrière via le réseau neuronal. La valeur par défaut est 25.

Long
epoch_iterations
(Facultatif)

Pourcentage des données qui seront traitées dans chaque époque d’entraînement. La valeur par défaut est 100.

Double
learning_rate
(Facultatif)

Vitesse à laquelle les informations existantes sont remplacées par de nouvelles informations. Si aucune valeur n’est indiquée, la vitesse d’apprentissage optimale est extraite de la courbe d’apprentissage lors du processus d’entraînement. Il s’agit de l’option par défaut.

Double
batch_size
(Facultatif)

Nombre de blocs de données d’entraînement qui est traité à tout moment. La valeur par défaut est 2.

Long
early_stop
(Facultatif)

Indique si l’entraînement du modèle doit ou non s’arrêter lorsque la valeur spécifiée dans le paramètre model_selection_criteria n’enregistre aucune amélioration après cinq époques consécutives.

  • EARLY_STOPL’entraînement du modèle s’arrête lorsque le modèle ne s’améliore plus. Il s’agit de l’option par défaut.
  • NO_EARLY_STOPL’entraînement du modèle continue jusqu’à atteindre le nombre maximal d’époques.
Boolean
learning_rate_strategy
(Facultatif)

Indique comment la vitesse d’apprentissage est modifiée au cours de l’entraînement.

  • ONE_CYCLELa vitesse d’apprentissage décrit un cycle à travers chaque époque à l’aide de l’implémentation de Fast.AI de la technique 1cycle afin que les réseaux neuronaux d’entraînement puissent faciliter l’entraînement d’un réseau neural convolutif. Il s’agit de l’option par défaut.
  • FIXEDLa même vitesse d’apprentissage est utilisée tout au long du processus d’entraînement.
String
architecture
(Facultatif)

Spécifie l’architecture du réseau neuronal à utiliser pour entraîner le modèle. Lorsqu’un modèle préentraîné est spécifié, l’architecture qui a été utilisée pour créer le modèle préentraîné est sélectionnée automatiquement.

  • POINTCNNL’architecture PointCNN sera utilisée.
  • RANDLANETL’architecture RandLA-Net sera utilisée. L’architecture RandLA-Net s’appuie sur les principes de l’échantillonnage aléatoire simple et de l’agrégation d’entités locales. Il s’agit de l’option par défaut.
  • SQNL’architecture Semantic Query Network (SQN) sera utilisée. L’architecture SQN ne requiert pas la classification complète des données d’entraînement, à la différence d’autres architectures de réseau neuronal.
String

Sortie obtenue

NomExplicationType de données
out_model

Modèle généré par cet outil.

File
out_model_stats

Le fichier .csv contenant la précision, le rappel et les scores F1 pour chaque code de classe et époque.

Text File
out_epoch_stats

Le fichier .csv contenant la perte d’entraînement, la perte de validation, l’exactitude, la précision, le rappel et les scores F1 obtenus dans chaque époque.

Text File

Exemple de code

Exemple d’utilisation de la fonction TrainPointCloudClassificationModel (script autonome)

L’exemple suivant illustre l’utilisation de cet outil dans la fenêtre Python.

import arcpy

arcpy.env.workspace = "D:/Deep_Learning_Workspace"
arcpy.ddd.TrainPointCloudClassificationModel(
    "Powerline_Training.pctd", "D:/DL_Models", "Powerline", 
    attributes=['INTENSITY', 'RETURN_NUMBER', 'NUMBER_OF_RETURNS'],
    target_classes=[14, 15], background_class=1,
    class_descriptions=[[1, "Background"], [14, "Wire Conductor"], [15, "Transmission Tower"]],
    model_selection_criteria="F1_SCORE", max_epochs=10)

Rubriques connexes