Preparar datos de entrenamiento de detección de objetos de nube de puntos (3D Analyst)

Resumen

Crea datos de entrenamiento de nube de puntos para modelos de detección de objetos con aprendizaje profundo.

Ilustración

Ilustración de la herramienta Preparar datos de entrenamiento de detección de objetos de nube de puntos

Uso

  • Los datos de entrenamiento de detección de objetos de nube de puntos se definen mediante un directorio con una extensión .pcotd que contiene dos subdirectorios: uno que contiene los datos utilizados para entrenar el modelo y el otro que contiene los datos utilizados para validar el modelo durante todo el proceso de entrenamiento. Siempre se debe especificar una nube de puntos de entrada junto con entidades multiparche separadas que representen los cuadros delimitadores de los objetos para el entrenamiento y la validación. Se puede proporcionar un polígono límite para limitar los datos que se exportan para el entrenamiento. Los datos de validación se pueden definir de la siguiente manera:

    • Proporcione una nube de puntos de validación además de la nube de puntos de entrada. Este dataset debe hacer referencia a un conjunto de puntos diferente al de la nube de puntos de entrada. También se puede especificar un límite para recortar la nube de puntos de validación.
    • Proporcione solo una nube de puntos de entrada con un límite de entrenamiento y validación. Esto dará como resultado que tanto los datos de entrenamiento como los de validación provengan de la misma nube de puntos de entrada, por lo que no es necesario especificar un dataset para el parámetro Nube de puntos de validación. Evite superposiciones entre los dos datasets de polígonos límite para no utilizar los mismos datos de nube de puntos para el entrenamiento y la validación.
  • Contenga cada tipo de objeto que esté presente en la nube de puntos dentro de un cuadro delimitador multiparche. Los objetos no identificados en los datos de entrenamiento o validación harán que el modelo no pueda aprender de manera efectiva cómo identificar el objeto. Si la nube de puntos contiene objetos no identificados, utilice entidades de límite para limitar los datasets de entrenamiento exportados a lugares donde los objetos estaban contenidos correctamente en un cuadro delimitador.

  • No es necesario clasificar los puntos que representan los objetos para usarlos en el dataset de entrenamiento para la detección de objetos. Esto simplifica la tarea de etiquetar los objetos y solo crea cuadros delimitadores como entidades multiparche. Los cuadros delimitadores se pueden generar mediante la edición 3D interactiva de una clase de entidad multiparche. Sin embargo, si los objetos están representados por nubes de puntos clasificadas, se pueden crear cuadros delimitadores para esos puntos mediante la herramienta Extraer objetos de la nube de puntos.

  • La nube de puntos de entrada debe tener una densidad de puntos bastante uniforme. Evalúe la nube de puntos para determinar si contiene ubicaciones con una mayor densidad de puntos, como áreas recopiladas mediante estudios de líneas de vuelo superpuestas o escáneres terrestres inactivos. Para LIDAR aéreo con líneas de vuelo superpuestas, la herramienta Clasificar solapamiento de LAS se puede utilizar para marcar los puntos superpuestos y lograr una distribución de puntos más uniforme. Otros tipos de nubes de puntos con puntos calientes sobremuestreados se pueden reducir a una distribución regular utilizando la herramienta LAS fino.

  • Los puntos de la nube de puntos se pueden excluir de los datos de entrenamiento mediante sus códigos de clase para ayudar a mejorar el rendimiento del entrenamiento del modelo al reducir la cantidad de puntos que deben procesarse. Los puntos excluidos deben pertenecer a clases que puedan clasificarse fácilmente y no necesariamente proporcionen un contexto adecuado para los objetos para los que se entrena el modelo. Considere filtrar los puntos clasificados como superposición o ruido. Los puntos clasificados de suelo también se pueden filtrar si se calcula la altura desde el suelo durante la generación de datos de entrenamiento.

  • Cuando sea posible, especifique un tamaño de bloque que capture suficientemente los objetos para los que se entrenará el modelo. Si bien es posible que cada bloque no siempre contenga el objeto completo, los bloques superpuestos que se crean en los datos de entrenamiento capturarán una cantidad suficiente de representaciones variadas del objeto para entrenar un modelo exitoso.

  • El límite de puntos de bloque debe reflejar el tamaño del bloque y el espaciado de punto promedio de los datos. El número de puntos de un tamaño de bloque determinado se puede aproximar con la herramienta Estadísticas de punto LAS como ráster con la opción Recuento de puntos del parámetro Método y el tamaño de bloque deseado como tamaño de celda del ráster de salida. Un histograma de imagen de este ráster puede ilustrar la distribución de puntos por bloque en el dataset. Si el histograma muestra una gran cantidad de bloques con una amplia varianza, puede indicar la presencia de datos muestreados de manera irregular con posibles puntos calientes de colecciones de puntos densos. Si un bloque contiene más puntos que el límite de puntos del bloque, ese bloque se creará varias veces para garantizar que todos sus puntos estén representados en los datos de entrenamiento. Por ejemplo, si el límite de puntos es 10.000 y un bloque determinado contiene 22.000 puntos, se crearán tres bloques de 10.000 puntos para asegurar un muestreo uniforme en cada bloque. También se debe evitar un límite de puntos de bloque que sea significativamente mayor que la cantidad nominal de puntos en la mayoría de los bloques. En algunas arquitecturas, los datos se muestrean ascendentemente para cumplir con el límite de puntos. Por estas razones, utilice un tamaño de bloque y un límite de puntos de bloque que se acerquen al recuento de puntos previsto que cubra la mayoría de los bloques en los datos de entrenamiento. Una vez creados los datos de entrenamiento, se muestra un histograma en la ventana de mensaje de la herramienta y una imagen del mismo se almacena en la carpeta que contiene los datos de entrenamiento y validación. Este histograma se puede revisar para determinar si se especificó una combinación adecuada de tamaño de bloque y límite de puntos. Si los valores indican un límite de punto subóptimo, vuelva a ejecutar la herramienta con un valor más apropiado para el parámetro Límite de punto de bloque.

  • El límite de puntos de bloque debe tener en cuenta la capacidad de memoria de la GPU dedicada en el equipo que se utilizará para el entrenamiento. La asignación de memoria durante el entrenamiento dependerá de la cantidad de puntos por bloque, los atributos que se utilizan y la cantidad total de bloques que se procesan simultáneamente en un lote determinado. Si se necesita un tamaño de bloque más grande y un límite de puntos mayor para entrenar el modelo con eficacia, el tamaño de lote se puede reducir en el paso de entrenamiento para garantizar que se puedan procesar más puntos.

  • Asegúrese de que la salida se escriba en una ubicación con suficiente espacio en disco para alojar los datos de entrenamiento. Esta herramienta crea bloques parcialmente superpuestos de archivos HDF5 descomprimidos que replican cada punto en cuatro bloques. En aquellos bloques que superen el límite máximo de puntos, algunos puntos pueden estar duplicados más de cuatro veces. Los datos de entrenamiento resultantes pueden ocupar al menos tres veces más espacio en disco que los datos de nube de punto de origen.

  • La ventana de mensaje de la herramienta muestra una proporción de cuartil para cada tipo de objeto. Esta relación se calcula dividiendo los volúmenes de objetos en el tercer cuartil por el primer cuartil. Esta métrica sirve como indicador de la variabilidad del tamaño entre los objetos. Una proporción de cuartil más grande sugiere una mayor variabilidad en los volúmenes de los objetos, mientras que una proporción más pequeña indica menos variabilidad. Si hay una variación significativa en el volumen, es posible que necesite ajustar los parámetros de vóxel en el parámetro Ajustes de arquitectura de la herramienta Entrenar modelo de detección de objetos de nube de puntos para obtener un modelo preciso.

