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

Resumen

Entrena un modelo de aprendizaje profundo para la clasificación de nube de puntos con la arquitectura PointCNN.

Más información sobre cómo entrenar un modelo de clasificación de nube de puntos

Uso

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

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

  • El modelo de clasificación de puntos se puede entrenar con una tarjeta gráfica NVIDIA compatible con CUDA, o bien con la CPU. Usar la GPU suele ser más rápido que usar la CPU. Utilice la CPU solo si no hay ninguna GPU disponible. Al utilizar la CPU para entrenar, empiece utilizando la arquitectura RandLA-Net, ya que consume menos memoria que PointCNN. También puede experimentar utilizando la muestra de entrenamiento más pequeña posible para estimar el tiempo que se tardará en procesar los datos antes del entrenamiento con el dataset de entrenamiento completo.

  • Al utilizar la GPU para entrenar un modelo en un equipo con varias tarjetas gráficas, la herramienta seleccionará la tarjeta gráfica más rápida del equipo. También puede especificar la GPU con la configuración del entorno Id. de GPU. Si hay varias tarjetas gráficas en el equipo, puede maximizar el rendimiento del entrenamiento al dedicar la tarjeta gráfica con los mayores recursos de cálculo para el entrenamiento y la que tiene menos recursos para la visualización. Si la GPU seleccionada también se utiliza para la visualización, el sistema operativo reduce su memoria disponible y cualquier aplicación que utilice la pantalla durante el proceso de entrenamiento.

  • Cuando se especifica un modelo preentrenado, el modelo que se entrenará adoptará los pesos del modelo preentrenado y ajustará los pesos para clasificar los mismos objetos en el modelo preentrenado. Por esta razón, los datos de entrenamiento deben tener los mismos atributos y códigos de clase que el modelo preentrenado. Si los datos de entrenamiento utilizan códigos de clase diferentes para representar los mismos objetos en el modelo prediseñado, reasigne los códigos de clase de los datos de entrenamiento según corresponda.

  • Se crea una carpeta para almacenar los modelos de punto de control, que son modelos que se crean en cada época. El nombre de esta carpeta es el mismo que el valor del parámetro Ubicación de modelo de salida con un sufijo .checkpoints y se crea en la misma ubicación. Una vez finalizado el entrenamiento, se crea una tabla CSV con un nombre que coincide con el valor del parámetro Nombre de modelo de salida con el sufijo _stats.csv y se agrega a la carpeta de punto de control. Esta tabla proporciona los siguientes campos en relación con los resultados obtenidos para cada código de clase y época:

    • Epoch— El número de época asociado a los resultados de la fila. Este valor corresponde al modelo creado en el directorio de modelos de punto de control. Los resultados se obtienen aplicando el modelo entrenado en la época a los datos de validación.
    • Class_Code— El código de clase cuyos resultados se notifican.
    • Precision— El ratio entre el número de puntos que se clasificaron correctamente (positivos verdaderos) y todos los puntos clasificados (positivos verdaderos y falsos positivos).
    • Recall— El ratio entre el número de puntos clasificados correctamente (positivos verdaderos) y todos los puntos que se deberían haber clasificado con este valor (positivos verdaderos y falsos negativos).
    • F1_Score— El valor medio armónico de la precisión y el valor de recuperación.
  • Durante el entrenamiento, PointCNN aprende patrones de los datos de entrenamiento y minimiza la función de pérdida de entropía. Cuando se ejecuta la herramienta, el mensaje de progreso devuelve el siguiente resumen estadístico de los resultados de entrenamiento que se lograron para cada época:

    • 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: 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
    • Precisión: el promedio de macro de la precisión para todos los códigos de clase
    • Recuperación: el promedio de macro de la recuperación para todos los códigos de clase
    • Puntuación F1: el valor medio armónico del promedio de la macro de la precisión y los valores de recuperación de todos los códigos de clase

    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, por lo que no se aprende efectivamente ningún patrón para producir un modelo utilizable.

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

  • La memoria dedicada utilizada durante el entrenamiento es la suma de la memoria asignada para el marco de aprendizaje profundo y el tamaño de los datos procesados en cada lote de una iteración en una época determinada. El tamaño de los datos de cada lote depende del número de atributos de punto adicionales especificados en el parámetro Selección de atributos, del número total de puntos de un bloque determinado y del número de bloques que se procesarán en cada lote, tal y como se especifica en el parámetro Tamaño de lote. El número máximo de puntos por bloque se determina cuando se exportan los datos de entrenamiento y se debe dar por hecho este valor a la hora de estimar la posible huella de memoria de la operación de entrenamiento.

  • La opción Altura relativa del parámetro Selección de atributos agrega un atributo que identifica la altura de un punto a partir de una superficie de referencia, como un modelo de elevación de suelo desnudo. Este atributo podría mejorar la capacidad del modelo para identificar las relaciones direccionales entre los puntos utilizados para el entrenamiento.

