Préparer les données d’entraînement pour la détection d’objets dans les nuages de points (3D Analyst)

Synthèse

Crée des données d’entraînement de nuage de points pour les modèles de détection d’objets à l’aide du Deep Learning.

Illustration

Illustration de l’outil Préparer les données d’entraînement pour la détection d’objets dans les nuages de points

Utilisation

  • Les données d’entraînement de détection d’objets dans les nuages de points sont définies par un répertoire doté d’une extension .pcotd contenant deux sous-répertoires : l’un contenant les données utilisées pour entraîner le modèle et l’autre contenant les données utilisées pour valider le modèle à travers l’entraînement. Un nuage de points en entrée doit toujours être spécifié avec des entités multipatch distinctes représentant les emprises des objets pour l’entraînement et la validation. Un polygone d’emprise peut être fourni afin de limiter les données exportées pour l’entraînement. Les données de validation peuvent être définies par les termes suivants :

    • Indiquez un nuage de points de validation en plus du nuage de points en entrée. Ce jeu de données doit référencer un ensemble de points différent du nuage de points en entrée. Une limite peut également être spécifiée pour découper le nuage de points de validation.
    • Indiquez uniquement un nuage de points en entrée avec une limite d’entraînement et de validation. En procédant ainsi, les données d’entraînement et de validation sont issues du même nuage de points en entrée, ce qui rend inutile de définir un jeu de données pour le paramètre Nuage de points de validation. Évitez les superpositions entre les deux jeux de données surfaciques de limite afin de ne pas utiliser les mêmes données de nuage de points pour l’entraînement et la validation.
  • Renfermez chaque type d’objet présent dans le nuage de points dans une emprise multipatch. Si des objets ne sont pas identifiés dans les données d’entraînement ou de validation, le modèle ne pourra pas apprendre à les identifier. Si le nuage de points comporte des objets non identifiés, utilisez les entités de limite pour limiter les jeux de données d’entraînement exportés aux endroits où les objets étaient correctement renfermés dans une emprise.

  • Il n’est pas nécessaire de classer les points qui représentent les objets afin de pouvoir les utiliser dans le jeu de données d’entraînement pour la détection d’objets. Cela simplifie la tâche d’étiquetage des objets à la seule création d’emprises en tant qu’entités multipatch. Les emprises peuvent être générées via la mise à jour 3D interactive d’une classe d’entités multipatch. Cependant, si des objets sont représentés par des nuages de points classés, les emprises de ces points peuvent être créées via l’outil Extraire des objets d’un nuage de points.

  • Le nuage de points en entrée doit présenter une densité de points relativement homogène. Évaluez le nuage de points pour déterminer s’il contient des emplacements avec une densité de points plus élevée, par exemple les zones collectées par des levés de lignes de vol superposées ou des scanners terrestres inactifs. Pour le lidar aéroporté avec des lignes de vol superposées, l’outil Classer la superposition LAS permet de signaler les points superposés et de parvenir à une distribution plus homogène des points. D’autres types de nuages de points avec des points chauds sur-échantillonnés peuvent être affinés en distribution régulière à l’aide de l’outil LAS fin.

  • Des points du nuage de points peuvent être exclus des données d’entraînement en fonction de leurs codes de classe afin d’améliorer les performances d’entraînement du modèle en réduisant le nombre de points qui doivent être traités. Les points exclus doivent appartenir à des classes qui peuvent être facilement classées et qui n’offrent pas nécessairement le contexte approprié aux objets pour lesquels le modèle est entraîné. Vous pouvez éliminer les points classés comme superposés ou bruit. Les points classés comme terrestres peuvent également être éliminés si la hauteur à partir du sol est calculée au cours de la génération des données d’entraînement.

  • Lorsque cela est possible, spécifiez une taille de bloc qui capture suffisamment les objets pour lesquels le modèle sera entraîné. Même si chaque bloc ne contient pas toujours l’objet entier, les blocs superposés qui sont créés dans les données d’entraînement capturent une quantité suffisante de représentations variées de l’objet pour entraîner un modèle réussi.

  • La limite de points de bloc doit refléter la taille de bloc et l’espacement moyen des points des données. Il est possible d’obtenir une approximation du nombre de points dans un bloc donné à l’aide de l’outil Statistiques de points LAS en tant que raster avec l’option Nombre de points du paramètre Méthode et de la taille de bloc souhaitée comme taille de cellule du raster en sortie. Un histogramme d’image de ce raster peut illustrer la distribution des points par bloc dans le jeu de données. Si l’histogramme indique un grand nombre de blocs avec une variance élevée, cela peut indiquer la présence de données échantillonnées irrégulièrement contenant des points chauds potentiels de collections de points denses. Si un bloc contient un nombre de points supérieur à la limite de points du bloc, ce bloc sera créé plusieurs fois pour s’assurer que tous ses points sont représentés dans les données d’entraînement. Par exemple, si la limite de points est de 10 000 et qu’un bloc donné contient 22 000 points, trois blocs de 10 000 points sont créés, garantissant ainsi l’échantillonnage uniforme dans chaque bloc. Il convient également d’éviter une limite de points de bloc qui est beaucoup plus élevée que le nombre nominal de points dans la plupart des blocs. Dans certaines architectures, les données sont sur-échantillonnées pour parvenir à la limite de points. Utilisez par conséquent une taille de bloc et une limite de points de bloc qui soient proches du nombre de points anticipé couvrant la majeure partie des blocs dans les données d’entraînement. Une fois les données d’entraînement créées, un histogramme s’affiche dans la fenêtre de message de l’outil et une image le représentant est stockée dans le dossier contenant les données d’entraînement et de validation. Vous pouvez examiner cet histogramme pour déterminer si une combinaison de taille de bloc et de limite de points appropriée a été spécifiée. Si les valeurs indiquent une limite de points qui n’est pas optimale, relancez l’outil avec une valeur plus appropriée pour le paramètre Limite de points de bloc.

  • Le limite de points de bloc doit tenir compte de la capacité de mémoire GPU dédiée de l’ordinateur qui sera utilisé pour l’entraînement. L’allocation de mémoire pendant l’entraînement dépend du nombre de points par bloc, des attributs utilisés et du nombre total de blocs traités simultanément dans un lot donné. Si une taille de bloc et une limite de points plus élevées sont nécessaires pour un entraînement efficace du modèle, il est possible de réduire la taille du lot lors de l’entraînement pour faire en sorte que davantage de points puissent être traités.

  • Vérifiez que la sortie est écrite à un emplacement disposant de suffisamment d’espace disque pour tenir compte des données d’entraînement. Cet outil crée des blocs partiellement superposés de fichiers HDF5 décompressés qui répliquent chaque point dans quatre blocs. Dans les blocs qui dépassent la limite de points maximale, certains points peuvent être dupliqués plus de quatre fois. Les données d’entraînement résultantes peuvent occuper au moins trois fois plus d’espace disque que les données de nuage de points sources.

  • La fenêtre de message de l’outil affiche un ratio de quartile pour chaque type d’objet. Ce ratio se calcule en divisant les volumes des objets dans le troisième quartile par le premier quartile. Cette métrique sert d’indicateur de la variabilité de taille parmi les objets. Un ratio de quartile élevé suggère une variabilité plus importante des volumes des objets, tandis qu’un ratio plus faible indique une variabilité moindre. Si le volume subit une variation importante, vous pouvez ajuster les paramètres de voxel dans le paramètre Paramètres d’architecture de l’outil Entraîner le modèle de détection d’objets dans les nuages de points pour produire un modèle exact.