Parámetros

EtiquetaExplicaciónTipo de datos
Nube de puntos de entrada

La nube de puntos que se utilizará para crear los datos de entrenamiento para la detección de objetos.

LAS Dataset Layer; File
Entidades de entrenamiento de entrada

Las entidades multiparche que identificarán los objetos que se utilizarán para entrenar el modelo.

Feature Layer
Entidades de validación de entrada

Las entidades multiparche que identificarán los objetos que se utilizarán para validar el modelo durante el proceso de entrenamiento.

Feature Layer
Tamaño de bloque

El diámetro de cada bloque de datos de entrenamiento que se creará a partir de la nube de puntos de entrada. Como norma general, el tamaño de bloque debe ser lo suficientemente grande para capturar los objetos de interés y su contexto circundante.

Linear Unit
Datos de entrenamiento de salida

La ubicación y el nombre de los datos de entrenamiento de salida (un archivo *.pcotd).

File
Entidades de límite de entrenamiento
(Opcional)

Las entidades de polígono que delinearán el subconjunto de puntos de la nube de puntos de entrada que se utilizarán para entrenar el modelo. Este parámetro es necesario cuando no se proporciona el valor del parámetro Nube de puntos de validación.

Feature Layer
Campo de código de entrenamiento
(Opcional)

