Entrenar modelo de detección de objetos de nube de puntos (3D Analyst)

Resumen

Entrena un modelo de detección de objetos para nubes de puntos mediante aprendizaje profundo.

Uso

  • Esta herramienta requiere la instalación de conceptos básicos de aprendizaje profundo, que proporcionan varias soluciones de redes neuronales que incluyen arquitecturas neuronales para clasificar nubes de puntos.

    Para configurar su equipo para usar marcos de aprendizaje profundo en ArcGIS AllSource, consulte Instalar marcos de aprendizaje profundo para ArcGIS.

  • Usar un modelo preentrenado en el proceso de entrenamiento es útil, especialmente cuando hay limitaciones en datos, tiempo o recursos computacionales. Los modelos preentrenados reducen la necesidad de un entrenamiento exhaustivo y proporcionan un punto de partida fiable para crear un modelo útil rápidamente. Para utilizar un modelo preentrenado, los nuevos datos de entrenamiento deben ser compatibles con el modelo preentrenado. Esto significa que los nuevos datos de entrenamiento deben tener los mismos atributos y códigos de objeto que los datos de entrenamiento que se utilizaron para crear el modelo preentrenado. Si los códigos de objeto de los datos de entrenamiento no coinciden con los códigos del modelo preentrenado, los códigos de objeto de los datos de entrenamiento se deben reasignar en consecuencia.

  • El modelo de detección de objetos de nubes de puntos solo se puede entrenar utilizando una tarjeta gráfica NVIDIA compatible con CUDA. Cuando el entorno Tipo de procesador no está configurado en un equipo con tarjetas gráficas compatibles con CUDA, se utilizará para el entrenamiento la tarjeta con el hardware más óptimo. De lo contrario, se puede asignar una tarjeta gráfica específica en la configuración del entorno Id. de GPU.

  • Durante el proceso de entrenamiento se reportarán las siguientes métricas:

    • Epoch: el número de época con el que está asociado el resultado
    • Pérdida de entrenamiento: el resultado de la función de pérdida de entropía promediada para los datos de entrenamiento
    • Pérdida de validación: el resultado de la función de pérdida de entropía que se determinó al aplicar el modelo entrenado en la época a los datos de validación
    • Precisión media: el ratio de los puntos de los datos de validación clasificados correctamente por el modelo entrenado en la época (verdaderos positivos) y todos los puntos de los datos de validación

    Se considera que un modelo que alcanza una pérdida de entrenamiento baja, pero una pérdida de validación elevada, se ajusta en exceso a los datos de entrenamiento, por lo que detecta patrones a partir de artefactos en los datos de entrenamiento y provoca que el modelo no funcione bien con los datos de validación. Se considera que un modelo que alcanza una gran pérdida de entrenamiento y una gran pérdida de validación se ajusta de forma insuficiente a los datos de entrenamiento y no se aprenden patrones con la suficiente eficacia como para producir un modelo utilizable.

    Más información sobre la evaluación de los resultados de entrenamiento de nube de puntos

  • Se crea una carpeta para almacenar los modelos de punto de control, que son modelos que se crean al final de cada época. El nombre de la carpeta de puntos de verificación empieza con el mismo nombre que el modelo y termina con el sufijo .checkpoints. Se almacena en el valor del parámetro Ubicación del modelo de salida.

Parámetros

EtiquetaExplicaciónTipo de datos
Datos de entrenamiento de entrada

Los datos de entrenamiento de detección de objetos de nubes de puntos (archivo *.pcotd) que se utilizarán para entrenar el modelo.

File
Ubicación de modelo de salida

Una carpeta existente que almacenará el nuevo directorio que contiene el modelo de aprendizaje profundo.

Folder
Nombre de modelo de salida

El nombre del archivo de definición de modelo de Esri de salida (*.emd), el paquete de aprendizaje profundo (*.dlpk) y el directorio que se creará para almacenarlos.

String
Archivo de definición de modelo preentrenado
(Opcional)