Paramètres

ÉtiquetteExplicationType de données
Nuage de points en entrée

Nuage de points qui sera utilisé pour créer les données d’entraînement pour la détection d’objets.

LAS Dataset Layer; File
Entités d’entraînement en entrée

Entités multipatch qui identifieront les objets qui seront utilisés pour entraîner le modèle.

Feature Layer
Entités de validation en entrée

Entités multipatch qui identifieront les objets qui seront utilisés pour valider le modèle au cours du processus d’entraînement.

Feature Layer
Taille de bloc

Diamètre de chaque bloc de données d’entraînement qui sera créée à partir du nuage de points en entrée. En règle générale, la taille de bloc doit être assez grande pour capturer les objets d’intérêt et leur contexte environnant.

Linear Unit
Données d’entraînement en sortie

Emplacement et nom des données d’entraînement en sortie (fichier *.pcotd).

File
Entités de limite d’entraînement
(Facultatif)

Entités surfaciques qui délimiteront le sous-ensemble de points à partir du nuage de points en entrée qui sera utilisé pour entraîner le modèle. Ce paramètre est requis lorsque la valeur du paramètre Nuage de points de validation n’est pas fournie.

Feature Layer
Champ de code d’entraînement
(Facultatif)

Champ qui identifie l’ID unique pour chaque type d’objet dans les entités multipatch d’entraînement. Si aucun champ n’est défini, l’ID 0 est attribué aux objets.

