Entrenar un modelo de aprendizaje profundo para la clasificación de nube de puntos

La creación de un modelo de aprendizaje profundo que se puede usar para la clasificación de nube de puntos implica dos pasos principales: la preparación de los datos de entrenamiento y el entrenamiento real. La primera parte suele ser la más difícil porque obtener los datos de entrenamiento depende de usted. Una vez que los tenga, la mayor parte del trabajo restante lo realiza el equipo.

Los datos de entrenamiento son puntos clasificados que usted proporciona como ejemplos para que la red neuronal los aprenda. Generalmente, cuantos más ejemplos proporcione, mejor será el entrenamiento. Sus ejemplos deben ser lo más precisos posible, por lo que la atención a la exactitud es importante. El alcance de la clasificación depende de las entidades o elementos de paisaje que sean de interés para su aplicación. También es deseable que los datos de entrenamiento sean diversos para que el modelo sea más genérico, así como contar con datos de validación diversos, para que las métricas de rendimiento obtenidas sean más realistas. La diversidad facilitará un mejor entrenamiento.

Las nubes de puntos suelen contener muestras de todo tipo de cosas, lo que pueda ver un láser o una foto. No es realista ni es deseable que todos los puntos se clasifiquen como una cosa específica. Lo que necesita son puntos de interés para clasificarlos correctamente. Puede dejar otros puntos en una clase de fondo, o todo lo demás. Por ejemplo, si le interesan las líneas eléctricas, la vegetación o los edificios, asegúrese de que estén clasificados correctamente. Puede dejar el resto de puntos sin clasificar (por ejemplo, clase 1 para LIDAR con formato LAS).

No existe una regla fija sobre cuántos datos utilizar para el entrenamiento. Generalmente, cuantos más ejemplos pueda proporcionar, mejor. Naturalmente, existen límites prácticos y también habrá ciertos rendimientos decrecientes en relación con su esfuerzo.

Preparar datos de entrenamiento

Para el entrenamiento, necesitará una nube de puntos que sea una buena representación de los datos que desea clasificar. La situación ideal es cuando los datos que se van a clasificar se recopilaron como parte del mismo proyecto que los datos de entrenamiento; el mismo hardware, las mismas especificaciones de recopilación. Esos son los que tienen el mejor potencial de éxito. Puede utilizar otros datos, pero quiere que sus características sean similares a los datos de entrenamiento. La densidad y el espaciado de punto nominal son factores clave. La precisión posicional es otra. Si decide incluir atributos de punto, como el número de retorno LIDAR e intensidad en el entrenamiento para mejorar la predicción del modelo, asegúrese de que estos atributos existan en los datos destinados a la clasificación.

Puede clasificar los datos de entrenamiento utilizando técnicas manuales y automáticas. Existen herramientas de edición interactiva de código de clase LAS y un conjunto de clasificadores basados en reglas. A veces, usar una combinación de ellos puede ser útil. Por ejemplo, establezca una clasificación base utilizando las herramientas de geoprocesamiento Clasificar el terreno LAS y Clasificar edificio de LAS. A continuación, seleccione algunas subáreas representativas buenas (o teselas si utiliza LAS en teselas) de su dataset como sitios de entrenamiento. Borre manualmente estas áreas y agregue otras clases, si procede. Utilice estas subáreas editadas y mejoradas como datos de entrenamiento.

También se requieren datos de validación. Se utilizan para proporcionar una evaluación no sesgada de un modelo durante el entrenamiento y resulta útil para identificar y evitar el exceso de ajuste, donde el modelo solo funciona bien en los datos de entrenamiento, pero nada más. Los datos de validación deben ser similares a los datos de entrenamiento en que cubren áreas representativas de interés y utilizan el mismo esquema de clasificación, pero proceden de diferentes ubicaciones. Puede utilizar los mismos datos de proyecto que los que se usan para el entrenamiento, pero con distintos subconjuntos. Generalmente, se necesitan más datos de entrenamiento que datos de validación. No hay ninguna regla fija, pero no es inusual utilizar varias veces más datos de entrenamiento que datos de validación.

Considere la opción de utilizar una superficie de referencia, como un DEM, para agregar un atributo de altura relativa a los datos de entrenamiento. Muchas entidades de interés, como vehículos, farolas y señales de tráfico, se producen en determinados rangos de altura. La elevación del propio suelo puede variar enormemente de un sitio a otro, pero la altura de estas entidades en relación con el suelo no varía. En este aspecto, una altura relativa al atributo de suelo registrado por punto puede ayudar a predecir a qué tipo de entidad o clase pertenece un punto.

