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

Resumen

Entrena un modelo de aprendizaje profundo para la clasificación de nubes de puntos.

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 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.

  • El modelo de clasificación de nubes 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.

  • Usar un modelo preentrenado es ventajoso, especialmente cuando se enfrentan limitaciones de datos, tiempo o recursos computacionales. Los modelos preentrenados reducen la necesidad de un entrenamiento exhaustivo y ofrecen un punto de partida fiable que puede acelerar la creación de un modelo útil. Para aprovechar el modelo preentrenado, los nuevos datos de entrenamiento deben ser compatibles con el modelo preentrenado. Asegúrese de que los nuevos datos de entrenamiento tengan los mismos atributos y códigos de clase que los datos de entrenamiento que se utilizaron para crear el modelo preentrenado. Si los códigos de clase de los datos de entrenamiento no coinciden con las clases en el modelo preentrenado, las clases de los datos de entrenamiento se deben reasignar en consecuencia.

  • Cuando la herramienta se está ejecutando, su mensaje de progreso devuelve las siguientes estadísticas sobre los resultados de entrenamiento que se lograron en 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

  • 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 esta carpeta es el mismo que el del modelo con el sufijo .checkpoints y se almacena en el valor del parámetro Ubicación del modelo de salida. Una vez finalizado el entrenamiento, se crea una tabla CSV con un nombre que empieza con el valor Nombre del modelo de salida y termina con _stats.csv en la carpeta de punto de control. Esta tabla incluye los siguientes campos relacionados 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.
  • La memoria dedicada utilizada durante el entrenamiento es la suma de la memoria asignada por 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 es 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. El uso de este atributo puede mejorar potencialmente la capacidad del modelo para aprender relaciones direccionales durante el proceso de 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

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
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 puntos que se utilizarán para 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
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 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. 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á la arquitectura PointCNN.
  • RandLA-NetSe utilizará la arquitectura 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á la arquitectura Semantic Query Network (SQN). SQN no requiere ninguna clasificación exhaustiva de los datos de entrenamiento como 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

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 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 puntos que se utilizarán para 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
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 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. 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á la arquitectura PointCNN.
  • RANDLANETSe utilizará la arquitectura 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á la arquitectura Semantic Query Network (SQN). SQN no requiere ninguna clasificación exhaustiva de los datos de entrenamiento como 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)

Temas relacionados