El modelo de detección de objetos preentrenado que se perfeccionará. Si se proporciona un modelo preentrenado, los datos de entrenamiento de entrada deben tener los mismos atributos y número máximo de puntos utilizados por los datos de entrenamiento que generaron el modelo.

File
Architecture
(Opcional)

Especifica la arquitectura que se utilizará para entrenar el modelo.

  • Sparsely Embedded Convolutional DetectionSe utilizará la arquitectura Sparsely Embedded CONvolutional Detection (SECOND). Esta es la opción predeterminada.
String
Selección de atributos
(Opcional)

Especifica los atributos de punto que se utilizarán con el código de clasificación al entrenar el modelo. Solo estarán disponibles los atributos presentes en los datos de entrenamiento de la nube de puntos. No se incluye de forma predeterminada ningún atributo adicional.

  • IntensidadSe utilizará la medida de la magnitud del retorno de pulso LIDAR.
  • Número de retornoSe utilizará la posición ordinal del punto obtenido a partir de un pulso LIDAR determinado.
  • Número de retornosSe utilizará el número total de retornos LIDAR que se identificaron como puntos del pulso asociado con un punto determinado.
  • Banda rojaSe utilizará el valor de la banda roja de una nube de puntos con información de color.
  • Banda verdeSe utilizará el valor de la banda verde de una nube de puntos con información de color.
  • Banda azulSe utilizará el valor de la banda azul de una nube de puntos con información de color.
  • Banda de infrarrojo cercanoSe utilizará el valor de la banda de infrarrojo cercano de una nube de puntos con información de infrarrojo cercano.
  • Altura relativaSe usará la altura relativa de cada punto respecto a una superficie de referencia, que normalmente sería un DEM de suelo desnudo.
String
Puntos mínimos por bloque
(Opcional)

El número mínimo de puntos que deben estar presentes en un bloque determinado para que se utilice en el entrenamiento del modelo. El valor predeterminado es 0.

Long
Reasignar códigos de objetos
(Opcional)

Define cómo se reasignarán los códigos de objetos a nuevos valores antes de entrenar el modelo de aprendizaje profundo.

  • Código actual: el valor del código de objeto en los datos de entrenamiento.
  • Código reasignado: el valor del código de objeto al que se cambiará el código existente.

Value Table
Códigos de objetos de interés
(Opcional)

Los códigos de objeto que se utilizarán para filtrar los objetos en los datos de entrenamiento. Cuando se proporcionan códigos de objeto, los objetos que no estén incluidos se ignorarán.

Long
Entrenar solo bloques que contengan objetos
(Opcional)

Especifica si el modelo se entrenará utilizando solo bloques que contienen objetos o todos los bloques, incluidos aquellos que no contienen objetos.

  • Activado: el modelo se entrenará utilizando únicamente bloques que contengan objetos. Los datos utilizados para la validación no serán modificados.
  • Desactivado: el modelo se entrenará utilizando todos los bloques, incluidos aquellos que no contienen objetos. Esta es la opción predeterminada.
Boolean
Descripciones de objetos
(Opcional)

Las descripciones de cada código de objeto en los datos de entrenamiento.

  • Código de objeto: el valor del código de objeto aprendido por el modelo.
  • Descripción: el objeto descrito por el código de clase.

Value Table
Criterios de selección de modelo
(Opcional)

Especifica la base estadística que se utilizará para determinar el modelo final.

  • Pérdida de validaciónSe utilizará el modelo que alcanza el resultado más bajo cuando se aplica la función de pérdida de entropía a los datos de validación.
  • Precisión mediaSe utilizará el modelo que logre la mayor proporción de puntos de datos de validación clasificados correctamente por el modelo entrenado en la época (verdaderos positivos) y todos los puntos de los datos de validación. Esta es la opción predeterminada.
String
Número máximo de épocas
(Opcional)

El número de veces que cada bloque de datos se transmitirá hacia delante y hacia atrás a través de la red neuronal. El valor predeterminado es 25.

Long
Estrategia de índice de aprendizaje
(Opcional)