El campo que identifica el Id. único para cada tipo de objeto en las entidades multiparche de entrenamiento. Cuando no se define ningún campo, a los objetos se les asigna un Id. de 0.

Field
Nube de puntos de validación
(Opcional)

La nube de puntos que se usará para validar el modelo de aprendizaje profundo durante el proceso de entrenamiento. Este dataset debe hacer referencia a un conjunto de puntos distinto al de la nube de puntos de entrada para garantizar la calidad del modelo entrenado. Si no se proporciona una nube de puntos de validación, se puede utilizar la nube de puntos de entrada para definir los datasets de entrenamiento y validación proporcionando clases de entidad poligonal para los parámetros Entidades de límite de entrenamiento y Entidades de límite de validación.

LAS Dataset Layer; File
Entidades de límite de validación
(Opcional)

Las entidades poligonales que delinearán el subconjunto de puntos que se utilizarán para validar el modelo durante el proceso de entrenamiento. Si no se proporciona una nube de puntos de validación, los puntos se obtendrán de la nube de puntos de entrada y se requerirá un polígono para el parámetro Entidades de límite de entrenamiento.

Feature Layer
Campo de código de validación
(Opcional)

El campo que identifica el Id. único para cada tipo de objeto en las entidades multiparche de validación. Cuando no se define ningún campo, a los objetos se les asigna un Id. de 0.

Field
Límite de puntos de bloque
(Opcional)

El número máximo de puntos que se pueden almacenar en cada bloque de los datos de entrenamiento. Cuando un bloque contenga puntos en exceso de este valor, se crearán varios bloques para la misma ubicación con el fin de garantizar que se utilicen todos los puntos durante el entrenamiento. El valor predeterminado es 500.000.

Long
Superficie de altura de referencia
(Opcional)

La superficie ráster que se utilizará para proporcionar valores de altura relativa para cada punto en los datos de nube de puntos. Los puntos que no se superpongan con el ráster se omitirán del análisis.

Raster Layer
Códigos de clase excluidos
(Opcional)

Los códigos de clase que se excluirán de los datos de entrenamiento. Se puede especificar cualquier valor del rango de 0 a 255.

Long
Exportar solo bloques de entrenamiento que contengan objetos
(Opcional)

Especifica si los datos de entrenamiento solo incluirán bloques que contienen objetos o si también incluirán bloques que no contienen objetos. Los datos utilizados para la validación no se verán afectados por este parámetro.

  • Activado: solo los bloques que contengan objetos se exportarán en los datos de entrenamiento.
  • Desactivado: tanto los bloques que contienen objetos como los que no lo hacen se exportarán en los datos de entrenamiento. Esta es la opción predeterminada.

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})
NombreExplicaciónTipo de datos
in_point_cloud