Puede excluir puntos concretos del entrenamiento. Por ejemplo, seguramente no quiere incluir puntos clasificados como ruido, ya que pueden tener un efecto negativo. Además, si utiliza una superficie de referencia para agregar el atributo de altura relativa de los puntos, puede optar por excluir puntos de suelo y así reducir el número de puntos utilizados. A su vez, esto reducirá el tiempo necesario para el entrenamiento.

Una vez definidos los datos de entrenamiento y de validación, deberá determinar una vecindad de muestreo adecuada, o tamaño de bloque, que se debería utilizar en el entrenamiento para evaluar puntos.

Tamaño de bloque

Los datos de entrenamiento y validación se dividen en bloques pequeños manejables. Los bloques tienen una forma circular para administrar los datos en las coordenadas proyectadas y las no proyectadas (como grados decimales). Después, estos bloques de puntos pasan a un formato accesible para las bibliotecas de aprendizaje profundo. Ajuste el tamaño de los bloques adecuadamente. Su objetivo es contener una cantidad razonable de puntos relativos a la memoria de GPU disponible. El entrenamiento cargará puntos y estructuras de datos secundarias para varios bloques al mismo tiempo, según establezca un parámetro de entrenamiento llamado tamaño de lote. Aquí hay una interacción de varias variables a la que prestar atención. Los lotes controlan cuántos bloques se procesan al mismo tiempo. Los bloques son conjuntos de puntos y sus atributos. El tamaño de bloque y la densidad de puntos en la ubicación del bloque determinan la cantidad de puntos en un bloque. Los bloques contendrán un número de puntos relativamente coherente si la densidad de la nube de puntos también es coherente. Puede utilizar datasets en los que la densidad de puntos varíe mucho, pero es probable que necesite más entrenamiento para que funcione bien.

Aunque su estimación para el número de puntos de un bloque puede ser correcta de media, siempre habrá varianza y debe establecer un límite superior para el número de puntos de un bloque. Puede hacerlo con el parámetro de límite de puntos de bloque. 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 sus datos.

Pruebe a comenzar con bloques dimensionados para que contengan aproximadamente 8.000 puntos de media.

Para estimar el tamaño de un bloque, que es el diámetro de un bloque, es necesario conocer el espaciado de punto nominal de los datos, o la densidad de puntos, y el número de puntos por bloque deseado:

point_density = 1 / (point_spacing)
block_area = desired_block_point_count / point_density
block_size = 2 * square_root(block_area / Pi)

Al evaluar el tamaño de un bloque, también puede tener en cuenta el tamaño de los objetos o las entidades de interés. Por ejemplo, si las entidades son significativamente más pequeñas que el tamaño de bloque estimado anteriormente, puede optar por reducir el tamaño de bloque en consecuencia.

Para una GPU con RAM dedicada de 8 GB, utilice el tamaño de lote predeterminado de 2 para cargar dos bloques de puntos en la GPU a la vez. Supervise el uso de la memoria de la GPU. Si observa que hay mucha memoria de GPU disponible durante el entrenamiento, puede aumentar con seguridad el tamaño del lote para procesar más bloques a la vez.

Formación

El entrenamiento implica la creación de una red neuronal convolucional (CNN) usando sus datos de entrenamiento y validación. El modelo resultante se utiliza para clasificar las nubes de puntos en formato LAS a través de un proceso llamado inferencia. PointCNN es el marco de aprendizaje profundo de código abierto utilizado por ArcGIS para entrenamiento e inferencia. Puede utilizar el modelo en sus propios datos o compartirlo para que otros usuarios lo utilicen en el suyo. El proceso de entrenamiento requiere muchos recursos y puede llevar mucho tiempo. Afortunadamente, el resultado es compacto. Los modelos en sí suelen estar entre 15-20 MB de tamaño.

Los modelos de salida se componen de varios archivos que se colocan juntos en una carpeta de salida. Incluyen un archivo de definición de modelo de Esri (*.emd), que es un archivo JSON que contiene ajustes de parámetros y un archivo de datos *.pth, además de archivos adicionales que puede revisar para evaluar los resultados del entrenamiento. Un paquete de aprendizaje profundo (*.dlpk) también se genera en la carpeta. Incluye todos los archivos relevantes empaquetados en uno para compartir y publicar.