Especifica cómo se modificará el índice de aprendizaje durante el entrenamiento.

  • Índice de aprendizaje de un cicloEl índice de aprendizaje se realizará en ciclo a lo largo de cada época utilizando la implementación de Fast.AI de la técnica de un ciclo para el entrenamiento de las redes neuronales, con el fin de ayudar a mejorar el entrenamiento de una red neuronal convolucional. Esta es la opción predeterminada.
  • Índice fijo de aprendizajeSe utilizará el mismo índice de aprendizaje durante todo el proceso de entrenamiento.
String
Tasa de aprendizaje
(Opcional)

La velocidad a la que se sobrescribirá la información existente con nueva información. Si no se proporciona ningún valor, la tasa de aprendizaje óptima se extraerá de la curva de aprendizaje durante el proceso de entrenamiento. Esta es la opción predeterminada.

Double
Tamaño de lote
(Opcional)

El número de bloques de datos de entrenamiento que se procesarán en un momento dado. El valor predeterminado es 2.

Long
Detener entrenamiento cuando el modelo ya no mejore
(Opcional)

Especifica si el entrenamiento del modelo se detendrá cuando la métrica especificada en el parámetro Criterios de selección de modelo no registre ninguna mejora tras cinco épocas consecutivas.

  • Activado: el entrenamiento del modelo se detendrá cuando el modelo deje de mejorar.
  • Desactivado: el entrenamiento del modelo continuará hasta alcanzar el número máximo de épocas. Esta es la opción predeterminada.
Boolean
Ajustes de arquitectura
(Opcional)

Los ajustes de arquitectura que se pueden modificar para mejorar los resultados del entrenamiento.

  • Opción: las opciones específicas de la arquitectura que se pueden modificar.
    • Ancho de vóxel: las dimensiones x e y del vóxel utilizado durante el entrenamiento. El valor correspondiente está en unidades lineales de metros y se puede expresar como un valor doble.
    • Altura de vóxel: la dimensión z del vóxel utilizado durante el entrenamiento. El valor correspondiente está en unidades lineales de metros y se puede expresar como un valor doble.
    • Límite de puntos de vóxel: el número de puntos en un vóxel determinado. El valor correspondiente debe ser un entero positivo. Cuando no se proporciona ningún valor, este límite se calcula durante el proceso de entrenamiento en función del tamaño del bloque y el límite de puntos de bloque de los datos de entrenamiento.
    • Vóxeles de entrenamiento máximos: el número máximo de vóxeles que se pueden utilizar en los datos de entrenamiento. El valor correspondiente debe ser un entero positivo. Cuando no se proporciona ningún valor, este límite se calcula durante el entrenamiento.
    • Vóxeles de validación máximos: el número máximo de vóxeles que se pueden utilizar en los datos de validación. El valor correspondiente debe ser un entero positivo. Cuando no se proporciona ningún valor, este límite se calcula durante el entrenamiento.
  • Valor: el valor que corresponde a la opción que se está modificando.

Value Table

Salida derivada

EtiquetaExplicaciónTipo de datos
Modelo de salida

El modelo de detección de objetos de salida que se produce.

File
Resultados estadísticos de cada época

La tabla ASCII de salida que contiene las estadísticas de época que se obtuvieron durante el proceso de entrenamiento.

Text File

arcpy.ddd.TrainPointCloudObjectDetectionModel(in_training_data, out_model_location, out_model_name, {pretrained_model}, {architecture}, {attributes}, {min_points}, {remap_objects}, {target_objects}, {train_blocks}, {object_descriptions}, {model_selection_criteria}, {max_epochs}, {learning_rate_strategy}, {learning_rate}, {batch_size}, {early_stop}, {architecture_settings})
NombreExplicaciónTipo de datos
in_training_data

Los datos de entrenamiento de detección de objetos de nubes de puntos (archivo *.pcotd) que se utilizarán para entrenar el modelo.

File
out_model_location

Una carpeta existente que almacenará el nuevo directorio que contiene el modelo de aprendizaje profundo.

Folder
out_model_name

El nombre del archivo de definición de modelo de Esri de salida (*.emd), el paquete de aprendizaje profundo (*.dlpk) y el directorio que se creará para almacenarlos.