Field
Nuage de points de validation
(Facultatif)

Nuage de points utilisé pour la validation du modèle de Deep Learning pendant l’entraînement. Ce jeu de données doit référencer un ensemble de points différent du nuage de points en entrée pour garantir la qualité du modèle entraîné. Si aucun nuage de points de validation n’est fourni, vous pouvez utiliser le nuage de points en entrée pour définir les jeux de données d’entraînement et de validation en indiquant des classes d’entités surfaciques dans les paramètres Entités de limite d’entraînement et Entités de limite de validation.

LAS Dataset Layer; File
Entités de limite de validation
(Facultatif)

Entités surfaciques qui délimiteront le sous-ensemble de points à utiliser pour valider le modèle lors de l’entraînement. Si aucun nuage de points de validation n’est fourni, les points sont issus du nuage de points en entrée et un polygone est requis pour le paramètre Entités de limite d’entraînement.

Feature Layer
Champ de code de validation
(Facultatif)

Champ qui identifie l’ID unique pour chaque type d’objet dans les entités multipatch de validation. Si aucun champ n’est défini, l’ID 0 est attribué aux objets.

Field
Limite de points de bloc
(Facultatif)

Nombre maximal de points pouvant être stockés dans chaque bloc des données d’entraînement. Lorsqu’un bloc contient un nombre de points supérieur à cette valeur, plusieurs blocs sont créés pour le même emplacement, garantissant ainsi l’utilisation de tous les points lors de l’entraînement. La valeur par défaut est 500 000.

Long
Surface de hauteur de référence
(Facultatif)

Surface raster utilisée pour fournir des valeurs de hauteur relative pour chaque point dans les données de nuage de points. Les points qui ne sont pas superposés au raster sont exclus de l’analyse.

Raster Layer
Codes de classe exclus
(Facultatif)

Codes de classe exclus des données d’entraînement. Vous pouvez spécifier n’importe quelle valeur comprise entre 0 et 255.

Long
Exporter uniquement les blocs d’entraînement qui contiennent des objets
(Facultatif)

Indique si les données d’entraînement comprendront uniquement les blocs contenant des objets ou si les blocs qui ne contiennent pas d’objets seront également inclus. Les données utilisées pour la validation ne seront pas affectées par ce paramètre.

  • Activé : seuls les blocs qui contiennent des objets seront exportés dans les données d’entraînement.
  • Désactivé : les blocs contenant des objets et ceux qui n’en contiennent pas seront également exportés dans les données d’entraînement. Il s’agit de l’option par défaut.

Boolean

arcpy.ddd.PreparePointCloudObjectDetectionTrainingData(in_point_cloud, in_training_features, in_validation_features, block_size, out_training_data, {training_boundary}, {training_code_field}, {validation_point_cloud}, {validation_boundary}, {validation_code_field}, {block_point_limit}, {reference_height}, {excluded_class_codes}, {blocks_contain_objects})
NomExplicationType de données
in_point_cloud

Nuage de points qui sera utilisé pour créer les données d’entraînement pour la détection d’objets.

LAS Dataset Layer; File
in_training_features

Entités multipatch qui identifieront les objets qui seront utilisés pour entraîner le modèle.