De forma predeterminada, entrena un modelo desde cero, pero puede incluir un modelo preentrenado en el proceso. Al hacerlo, estará creando un nuevo modelo mejorando para ello uno existente. El entrenamiento adicional proporciona más ejemplos que el modelo puede utilizar para mejorar su capacidad para predecir clasificaciones de puntos correctas.

La configuración de puntos mínimos por bloque de la herramienta de entrenamiento se utiliza para omitir los bloques de entrenamiento que contienen un número de puntos insuficiente. A menudo, los bloques alrededor del perímetro de un proyecto no tienen muchos puntos. Además, al crear los datos de entrenamiento, es posible que se haya alcanzado el límite de puntos de bloque para uno o más bloques. Los bloques subsiguientes se realizan para contener los puntos de desbordamiento. En cualquier caso, los bloques con relativamente pocos puntos no son particularmente útiles, por lo que puede ser mejor no incluirlos en el proceso de entrenamiento.

Administrar clases

La categoría Administrar clases de la herramienta de geoprocesamiento Entrenar modelo de clasificación de nube de puntos contiene parámetros asociados con la nueva reasignación de clase, las clases de interés y la nomenclatura de clases.

La reasignación de clase resulta útil cuando se necesita que el modelo de salida utilice un conjunto diferente de códigos de clase y sus significados relativos a los datos de entrenamiento de entrada. También es útil para fusionar clases. Por ejemplo, para combinar tres clases de vegetación en una.

Los códigos de clase de interés son el centro del entrenamiento. De forma predeterminada, todas las clases de los datos de entrenamiento de entrada se utilizan para crear el modelo. Varias clases pueden complicar el entrenamiento innecesariamente si solo le interesa una clase (o tipo) de entidad. Por ejemplo, si solo le interesa crear un modelo para clasificar cables de conductores del tendido eléctrico, puede establecer un código de interés para que sea solo ese (por ejemplo, la clase 14 según el estándar LAS). Al hacerlo, se le solicitará un código de clase de fondo. Ese es el código para todo lo demás. Así, aunque los datos de entrenamiento puedan contener más clases, el modelo entrenado solo sabrá cómo clasificar dos de ellas: la clase de interés y el fondo.

Parámetros de entrenamiento

La categoría Parámetros de entrenamiento de la herramienta de geoprocesamiento Entrenar modelo de clasificación de nube de puntos contiene parámetros específicos del propio proceso de entrenamiento, en lugar de los datos y clases involucrados.

El entrenamiento es un proceso iterativo. Se pasa varias veces por los datos hasta que se cumpla un criterio. Un criterio es el Número máximo de épocas. Una época representa un paso por los datos de entrenamiento. En una época, los datos se procesan en lotes. Un lote es un conjunto de uno o varios bloques. Iteraciones por época es el porcentaje de lotes procesados en una época. Por lo tanto, cuando se especifica menos del 100 por ciento, se procesa un subconjunto de lotes. El Tamaño de lote es el número de bloques de un lote. Los bloques de un lote se procesan en paralelo. Si la GPU tiene suficiente RAM dedicada, puede entrenar usando un tamaño de lotes mayor, lo que normalmente reducirá el tiempo necesario para el entrenamiento en general.

Tasa de aprendizaje

La tasa de aprendizaje es un parámetro de ajuste que controla cuánto ajustar el modelo cada vez que se actualizan sus pesos a medida que se acerca a un objetivo de pérdida mínima. Influye en la cantidad de información nueva que invalida la antigua y, por tanto, representa la velocidad a la que aprende el modelo.

La determinación de una tasa de aprendizaje implica un equilibrio. Un valor demasiado pequeño puede resultar en mucho tiempo de entrenamiento, con la posibilidad de que el modelo se bloquee. Un valor demasiado grande puede resultar que el aprendizaje de un conjunto de pesos no sea óptimo y en un proceso de aprendizaje inestable.

Resulta difícil presentar un valor inicial para la tasa de aprendizaje. La herramienta Entrenar modelo de clasificación de nube de puntos puede estimar un valor. Se recomienda que lo deje en blanco, la opción predeterminada, la primera vez que entrene un modelo. Permita que la herramienta calcule una tasa de aprendizaje. La herramienta Entrenar modelo de clasificación de nube de puntos informa de la tasa de aprendizaje en sus mensajes. También informa de la tasa de aprendizaje en un archivo llamado model_metrics.html, que se escribe en la carpeta del modelo de salida cuando se completa el proceso de entrenamiento. Para obtener más información sobre los resultados generados en Entrenar modelo de clasificación de nube de puntos, consulte Evaluar los resultados de entrenamiento de nube de puntos.

Temas relacionados