String
pretrained_model
(Opcional)

El modelo de detección de objetos preentrenado que se perfeccionará. Si se proporciona un modelo preentrenado, los datos de entrenamiento de entrada deben tener los mismos atributos y número máximo de puntos utilizados por los datos de entrenamiento que generaron el modelo.

File
architecture
(Opcional)

Especifica la arquitectura que se utilizará para entrenar el modelo.

  • SECDSe utilizará la arquitectura Sparsely Embedded CONvolutional Detection (SECOND). Esta es la opción predeterminada.
String
attributes
[attributes,...]
(Opcional)

Especifica los atributos de punto que se utilizarán con el código de clasificación al entrenar el modelo. Solo estarán disponibles los atributos presentes en los datos de entrenamiento de la nube de puntos. No se incluye de forma predeterminada ningún atributo adicional.

  • INTENSITYSe utilizará la medida de la magnitud del retorno de pulso LIDAR.
  • RETURN_NUMBERSe utilizará la posición ordinal del punto obtenido a partir de un pulso LIDAR determinado.
  • NUMBER_OF_RETURNSSe utilizará el número total de retornos LIDAR que se identificaron como puntos del pulso asociado con un punto determinado.
  • REDSe utilizará el valor de la banda roja de una nube de puntos con información de color.
  • GREENSe utilizará el valor de la banda verde de una nube de puntos con información de color.
  • BLUESe utilizará el valor de la banda azul de una nube de puntos con información de color.
  • NEAR_INFRAREDSe utilizará el valor de la banda de infrarrojo cercano de una nube de puntos con información de infrarrojo cercano.
  • RELATIVE_HEIGHTSe usará la altura relativa de cada punto respecto a una superficie de referencia, que normalmente sería un DEM de suelo desnudo.
String
min_points
(Opcional)

El número mínimo de puntos que deben estar presentes en un bloque determinado para que se utilice en el entrenamiento del modelo. El valor predeterminado es 0.

Long
remap_objects
[remap_objects,...]
(Opcional)

Define cómo se reasignarán los códigos de objetos a nuevos valores antes de entrenar el modelo de aprendizaje profundo.

  • Código actual: el valor del código de objeto en los datos de entrenamiento.
  • Código reasignado: el valor del código de objeto al que se cambiará el código existente.

Value Table
target_objects
[target_objects,...]
(Opcional)

Los códigos de objeto que se utilizarán para filtrar los objetos en los datos de entrenamiento. Cuando se proporcionan códigos de objeto, los objetos que no estén incluidos se ignorarán.

Long
train_blocks
(Opcional)

Especifica si el modelo se entrenará utilizando solo bloques que contienen objetos o todos los bloques, incluidos aquellos que no contienen objetos.

  • OBJECT_BLOCKSEl modelo se entrenará utilizando únicamente bloques que contengan objetos. Los datos utilizados para la validación no serán modificados.
  • ALL_BLOCKSEl modelo se entrenará utilizando todos los bloques, incluidos aquellos que no contienen objetos. Esta es la opción predeterminada.
Boolean
object_descriptions
[object_descriptions,...]
(Opcional)

Las descripciones de cada código de objeto en los datos de entrenamiento.

  • Código de objeto: el valor del código de objeto aprendido por el modelo.
  • Descripción: el objeto descrito por el código de clase.

Value Table
model_selection_criteria
(Opcional)

Especifica la base estadística que se utilizará para determinar el modelo final.

  • VALIDATION_LOSSSe utilizará el modelo que alcanza el resultado más bajo cuando se aplica la función de pérdida de entropía a los datos de validación.
  • AVERAGE_PRECISIONSe utilizará el modelo que logre la mayor proporción de puntos de datos de validación clasificados correctamente por el modelo entrenado en la época (verdaderos positivos) y todos los puntos de los datos de validación. Esta es la opción predeterminada.
String
max_epochs
(Opcional)

El número de veces que cada bloque de datos se transmitirá hacia delante y hacia atrás a través de la red neuronal. El valor predeterminado es 25.

