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 à l’aide de l’architecture PointCNN.

Utilisation

  • Cet outil utilise l’implémentation PointCNN à l’aide des structures Deep Learning.

    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.

  • Le modèle de classification des points peut être entraîné à l’aide d’une carte graphique NVIDIA compatible CUDA ou du CPU. L’outil tentera de sélectionner la carte graphique compatible CUDA la plus rapide sur l’ordinateur. Si plusieurs GPU sont présents et que l’outil n’utilise pas la carte la plus rapide, vous pouvez spécifier le GPU souhaité via le paramètre d’environnement ID de GPU. Si le GPU sélectionné est également utilisé pour l’écran, sa mémoire disponible sera diminuée par le système d’exploitation et toutes les autres applications qui utilisent l’écran en même temps. Pour optimiser la mémoire GPU destinée à l’entraînement, réservez la carte graphique qui ne servira pas à l’entraînement à la gestion de l’écran de l’ordinateur.

    Utiliser le GPU est généralement beaucoup plus rapide qu’utiliser le CPU. Vous ne devez utiliser le CPU que si aucun GPU n’est disponible. Si le CPU est utilisé pour l’entraînement, fournissez l’échantillon d’entraînement le plus petit possible afin d’obtenir une estimation de la durée nécessaire au traitement des données avant de procéder à l’entraînement.

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

  • Lorsqu’un modèle préalablement entraîné est spécifié, le modèle qui va être entraîné adoptera les pondérations du modèle préalablement entraîné et affinera les pondérations pour classer les mêmes objets dans le modèle préalablement entraîné. C’est pour cela que les données d’entraînement doivent avoir les mêmes attributs et codes de classes que le modèle préalablement entraîné. Si les données d’entraînement utilisent des codes de classes différents pour représenter les mêmes objets dans le modèle préalablement entraîné, classez les codes de classes des données d’entraînement comme il convient.

  • Un dossier permettant de stocker les modèles des points de contrôle (modèles créés à chaque époque) est créé. Le nom du dossier est le même que celui du paramètre Output Model Location (Localisation du modèle en sortie) avec le suffixe .checkpoints ; il est créé dans le même emplacement. Une fois l’entraînement terminé, une table CSV dont le nom est identique à celui du paramètre Output Model Name (Nom du modèle en sortie) avec le suffixe _stats.csv est créée et ajoutée au dossier des points de contrôle. Cette table fournit 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.
  • Au cours de l’entraînement, PointCNN apprend des modèles à partir des données d’entraînement et réduit la fonction de perte d’entropie. Lorsque l’outil est en cours d’exécution, le message de progression renvoie le résumé statistique suivant des 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 classes.
    • Rappel : macro moyenne du rappel pour tous les codes de classes.
    • Score F1 : moyenne harmonique de la macro moyenne des valeurs de précision et de rappel pour tous les codes de classes.

    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

  • La mémoire dédiée utilisée au cours de l’entraînement est la somme de la mémoire allouée à la structure 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.

Paramètres

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

Les données d’entraînement du nuage de points (*.pctd) qui seront utilisées pour entraîner le modèle de classification.

File
Localisation du modèle en sortie

Le dossier existant qui stockera le nouveau répertoire contenant le modèle 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 Deep Learning (*.dlpk) et du nouveau 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)

Indique les attributs ponctuels qui seront utilisés avec le code de classification lors de l’entraînement du 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.
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 classes seront appariées aux nouvelles valeurs avant d’entraîner le modèle 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 sélectionné.
  • RappelerLe modèle qui atteint la meilleure macro moyenne du rappel pour tous les codes de classes sera sélectionné. 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 classes sera sélectionné. 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 classes sera sélectionné. 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 sélectionné.
String
Nombre maximal d’époques
(Facultatif)

Nombre de fois que chaque bloc de données est transmis 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 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 spécifiée, la vitesse d’apprentissage optimale est extraite de la courbe d’apprentissage au cours 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 valeur spécifiée pour le paramètre Model Selection Criteria (Critères de sélection du modèle) n’enregistre aucune amélioration après 5 é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

Sortie obtenue

ÉtiquetteExplicationType de données
Modèle en sortie

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

File
Statistiques du 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

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})
NomExplicationType de données
in_training_data

Les données d’entraînement du nuage de points (*.pctd) qui seront utilisées pour entraîner le modèle de classification.

File
out_model_location

Le dossier existant qui stockera le nouveau répertoire contenant le modèle Deep Learning.

Folder
out_model_name

Le nom du fichier de définition du modèle Esri en sortie (*.emd), du paquetage Deep Learning (*.dlpk) et du nouveau 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)

Indique les attributs ponctuels qui seront utilisés avec le code de classification lors de l’entraînement du 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.
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 classes seront appariées aux nouvelles valeurs avant d’entraîner le modèle 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 sélectionné.
  • RECALLLe modèle qui atteint la meilleure macro moyenne du rappel pour tous les codes de classes sera sélectionné. 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 classes sera sélectionné. 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 classes sera sélectionné. 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 sélectionné.
String
max_epochs
(Facultatif)

Nombre de fois que chaque bloc de données est transmis 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 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 spécifiée, la vitesse d’apprentissage optimale est extraite de la courbe d’apprentissage au cours 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 pour le paramètre model_selection_criteria n’enregistre aucune amélioration après 5 é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

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

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 (st
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)

Environnements

Cas particuliers

Informations de licence

  • Basic: Nécessite 3D Analyst
  • Standard: Nécessite 3D Analyst
  • Advanced: Nécessite 3D Analyst

Rubriques connexes