Feature Layer
in_validation_features

Entités multipatch qui identifieront les objets qui seront utilisés pour valider le modèle au cours du processus d’entraînement.

Feature Layer
block_size

Diamètre de chaque bloc de données d’entraînement qui sera créée à partir du nuage de points en entrée. En règle générale, la taille de bloc doit être assez grande pour capturer les objets d’intérêt et leur contexte environnant.

Linear Unit
out_training_data

Emplacement et nom des données d’entraînement en sortie (fichier *.pcotd).

File
training_boundary
(Facultatif)

Entités surfaciques qui délimiteront le sous-ensemble de points à partir du nuage de points en entrée qui sera utilisé pour entraîner le modèle. Ce paramètre est requis lorsque la valeur du paramètre validation_point_cloud n’est pas fournie.

Feature Layer
training_code_field
(Facultatif)

Champ qui identifie l’ID unique pour chaque type d’objet dans les entités multipatch d’entraînement. Si aucun champ n’est défini, l’ID 0 est attribué aux objets.

Field
validation_point_cloud
(Facultatif)

Source du nuage de points qui sera utilisé pour valider le modèle de Deep Learning. Ce jeu de données doit référencer un ensemble de points différent du nuage de points en entrée pour garantir la qualité du modèle entraîné. Si aucun nuage de points de validation n’est fourni, vous pouvez utiliser le nuage de points en entrée pour définir les jeux de données d’entraînement et de validation en indiquant des classes d’entités surfaciques dans les paramètres training_boundary et validation_boundary.

LAS Dataset Layer; File
validation_boundary
(Facultatif)

Entités surfaciques qui délimiteront le sous-ensemble de points à utiliser pour valider le modèle lors de l’entraînement. Si aucun nuage de points de validation n’est fourni, les points sont issus du nuage de points en entrée et un polygone est requis pour le paramètre training_boundary.

Feature Layer
validation_code_field
(Facultatif)

Champ qui identifie l’ID unique pour chaque type d’objet dans les entités multipatch de validation. Si aucun champ n’est défini, l’ID 0 est attribué aux objets.

Field
block_point_limit
(Facultatif)

Nombre maximal de points pouvant être stockés dans chaque bloc des données d’entraînement. Lorsqu’un bloc contient un nombre de points supérieur à cette valeur, plusieurs blocs sont créés pour le même emplacement, garantissant ainsi l’utilisation de tous les points lors de l’entraînement. La valeur par défaut est 500 000.

Long
reference_height
(Facultatif)

Surface raster utilisée pour fournir des valeurs de hauteur relative pour chaque point dans les données de nuage de points. Les points qui ne sont pas superposés au raster sont exclus de l’analyse.

Raster Layer
excluded_class_codes
[excluded_class_codes,...]
(Facultatif)

Codes de classe exclus des données d’entraînement. Vous pouvez spécifier n’importe quelle valeur comprise entre 0 et 255.

Long
blocks_contain_objects
(Facultatif)

Indique si les données d’entraînement comprendront uniquement les blocs contenant des objets ou si les blocs qui ne contiennent pas d’objets seront également inclus. Les données utilisées pour la validation ne seront pas affectées par ce paramètre.

  • BLOCKS_WITH_OBJECTSSeuls les blocs qui contiennent des objets seront exportés dans les données d’entraînement.
  • ALL_BLOCKSLes blocs contenant des objets et ceux qui n’en contiennent pas seront également exportés dans les données d’entraînement. Il s’agit de l’option par défaut.
Boolean

Exemple de code

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

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

import arcpy
arpy.env.workspace = r"C:\GIS_Data"
arcpy.ddd.PreparePointCloudObjectDetectionTrainingData("Training.lasd", r"Objects.fgdb\Training_FCs",
                                                       r"Objects.fgdb\Validation_FCs", "12 Meters",
                                                       "Training_Cars.pcotd", training_code_field="Car_Type",
                                                       validation_code_field="Car_Type", reference_surface="DEM.tif",
                                                       excluded_classes=[2, 7, 18])