Parámetros

EtiquetaExplicaciónTipo de datos
Datos de entrenamiento de entrada

Los datos de entrenamiento de la nube de puntos (archivo *.pctd) que se usarán para entrenar el modelo de clasificación.

File
Ubicación de modelo de salida

La 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 nuevo directorio que se creará para almacenarlos.

String
Modelo preentrenado
(Opcional)

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

File
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 relativaLa altura relativa de cada punto respeto 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
Reasignación de clase
(Opcional)

Define cómo se asignarán los valores de código de clase a valores nuevos antes de entrenar el modelo de aprendizaje profundo.

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

Los códigos de clase que se utilizarán para filtrar los bloqueos de los datos de entrenamiento. Cuando se especifican códigos de clase de interés, todos los demás códigos de clase se reasignan al código de clase de fondo.

Long
Código de clase de fondo
(Opcional)

El valor del código de clase que se utilizará para todos los demás códigos de clase cuando se hayan especificado códigos de clase de interés.

Long
Descripción de la clase
(Opcional)

Las descripciones de lo que representa cada código de clase en los datos de entrenamiento.

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.
  • RecuperarSe utilizará el modelo que alcance el mejor promedio de macro de la recuperación de todos los códigos de clase. El valor de recuperación de cada código de clase se determina por el ratio entre los puntos clasificados correctamente (verdaderos positivos) y todos los puntos que se deberían haber clasificado con este valor (positivos esperados). Esta es la opción predeterminada.
  • Puntuación F1Se utilizará el modelo que alcance el mejor valor medio armónico de entre el macro promedio de los valores de precisión y recuperación de todos los códigos de clase. Con ello se busca el equilibrio entre la precisión y la recuperación, lo que facilita un mejor rendimiento general.
  • PrecisiónSe utilizará el modelo que alcance el mejor promedio de macro de la precisión de todos los códigos de clase. La precisión de cada código de clase se determina mediante el ratio entre los puntos que se clasifican correctamente (positivos verdaderos) y todos los puntos clasificados (positivos verdaderos y falsos positivos).
  • PrecisiónSe utilizará el modelo que alcanza el ratio más alto entre los puntos clasificados corregidos y todos los puntos de los datos de validación.
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
Iteraciones por época (%)
(Opcional)

El porcentaje de los datos que se procesarán en cada época de entrenamiento. El valor predeterminado es 100.

Double
Tasa de aprendizaje
(Opcional)

La velocidad a la que se sobrescribirá la información existente con nueva información. Si no se especifica ningún valor, el índice de aprendizaje óptimo 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. Esta es la opción predeterminada.
  • Desactivado: el entrenamiento del modelo continuará hasta alcanzar el número máximo de épocas.
Boolean
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
Arquitectura de modelo
(Opcional)

Especifica la arquitectura de red neuronal que se utilizará para entrenar el modelo. Cuando se especifica un modelo preentrenado, la arquitectura utilizada para crear el modelo preentrenado se configurará automáticamente.

  • PointCNNSe utilizará PointCNN.
  • RandLA-NetSe utilizará RandLA-Net. RandLA-Net se basa en los principios de muestreo aleatorio simple y la agregación de entidades locales. Esta es la opción predeterminada.
  • Semantic Query NetworkSe utilizará Semantic Query Network (SQN). SQN no requiere ninguna clasificación exhaustiva de los datos de entrenamiento de la forma en que lo hacen otras arquitecturas de red neuronal.
String

Salida derivada

EtiquetaExplicaciónTipo de datos
Modelo de salida

El modelo resultante generado por esta herramienta.

File
Estadísticas de modelo de salida