Long
learning_rate_strategy
(Opcional)

Especifica cómo se modificará el índice de aprendizaje durante el entrenamiento.

  • ONE_CYCLEEl índice de aprendizaje se realizará en ciclo a lo largo de cada época utilizando la implementación de Fast.AI de la técnica de un ciclo para el entrenamiento de las redes neuronales, con el fin de ayudar a mejorar el entrenamiento de una red neuronal convolucional. Esta es la opción predeterminada.
  • FIXEDSe utilizará el mismo índice de aprendizaje durante todo el proceso de entrenamiento.
String
learning_rate
(Opcional)

La velocidad a la que se sobrescribirá la información existente con nueva información. Si no se proporciona ningún valor, la tasa de aprendizaje óptima se extraerá de la curva de aprendizaje durante el proceso de entrenamiento. Esta es la opción predeterminada.

Double
batch_size
(Opcional)

El número de bloques de datos de entrenamiento que se procesarán en un momento dado. El valor predeterminado es 2.

Long
early_stop
(Opcional)

Especifica si el entrenamiento del modelo se detendrá cuando la métrica especificada en el parámetro model_selection_criteria no registre ninguna mejora tras cinco épocas consecutivas.

  • EARLY_STOPEl entrenamiento del modelo se detendrá cuando el modelo deje de mejorar.
  • NO_EARLY_STOPEl entrenamiento del modelo continuará hasta alcanzar el número máximo de épocas. Esta es la opción predeterminada.
Boolean
architecture_settings
[architecture_settings,...]
(Opcional)

Los ajustes de arquitectura que se pueden modificar para mejorar los resultados del entrenamiento.

  • Opción: las opciones específicas de la arquitectura que se pueden modificar.
    • VOXEL_WIDTH: las dimensiones x e y del vóxel utilizado durante el entrenamiento. El valor correspondiente está en unidades lineales de metros y se puede expresar como un valor doble.
    • VOXEL_HEIGHT: la dimensión z del vóxel utilizado durante el entrenamiento. El valor correspondiente está en unidades lineales de metros y se puede expresar como un valor doble.
    • VOXEL_POINT_LIMIT: el número de puntos en un vóxel determinado. El valor correspondiente debe ser un entero positivo. Cuando no se proporciona ningún valor, este límite se calcula durante el proceso de entrenamiento en función del tamaño del bloque y el límite de puntos de bloque de los datos de entrenamiento.
    • MAX_TRAINING_VOXELS: el número máximo de vóxeles que se pueden utilizar en los datos de entrenamiento. El valor correspondiente debe ser un entero positivo. Cuando no se proporciona ningún valor, este límite se calcula durante el entrenamiento.
    • MAX_VALIDATION_VOXELS: el número máximo de vóxeles que se pueden utilizar en los datos de validación. El valor correspondiente debe ser un entero positivo. Cuando no se proporciona ningún valor, este límite se calcula durante el entrenamiento.
  • Valor: el valor que corresponde a la opción que se está modificando.

Value Table

Salida derivada

NombreExplicaciónTipo de datos
out_model

El modelo de detección de objetos de salida que se produce.

File
out_epoch_stats

La tabla ASCII de salida que contiene las estadísticas de época que se obtuvieron durante el proceso de entrenamiento.

Text File

Muestra de código

Ejemplo de TrainPointCloudObjectDetectionModel (script independiente)

En el siguiente ejemplo se muestra cómo usar esta herramienta en la ventana de Python.

import arcpy

arcpy.env.workspace = "D:/Deep_Learning_Workspace"
arcpy.ddd.TrainPointCloudObjectDetectionModel("Cars.pcotd", "D:/DL_Models", "Cars", 
    attributes=["INTENSITY", "RETURN_NUMBER", "NUMBER_OF_RETURNS", "RELATIVE_HEIGHT"],
    object_descriptions=[[31, "Cars"]], train_blocks="OBJECT_BLOCKS",
    model_selection_criteria="AVERAGE_PRECISION", max_epochs=10)