La nube de puntos que se utilizará para crear los datos de entrenamiento para la detección de objetos.

LAS Dataset Layer; File
in_training_features

Las entidades multiparche que identificarán los objetos que se utilizarán para entrenar el modelo.

Feature Layer
in_validation_features

Las entidades multiparche que identificarán los objetos que se utilizarán para validar el modelo durante el proceso de entrenamiento.

Feature Layer
block_size

El diámetro de cada bloque de datos de entrenamiento que se creará a partir de la nube de puntos de entrada. Como norma general, el tamaño de bloque debe ser lo suficientemente grande para capturar los objetos de interés y su contexto circundante.

Linear Unit
out_training_data

La ubicación y el nombre de los datos de entrenamiento de salida (un archivo *.pcotd).

File
training_boundary
(Opcional)

Las entidades de polígono que delinearán el subconjunto de puntos de la nube de puntos de entrada que se utilizarán para entrenar el modelo. Este parámetro es necesario cuando no se proporciona el valor del parámetro validation_point_cloud.

Feature Layer
training_code_field
(Opcional)

El campo que identifica el Id. único para cada tipo de objeto en las entidades multiparche de entrenamiento. Cuando no se define ningún campo, a los objetos se les asigna un Id. de 0.

Field
validation_point_cloud
(Opcional)

El origen de la nube de puntos que se utilizará para validar el modelo de aprendizaje profundo. Este dataset debe hacer referencia a un conjunto de puntos distinto al de la nube de puntos de entrada para garantizar la calidad del modelo entrenado. Si no se proporciona una nube de puntos de validación, se puede utilizar la nube de puntos de entrada para definir los datasets de entrenamiento y validación proporcionando clases de entidad poligonal para los parámetros training_boundary y validation_boundary.

LAS Dataset Layer; File
validation_boundary
(Opcional)

Las entidades poligonales que delinearán el subconjunto de puntos que se utilizarán para validar el modelo durante el proceso de entrenamiento. Si no se proporciona una nube de puntos de validación, los puntos se obtendrán de la nube de puntos de entrada y se requerirá un polígono para el parámetro training_boundary.

Feature Layer
validation_code_field
(Opcional)

El campo que identifica el Id. único para cada tipo de objeto en las entidades multiparche de validación. Cuando no se define ningún campo, a los objetos se les asigna un Id. de 0.

Field
block_point_limit
(Opcional)

El número máximo de puntos que se pueden almacenar en cada bloque de los datos de entrenamiento. Cuando un bloque contenga puntos en exceso de este valor, se crearán varios bloques para la misma ubicación con el fin de garantizar que se utilicen todos los puntos durante el entrenamiento. El valor predeterminado es 500.000.

Long
reference_height
(Opcional)

La superficie ráster que se utilizará para proporcionar valores de altura relativa para cada punto en los datos de nube de puntos. Los puntos que no se superpongan con el ráster se omitirán del análisis.

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

Los códigos de clase que se excluirán de los datos de entrenamiento. Se puede especificar cualquier valor del rango de 0 a 255.

Long
blocks_contain_objects
(Opcional)

Especifica si los datos de entrenamiento solo incluirán bloques que contienen objetos o si también incluirán bloques que no contienen objetos. Los datos utilizados para la validación no se verán afectados por este parámetro.

  • BLOCKS_WITH_OBJECTSSolo los bloques que contengan objetos se exportarán en los datos de entrenamiento.
  • ALL_BLOCKSTanto los bloques que contienen objetos como los que no lo hacen se exportarán en los datos de entrenamiento. Esta es la opción predeterminada.
Boolean

Muestra de código

Ejemplo de PreparePointCloudObjectDetectionTrainingData (ventana de Python)

En el siguiente ejemplo se muestra cómo usar esta herramienta en la ventana de 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])