El archivo .csv que contiene las puntuaciones de precisión, recuperación y F1 para cada código de clase y época.

Text File
Resultados estadísticos de cada época

El archivo .csv que contiene las puntuaciones de pérdida de entrenamiento, pérdida de validación, exactitud, precisión, recuperación y F1 obtenidas en cada época.

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

Los datos de entrenamiento de la nube de puntos (archivo *.pctd) que se usarán para entrenar el modelo de clasificación.

File
out_model_location

La 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 nuevo directorio que se creará para almacenarlos.

String
pretrained_model
(Opcional)

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

File
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_HEIGHTLa altura relativa de cada punto respeto 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
class_remap
[class_remap,...]
(Opcional)

Define cómo se asignarán los valores de código de clase a valores nuevos antes de entrenar el modelo de aprendizaje profundo.

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

Los códigos de clase que se utilizarán para filtrar los bloqueos de los datos de entrenamiento. Cuando se especifican códigos de clase de interés, todos los demás códigos de clase se reasignan al código de clase de fondo.

Long
background_class
(Opcional)

El valor del código de clase que se utilizará para todos los demás códigos de clase cuando se hayan especificado códigos de clase de interés.

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

Las descripciones de lo que representa cada código de clase en los datos de entrenamiento.

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.
  • RECALLSe utilizará el modelo que alcance el mejor promedio de macro de la recuperación de todos los códigos de clase. El valor de recuperación de cada código de clase se determina por el ratio entre los puntos clasificados correctamente (verdaderos positivos) y todos los puntos que se deberían haber clasificado con este valor (positivos esperados). Esta es la opción predeterminada.
  • F1_SCORESe utilizará el modelo que alcance el mejor valor medio armónico de entre el macro promedio de los valores de precisión y recuperación de todos los códigos de clase. Con ello se busca el equilibrio entre la precisión y la recuperación, lo que facilita un mejor rendimiento general.
  • PRECISIONSe utilizará el modelo que alcance el mejor promedio de macro de la precisión de todos los códigos de clase. La precisión de cada código de clase se determina mediante el ratio entre los puntos que se clasifican correctamente (positivos verdaderos) y todos los puntos clasificados (positivos verdaderos y falsos positivos).
  • ACCURACYSe utilizará el modelo que alcanza el ratio más alto entre los puntos clasificados corregidos y todos los puntos de los datos de validación.
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
epoch_iterations
(Opcional)

El porcentaje de los datos que se procesarán en cada época de entrenamiento. El valor predeterminado es 100.

Double
learning_rate
(Opcional)

La velocidad a la que se sobrescribirá la información existente con nueva información. Si no se especifica ningún valor, el índice de aprendizaje óptimo 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. Esta es la opción predeterminada.
  • NO_EARLY_STOPEl entrenamiento del modelo continuará hasta alcanzar el número máximo de épocas.
Boolean
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
architecture
(Opcional)

Especifica la arquitectura de red neuronal que se utilizará para entrenar el modelo. Cuando se especifica un modelo preentrenado, la arquitectura utilizada para crear el modelo preentrenado se configurará automáticamente.

  • POINTCNNSe utilizará PointCNN.
  • RANDLANETSe utilizará RandLA-Net. RandLA-Net se basa en los principios de muestreo aleatorio simple y la agregación de entidades locales. Esta es la opción predeterminada.
  • SQNSe utilizará Semantic Query Network (SQN). SQN no requiere ninguna clasificación exhaustiva de los datos de entrenamiento de la forma en que lo hacen otras arquitecturas de red neuronal.
String

Salida derivada

NombreExplicaciónTipo de datos
out_model

El modelo resultante generado por esta herramienta.

File
out_model_stats

El archivo .csv que contiene las puntuaciones de precisión, recuperación y F1 para cada código de clase y época.

Text File
out_epoch_stats

El archivo .csv que contiene las puntuaciones de pérdida de entrenamiento, pérdida de validación, exactitud, precisión, recuperación y F1 obtenidas en cada época.

Text File

Muestra de código

Ejemplo de TrainPointCloudClassificationModel (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.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)

Información de licenciamiento

  • Basic: Requiere 3D Analyst
  • Standard: Requiere 3D Analyst
  • Advanced: Requiere 3D Analyst

Temas relacionados