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.

Uso

  • Esta herramienta utiliza la implementación PointCNN utilizando marcos de aprendizaje profundo.

    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. La herramienta intentará seleccionar la tarjeta gráfica con capacidad CUDA más rápida del equipo. Si hay varias GPU y la herramienta no usa la tarjeta más rápida, la GPU deseada se puede especificar mediante la configuración del entorno Id. de GPU. Si la GPU seleccionada también se utiliza para la visualización, su memoria disponible será reducida por el sistema operativo y cualquier otra aplicación que utilice la pantalla al mismo tiempo. Para maximizar la memoria de GPU para el entrenamiento, plantéese utilizar para la pantalla del equipo una tarjeta gráfica que no se vaya a utilizar para el entrenamiento.

    Usar la GPU suele ser mucho más rápido que usar la CPU. La CPU solo se debe usar si no hay ninguna GPU disponible. Si se usa la CPU para el entrenamiento, proporcione la muestra de entrenamiento más pequeña posible para obtener una estimación del tiempo que tardará en procesar los datos antes de realizar la operación de entrenamiento.

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

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

Parámetros

EtiquetaExplicaciónTipo de datos
Datos de entrenamiento de entrada

Los datos de entrenamiento de la nube de puntos (*.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.
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ónEl modelo que alcanza el resultado más bajo cuando se selecciona la función de pérdida de entropía a los datos de validación.
  • RecuperarSe seleccionará 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 seleccionará 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 seleccionará 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 seleccionará 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 transmite 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 procesan 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 el valor especificado para el parámetro Criterios de selección de modelo no registre ninguna mejora tras 5 é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

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

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

Los datos de entrenamiento de la nube de puntos (*.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.
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_LOSSEl modelo que alcanza el resultado más bajo cuando se selecciona la función de pérdida de entropía a los datos de validación.
  • RECALLSe seleccionará 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 seleccionará 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 seleccionará 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 seleccionará 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 transmite 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 procesan 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 el valor especificado para el parámetro model_selection_criteria no registre ninguna mejora tras 5 é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

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

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 (st
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)

Entornos

Casos especiales

Información de licenciamiento

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

Temas relacionados