Prepararse para el análisis de aprendizaje profundo
En la primera parte de este tutorial, definirá el proyecto de ArcGIS Pro, elegirá un modelo preentrenado de aprendizaje profundo, preparará imágenes para que se correspondan mejor con el modelo y comprenderá la necesidad del aprendizaje por transferencia.
Configurar el proyecto
Para empezar, descargará un proyecto que contiene todos los datos de este tutorial y lo abrirá en ArcGIS Pro. A continuación, agregará imágenes al mapa de proyecto.
- Descargue el archivo Seattle_Building_Detection.zip y ubique el archivo descargado en su equipo.
Nota:
La mayoría de los navegadores web descargan archivos de manera predeterminada en la carpeta Descargas del equipo.
- Haga clic con el botón derecho en el archivo Seattle_Building_Detection.zip y extráigalo a una ubicación de su equipo, como por ejemplo una carpeta en su disco C:.
- Abra la carpeta extraída Seattle_Building_Detection y haga doble clic en Seattle_Building_Detection.aprx para abrir el proyecto en ArcGIS Pro.
- Si se le pide, inicie sesión en su cuenta de organización ArcGIS o en ArcGIS Enterprise con una cuenta de usuario nominal.
Nota:
Si no tiene acceso a ArcGIS Pro o una cuenta de organización de ArcGIS, consulte las opciones de acceso a software.
Se abrirá el proyecto.
El mapa solo contiene el mapa base topográfico predeterminado. En este flujo de trabajo, utilizará imágenes aéreas para detectar edificios. Ahora agregará esas imágenes al mapa.
- En la cinta, haga clic en la pestaña Vista. En el grupo Ventanas, haga clic en panel Catálogo.
Aparece el panel Catálogo.
- En el panel Catálogo, expanda Carpetas, Seattle_Building_Detection y Imagery_data.
- Haga clic con el botón derecho en Seattle_imagery.jp2 y elija Agregar a mapa actual.
- Si se pide calcular estadísticas, haga clic en Sí.
Las estadísticas son necesarias para realizar determinadas tareas en las imágenes, como representarlas con una extensión. Aparecen las imágenes en el mapa. Representa un área de Seattle.
Nota:
Estas imágenes aéreas provienen del sitio web del Programa Nacional de Imágenes Agrícolas (NAIP) de los Estados Unidos. Imágenes de NAIP que cubren todos los Estados Unidos pueden descargarse del sitio web de USGS Earth Explorer.
- Acerque y desplace para examinar las imágenes. Observe que hay muchos edificios en esta imagen.
Elegir un modelo preentrenado e inspeccionarlo
Desea utilizar aprendizaje profundo para extraer edificios de las imágenes aéreas. Si aún no tiene disponible un modelo de aprendizaje profundo, se requiere primero entrenar un modelo desde cero, alimentándolo con un gran número de ejemplos para mostrar el modelo de lo que es un edificio. Los modelos de alto rendimiento pueden requerir someterse a decenas de miles de ejemplos. Una alternativa es utilizar un modelo que ya estaba entrenado por usted. Recuperará dicho modelo y conocerá sus especificaciones.
Nota:
Para utilizar las herramientas de aprendizaje profundo en ArcGIS Pro es necesario tener instaladas en el equipo las bibliotecas de aprendizaje profundo correctas. Si no tiene instalados estos archivos, guarde el proyecto, cierre ArcGIS Pro y siga los pasos descritos en las instrucciones Prepararse para el aprendizaje profundo en ArcGIS Pro. En estas instrucciones, también aprenderá cómo comprobar si el hardware y el software de su ordenador son capaces de ejecutar flujos de trabajo de aprendizaje profundo y otros consejos útiles. Una vez hecho, puede volver a abrir el proyecto y continuar con el tutorial.
- Vaya al sitio web de ArcGIS Living Atlas of the World.
- En el cuadro de búsqueda, escriba Modelo preentrenado y pulse Intro.
- Vaya a la lista de resultados para ver los más de 50 modelos preentrenados que están disponibles.
- En el cuadro de búsqueda, escriba Extracción de huellas de edificios y pulse Intro.
La lista de resultados contiene modelos de aprendizaje profundo preentrenados para diferentes regiones del mundo. Ya que su área de interés está en los Estados Unidos, elegirá el modelo entrenado en ese área.
- En la lista de resultados, haga clic en Extracción de huellas de edificios: EE. UU.
Aparece la página de descripción para el modelo. Contiene mucha información pertinente sobre el modelo. Lo más importante es comprender qué tipo de entrada está esperando el modelo. Si sus datos de entrada no son suficientemente similares a tipo de datos sobre el que se entrenó el modelo, el modelo no se comportará bien.
- Tómese algún tiempo para leer el contenido de esa página. Revise más específicamente la sección mostrada en la siguiente imagen de ejemplo:
Conoce varios datos sobre el modelo:
- Entrada: como entrada, el modelo espera imágenes de alta resolución (10-40 cm) de tres bandas de 8 bits. Para conocer si sus datos coinciden con estas especificaciones, deberá investigar aún más. Lo hará un poco más tarde en el tutorial.
- Salida: el modelo producirá una clase de entidad que contiene huellas de edificios. La obtención de polígonos de huellas de edificios como una salida es exactamente lo que está buscando.
- Geografías aplicables: este modelo debe funcionar bien en los Estados Unidos. Esto es perfecto, ya que su área de interés está en los Estados Unidos.
- Arquitectura del modelo: el modelo utiliza la arquitectura de modelo MaskRCNN. Debe tomar nota de esa información, ya que la necesitará más tarde en el flujo de trabajo.
Ya que el modelo parece bastante prometedor para su proyecto, lo descargará.
- En Vista general, haga clic en Descargar.
Tras unos momentos, se completa la descarga.
- Busque el archivo descargado, usa_building_footprints.dlpk, en su equipo.
Sugerencia:
La mayoría de los navegadores web descargan archivos de manera predeterminada en la carpeta Descargas del equipo.
- Cree una carpeta denominada Pretrained_model en su carpeta Seattle_Building_Detection.
- Mueva el archivo de modelo usa_building_footprints.dlpk desde su ubicación de descarga a la carpeta Pretrained_model.
Examinar propiedades de las imágenes
Ahora investigará para comprender el nivel de correspondencia de sus datos con la entrada ideal de imágenes de alta resolución (10-40 cm) de 3 bandas de 8 bits.
- Vuelva a su proyecto Seattle_Building_Detection en ArcGIS Pro.
- En el panel Contenido, haga clic con el botón derecho en Seattle_imagery.jp2 y elija Propiedades.
- En la ventana Propiedades de capa, haga clic en Fuente y expanda Información de ráster.
- Encuentre el campo Cantidad de bandas.
Su valor es 4. El programa NAIP recopila imágenes multiespectrales compuestas por cuatro bandas espectrales: rojo, verde, azul e infrarrojo cercano. La banda de infrarrojo cercano suele utilizarse para visualizar la salud de la vegetación. Por contra, el modelo espera tres bandas (rojo, verde y azul). Necesitará solucionar esta diferencia.
- Encuentre los campos Tamaño de celda X y Tamaño de celda Y.
El valor es 1 en ambos casos. Esto significa que cada celda (o píxel) en las imágenes mide 1 por 1 metro. Esta imagen NAIP se capturó en realidad a una resolución de 1 metro. Esta es una resolución inferior que la resolución mayor de 10-40 cm recomendada por el modelo. También necesitará solucionar este problema.
- Encuentre el campo Profundidad de píxel.
Su valor es 8 bits, lo que se corresponde con los 8 bits requeridos por el modelo.
- Haga clic en Aceptar para cerrar la ventana Propiedades de capa.
Aprenderá a visualizar de otra forma la cantidad de bandas.
- En el panel Contenido, haga clic con el botón derecho en Seattle_imagery.jp2 y elija Simbología.
- En el panel Simbología, para Rojo, haga clic en Band_1 para expandir la lista desplegable.
Se enumeran cuatro bandas. Al visualizar una imagen multiespectral, solo pueden visualizarse tres bandas en un momento determinado, a través de los canales rojo, verde y azul, combinando las tres bandas seleccionadas en una composición RGB. No obstante, puede ver que hay presentes cuatro bandas en la imagen y pueden utilizarse para varios fines de análisis.
- Cierre el panel Simbología.
Se ha encontrado con una discrepancia en dos criterios entre sus imágenes y las expectativas del modelo preentrenado: el número de bandas y la resolución. Aprenderá cómo solucionar estos dos problemas posteriormente en este flujo de trabajo.
Seleccionar bandas de imágenes pertinentes
Ahora solucionará la discrepancia de las bandas. Sus imágenes tienen cuatro bandas espectrales:
- Banda 1: rojo
- Banda 2: verde
- Banda 3: azul
- Banda 4: infrarrojo cercano
Por otra parte, el modelo espera una entrada de tres bandas (rojo, verde, azul). Para solucionar eso, debe producir una nueva capa que contenga solo las tres primeras bandas de las imágenes NAIP para que se corresponda mejor con las expectativas del modelo. Este es un paso importante; si se omite, el modelo tendrá un rendimiento inferior.
Nota:
Es fundamental conocer el orden preciso de las bandas en sus imágenes. Por ejemplo, algunos otros tipos de imágenes podrían tener sus bandas en un orden diferente: banda 1 - azul, banda 2 - verde y banda 3 - rojo. Puede encontrar esa información en las propiedades de sus imágenes o en su documentación.
Producirá la nueva capa de tres bandas usando una función ráster.
- En la cinta, en la pestaña Imágenes, en el grupo Análisis, haga clic en el botón Funciones ráster.
- En el panel Funciones ráster, en el cuadro de búsqueda, escriba Extraer bandas. En Administración de datos, haga clic en Extraer bandas.
- Defina los siguientes valores del parámetro Extraer bandas:
- En Ráster, elija Seattle_imagery.jp2.
- Para Combinación, verifique que el valor es 1 2 3, haciendo referencia a las Bandas 1 (rojo), 2 (verde) y 3 (azul).
- En Acción de banda ausente, elija Error.
Acción de banda ausente especifica la acción que se producirá si una de las bandas enumeradas no está disponible. Error significa que la función ráster se interrumpirá y fallará. Está eligiendo esta opción, ya que es fundamental que las tres bandas estén presentes para completar este tutorial satisfactoriamente.
- Haga clic en Crear capa nueva.
Aparece una nueva capa, denominada Extraer Bands_Seattle_imagery.jp2 en el panel Contenido. Las capas creadas por funciones ráster se calculan dinámicamente y no se guardan en disco. En este caso, desea mantener la capa resultante como un archivo TIFF en su equipo. Lo hará con Exportar ráster.
- Haga clic con el botón derecho en Extraer Bands_Seattle_imagery.jp2 y elija Datos y Exportar ráster.
- En el panel Exportar ráster, en Dataset ráster de salida, haga clic en el botón Examinar.
- En la ventana Ubicación de salida, vaya a Carpetas > Detección de edificios de Seattle > Datos de imágenes, en Nombre, escriba Seattle_RGB.tif y haga clic en Guardar.
- En la ventana Ubicación de salida, acepte todos los demás valores predeterminados y haga clic en Exportar.
Nota:
Si la imagen es de 16 bits, este paso Exportar ráster sería un buen momento para convertir la profundidad de 8 bits esperada por el modelo. En Tipo de píxel, elija 8 bits sin signo y active la casilla Escalar valor de píxel. Escalar valor de píxel garantiza que los valores se conviertan realmente a una escala de 8 bits (en lugar de ignorar los valores altos). En Valor NoData, introduzca el valor NoData de su imagen original, por ejemplo 0.
Para encontrar ese valor NoData, en el panel Contenido, haga clic con el botón derecho en la imagen original, elija Propiedades y vaya a Origen > Información de ráster > Valor NoData.
La nueva capa Seattle_RGB.tif aparece en el panel Contenido.
- Cierre el panel Exportar ráster.
Ahora verificará la cantidad de bandas.
- En el panel Contenido, haga clic con el botón derecho en Seattle_RGB.tif y elija Propiedades.
- En la ventana Propiedades de capa, haga clic en Fuente y expanda Información de ráster.
- Encuentre el campo Cantidad de bandas.
El valor del campo es 3, confirmando que ahora la capa tiene tres bandas, justo lo que espera el modelo preentrenado.
- Cierre la ventana Propiedades de capa.
Ahora retirará las capas de imágenes que no necesitará en el resto del flujo de trabajo.
- En el panel Contenido, haga clic con el botón derecho en Extraer Bands_Seattle_imagery.jp2 y elija Eliminar.
- De forma similar, retire Seattle_imagery.jp2.
Guardará su proyecto.
- En la barra de herramientas de acceso rápido, haga clic en el botón Guardar.
Ahora tiene una capa de imágenes de tres bandas, que es lo que espera el modelo preentrenado.
Comprender la necesidad del aprendizaje por transferencia
Ahora debe solucionar la discrepancia de resolución, ya que el modelo espera una resolución mayor de 10-40 cm y las imágenes NAIP se han capturado a una resolución menor de 1 metro. Si fuera a aplicar directamente el modelo preentrenado Extracción de huellas de edificios: EE. UU. a la capa Seattle_RGB.tif, obtendría malos resultados, como puede ver en la siguiente imagen de ejemplo:
En esa imagen, los edificios detectados se muestran en color rosa. Debido a la discrepancia de resolución, el modelo podría detectar los edificios más grandes, aunque tendría problemas para identificar algunos de los más pequeños.
Nota:
Para obtener un ejemplo de flujo de trabajo en el que se usa un modelo preentrenado de manera directa y satisfactoria, consulte el tutorial Detectar objetos con un modelo preentrenado de aprendizaje profundo.
Un método para solucionar este problema consiste en utilizar aprendizaje por transferencia. Aprendizaje por transferencia es una técnica de aprendizaje automático en la que el conocimiento aprendido de una tarea se reutiliza para impulsar el rendimiento en una tarea relacionada. Aquí, la tarea original consistió en detectar edificios en imágenes de 10-40 cm de resolución, y la nueva tarea consiste en detectar edificios en imágenes de resolución de 1 metro.
Nota:
El aprendizaje por transferencia puede utilizarse por otros motivos diferentes de una discrepancia de resolución de las imágenes. Por ejemplo, empezando desde un modelo entrenado para detectar edificios en un país específico, podría utilizar aprendizaje por transferencia para hacer que el modelo aprenda a detectar edificios en otro país.
Una ventaja importante del aprendizaje por transferencia es que requiere una cantidad relativamente pequeña de datos de entrenamiento y tiempo de entrenamiento breve si se compara con lo que sería necesario para entrenar un modelo desde cero.
Nota:
Hay un límite a lo que puede hacer el aprendizaje por transferencia si la discrepancia entre sus imágenes y la entrada esperada es demasiado grande. Por ejemplo, si tuviera imágenes de satélite con una resolución de 30 metros, donde apenas puede ver los edificios pequeños, resulta poco realista pensar en que el modelo podría mejorarse para que resulte satisfactorio en esas imágenes. Mientras más diferente sea la nueva tarea con respecto a la original, menos eficaz será el aprendizaje por transferencia.
Precaución:
El aprendizaje por transferencia no funciona en todos los modelos preentrenados de aprendizaje profundo. Por ejemplo, los modelos que dependen de SAM y DeepForest son incompatibles con la el aprendizaje por transferencia. Puede revisar la descripción del modelo preentrenado en el sitio web ArcGIS Living Atlas para saber si depende de SAM o DeepForest.
En el resto del tutorial, aprenderá cómo realizar el aprendizaje por transferencia para mejorar el modelo preentrenado para que se comporte mejor con sus datos.
Preparar muestras de entrenamiento para aprendizaje por transferencia
Para realizar aprendizaje por transferencia, primero debe producir ejemplos de entrenamiento para mostrar el modelo al que se parece un edificio en sus datos. Si está entrenando un modelo desde cero, necesitaría decenas de miles de muestras de edificios. Afortunadamente, con aprendizaje por transferencia, solo necesita algunos cientos. En esta parte del tutorial, aprenderá a producir las muestras de entrenamiento. Primeramente, creará una clase de entidad vacía en la que almacenar las muestras. A continuación, dibujará polígonos que representan edificios y los agregará a la clase de entidad. Finalmente, exportará la clase de entidad y las imágenes a chips de entrenamiento utilizados para aprendizaje por transferencia.
Crear una clase de entidad
Primeramente, creará una clase de entidad.
- En la cinta, en la pestaña Vista, en el grupo Ventanas, haga clic en Geoprocesamiento.
Se abre el panel Geoprocesamiento.
- En el panel Geoprocesamiento, en el cuadro de búsqueda, escriba Crear clase de entidad. En la lista de resultados, haga clic en la herramienta Crear clase de entidad para abrirla.
- Establezca los visuintes valores de parámetro:
- En Nombre de clase de entidad, escriba Training_examples.
- En Tipo de geometría, verifique que se ha seleccionado Polígono.
- En Sistema de coordenadas, elija Seattle_RGB.tif.
- Acepte el resto de valores predeterminados y haga clic en Ejecutar.
En el panel Contenido, aparece la nueva clase de entidad Training_examples. En estos momentos, está vacío.
Dibujar ejemplos de entrenamiento
Ahora trazará huellas de edificios que se guardarán como entidades de polígono en la capa Training_examples.
- En la cinta, en la pestaña Editar, en el grupo Entidades, haga clic en Crear.
Aparece el panel Crear entidades.
- En el panel Crear entidades, haga clic en Training_examples y posteriormente en el botón Polígono.
La barra de herramientas de construcción aparece en el mapa. De forma predeterminada, se define en el modo Línea, que dibuja líneas rectas.
- En la barra de herramientas de construcción, haga clic en el botón Línea de ángulo recto.
- El modo Línea de ángulo recto restringe todas las líneas para que sean rectas y todos los ángulos para que sean rectos. Esto resulta útil al dibujar huellas de edificios, ya que la mayoría de edificios tienen esquinas de 90 grados. Puede cambiar entre este modo y el modo Línea como sea necesario durante el proceso de dibujo.
- En la cinta, en la pestaña Mapa, en el grupo Navegar, haga clic en Marcadores y seleccione Extensión de etiquetado.
Esta es el área donde empezará a dibujar polígonos para delinear edificios. Este proceso también se denomina etiquetado, ya que está diciendo al modelo dónde están los objetos de interés en la imagen.
Nota:
Al decidir dónde crear los ejemplos de entrenamiento en su imagen, elija un área que tenga edificios típicos para su ubicación geográfica.
- En el mapa, elija un edificio específico y haga clic en una de sus esquinas (o vértices).
- Haga clic en cada una de las esquinas en sentido horario.
- En la última esquina, haga doble clic para completar el polígono.
Nota:
El color de la clase de entidad (en este caso verde claro) se asigna de forma aleatoria y podría ser diferente en su proyecto.
- De forma similar, cree dos o tres polígonos más en la misma área.
Sugerencia:
Si no le gusta un polígono que ha creado, puede eliminarlo. En la cinta, en la pestaña Editar, en el grupo Selección, haga clic en Seleccionar. En el mapa, haga clic en el polígono. En la pestaña Editar, en el grupo Entidades, haga clic en Eliminar.
Guardará las entidades de polígono en la clase de entidad.
- En la barra de herramientas de construcción, haga clic en el botón Finalizar.
- En la cinta, en la pestaña Editar, en el grupo Administrar ediciones, haga clic en Guardar.
- Cierre el panel Crear entidades.
En un proyecto real, debería delinear 200 o 300 edificios más. Sin embargo, por la brevedad de este tutorial, utilizará un conjunto de aproximadamente 200 muestras de entrenamiento que se prepararon para usted.
- En la parte inferior del panel Geoprocesamiento, haga clic en Catálogo para volver a dicho panel.
- En el panel Catálogo, expanda Bases de datos y Output_provided.gdb.
- Haga clic con el botón derecho en Training_examples_larger_set y elija Agregar al mapa actual.
Aparece el conjunto de muestras de entrenamiento.
Observe que se eligió una extensión rectangular y se crearon polígonos para cada edificio en la extensión. Retirará la capa Training_examples, ya que no la volverá a necesitar.
- En el panel Contenido, haga clic con el botón derecho en la capa Training_examples y elija Eliminar.
- Pulse Ctrl+S para guardar el proyecto.
Ahora tiene una capa que contiene más de 200 muestras de entrenamiento.
Agregar un campo de clase
Ahora que ha trazado polígonos de huella de edificio, debe designarlos como pertenecientes a una clase específica. En algunos flujos de trabajo, los objetos etiquetados podrían pertenecer a diferentes clases (o categorías), como por ejemplo huellas de edificios, árboles o vehículos. En este tutorial, solo hay una clase: huellas de edificios. Agregará un campo Clase a la capa Training_examples_larger_set y la rellenará.
- En el panel Contenido, haga clic con el botón derecho en la capa Training_examples_larger_set y elija Tabla de atributos.
Aparece la tabla de atributos para la capa, mostrando información sobre cada polígono.
- En la tabla de atributos Training_examples_larger_set, haga clic en Agregar.
- En la pestaña Campos: Training_examples_larger_set, en la última fila de la tabla, introduzca la siguiente información:
- Para Nombre de campo, escriba Clase.
- Para Tipo de datos, haga clic en Largo y cámbielo a Corto.
El tipo de datos Corto mantiene valores enteros.
- En la cinta, en la pestaña Campos, en el grupo Cambios, haga clic en Guardar.
- Cierre la ventana Campos: Training_examples_larger_set.
Ahora que ha creado el campo Clase, lo rellenará con un valor numérico. Decide arbitrariamente que la clase de huella de edificio se representará con el valor numérico de 1.
- En la tabla de atributos Training_examples_larger_set, haga clic en Calcular.
- En la ventana Calcular campo, defina los siguientes valores de parámetros:
- En Nombre de campo, elija Clase.
- En Clase =, escriba 1.
- Acepte el resto de valores predeterminados y haga clic en Aceptar.
- En la columna Clase, verifique que el valor de 1 se ha asignado a cada entidad de polígono.
Gracias al campo Clase, el modelo conocerá que todos los ejemplos de entrenamiento son del mismo tipo de objeto: huellas de edificios representadas por 1.
- Cierre la tabla de atributos Training_examples_larger_set.
Más información sobre chips de entrenamiento y recortar las imágenes
Un modelo de aprendizaje profundo no puede entrenar a más de un área grande en una sola pasada, solo puede manejar recortes más pequeños de la imagen, conocidos como chips. Un chip está formado por a tesela de imagen y una tesela de etiqueta correspondiente que muestra dónde se ubican los objetos (en este caso, edificios). Estos chips se introducen en el modelo durante el proceso de entrenamiento del aprendizaje por transferencia.
Utilizará las imágenes Seattle_RGB.tif y la capa Training_examples para generar chips de entrenamiento. Un aspecto importante es en evitar la generación de chips que contengan edificios sin etiquetar. Tener dichos chips sería el equivalente a mostrar edificios al modelo, mientras que se afirma que no son edificios en absoluto. Esto sería confuso para el modelo y perjudicaría su rendimiento. Para evitar esto, creará un recorte de las imágenes que está limitado a la extensión donde se encuentran las muestras de entrenamiento.
- En la parte inferior del panel Catálogo, haga clic en Geoprocesamiento.
- En el panel Geoprocesamiento, haga clic en el botón Atrás.
- Busque y abra la herramienta Recortar ráster.
- Defina los siguientes valores del parámetro Recortar ráster:
- En Ráster de entrada, elija Seattle_RGB.tif.
- En Extensión de salida, elija Training_examples_larger_set.
- Para Dataset ráster de salida, haga clic en el botón Examinar. En la ventana Dataset ráster de salida, vaya a Carpetas > Seattle_Building_Detection > Imagery_data, en Nombre, escriba Seattle_RGB_clip.tif y haga clic en Guardar.
- Haga clic en Ejecutar.
En el panel Contenido, aparece la capa Seattle_RGB_clip.tif.
- En el panel Contenido, haga clic en el cuadro junto a Seattle_RGB.tif para desactivar la capa.
En el mapa, ahora solo ve la capa recortada y las muestras de entrenamiento. Todos los edificios que aparecen en las imágenes tienen un polígono de edificio correspondiente.
Generar chips de entrenamiento
Ahora generará los chips de entrenamiento. Primeramente, creará una carpeta en la que almacenar los elementos de datos relacionados con el proceso de aprendizaje por transferencia.
- Haga clic en la pestaña Catálogo para cambiar de panel.
- Su es necesario, expanda Carpetas y Seattle_Building_Detection.
- Haga clic con el botón derecho en Seattle_Building_Detection, señale Nuevo y elija Carpeta.
- Para el nombre Nueva carpeta, escriba Transfer_learning_data y pulse Intro.
- Haga clic en la pestaña Geoprocesamiento para cambiar de panel.
- En el panel Geoprocesamiento, haga clic en el botón Atrás.
- Busque y abra la herramienta Exportar datos de entrenamiento para aprendizaje profundo.
- Defina los siguientes valores de parámetros para la herramienta Exportar datos de entrenamiento para aprendizaje profundo:
- En Ráster de entrada, elija Seattle_RGB_clip.tif.
- En Carpeta de salida, haga clic en el botón Examinar. En la ventana Carpeta de salida, vaya a Carpetas > Seattle_Building_Detection > Transfer_learning_data. En Nombre, escriba Training_chips y haga clic en Aceptar.
- En Clase de entidad de entrada, elija Training_examples_larger_set.
Los chips generados a partir de las imágenes recortadas y ejemplos de entrenamiento se almacenarán en una carpeta denominada Training_chips.
- En Campo de valor de clase, elija Class.
Como lo definió anteriormente, el campo Clase especifica qué objetos pertenecen a qué etiquetas (en este caso, todos los objetos pertenecen a la clase 1, que representa huellas de edificios).
- En Tamaño de tesela X y Tamaño de tesela Y, verifique que el valor es 256.
Estos parámetros deciden el tamaño del chip en las direcciones X e Y (en píxeles). En este caso, el valor predeterminado de 256 es una buena elección.
Nota:
Desea hacer que sus chips de entrenamiento sean lo más similares posible a los chips que se utilizaron para entrenar el modelo original. El modelo original se entrenó en chips de 512 x 512 producidos a partir de datos de 10-40 cm de resolución. Sus imágenes NAIP tienen una resolución de 1 metro. Un chip de 256 x 256 píxeles en esa resolución cubrirá aproximadamente la misma área que un chip de 512 x 512 a una resolución de 40 cm. Por lo tanto, 256 x 256 es un buen tamaño de chip.
Una forma de conocer el tamaño de chip que se utilizó originalmente en el modelo preentrenado es mirar dentro del paquete dlpk. En Microsoft File Explorer, haga una copia del archivo usa_building_footprints.dlpk en una carpeta separada y cambie su extensión de .dlpk a .zip. Haga clic con el botón derecho en el archivo .zip y extráigalo. Entre los archivos extraídos, encuentre usa_building_footprints.emd y cambie su extensión a .txt. Abra usa_building_footprints.txt en un editor de texto y busque las líneas "ImageHeight" y "ImageWidth".
- En Paso X y Paso Y, escriba 64.
Este parámetro controla la distancia a la que se desplaza en la dirección X e Y (en píxeles) al crear los siguientes chips de imagen. Este valor se decide en función de cuántos datos de entrenamiento dispone. Puede maximizar el número de chips generados definiendo este valor para que sea menor. Puede experimentar con este valor, aunque para este tutorial, se considera que el valor de 64 funciona bien.
- En Formato de metadatos, elija Máscaras RCNN.
Diferentes tipos de modelo de aprendizaje profundo requieren diferentes formatos de metadatos para los chips. Anteriormente en el flujo de trabajo, detectó que el modelo preentrenado se basó en la arquitectura MaskRCNN. Aquí debe elegir el valor correspondiente para ese modelo.
Sugerencia:
Para obtener más información sobre cualquiera de los parámetros de la herramienta, señale el parámetro y haga clic en el botón de información que hay junto a dicho parámetro.
- Acepte el resto de valores predeterminados, y haga clic en Ejecutar.
Tras unos momentos, se completa el proceso.
Examinar chips de entrenamiento
Examinará algunos de los chips generados.
- En el panel Catálogo, expanda Carpetas, Seattle_Building_Detection, Transfer_learning_data y Training_chips.
- Las teselas de imagen están en la carpeta imágenes y las teselas de etiqueta en la carpeta etiquetas.
- Expanda la carpeta imágenes, haga clic con el botón derecho en la primera imagen, 000000000000.tif, y elija Agregar al mapa actual. Si se le pide calcular estadísticas, haga clic en No.
- En el panel Contenido, desactive Training_examples_larger_set y Seattle_RGB_clip.tif para ver mejor la tesela.
- En el panel Catálogo, contraiga la carpeta imágenes, expanda las carpetas etiquetas y 1 y agregue la primera tesela de etiqueta, 000000000000.tif, al mapa. Si se le pide calcular estadísticas, haga clic en No.
Nota:
Pares de imágenes y etiquetas pueden reconocerse por sus nombres idénticos.
- En el panel Contenido, haga clic en la activación o desactivación de la tesela de etiqueta para revelar la tesela de imagen que hay debajo.
- Haga clic en algunos de los píxeles de la tesela de etiqueta para ver sus valores en el elemento emergente de información.
Nota:
En la tesela de etiqueta, los píxeles que no representan un edificio tienen el valor 0. Todos los píxeles que representan un edificio tienen un valor mayor que 0. Los valores específicos proceden de los Id. de objetos de los polígonos de edificio originales, como por ejemplo 28 en la imagen de ejemplo anterior.
- Si lo desea, agregue más pares de tesela de imagen y etiqueta al mapa y examínelos.
- Si se hace, retire todas las teselas del panel Contenido y vuelva a activar las capas Training_examples_larger_set y Seattle_RGB.tif.
- En el panel Catálogo, contraiga la carpeta Training_chips.
- Pulse Ctrl+S para guardar el proyecto.
Generó chips de entrenamiento y ahora está preparado para empezar el proceso de aprendizaje por transferencia.
Realizar aprendizaje por transferencia y extraer edificios
Ahora realizará aprendizaje por transferencia. Utilizará los chips que generó para entrenar aún más al modelo preentrenado usa_building_footprints.dlpk. A continuación, aplicará el modelo mejorado a sus imágenes de Seattle y observará que ahora se comporta mucho mejor.
Ajustar el modelo
Primeramente, utilizará la herramienta Entrenar modelo de aprendizaje profundo para realizar la mejora del modelo.
- Cambie al panel Geoprocesamiento y haga clic en el botón Atrás.
- En el panel Geoprocesamiento, busque y abra la herramienta Entrenar un modelo de aprendizaje profundo.
- Defina los siguientes valores de parámetros para la herramienta Entrenar modelo de aprendizaje profundo:
- Para Datos de entrenamiento de entrada, haga clic en el botón Examinar. Vaya a Carpetas > Seattle_Building_Detection > Transfer_learning_data. Seleccione Training_chips y haga clic en Aceptar.
- En Modelo de salida, haga clic en el botón Examinar. Vaya a Carpetas > Seattle_Building_Detection > Imagery_data > Transfer_learning_data. Escriba Seattle_1m_Building_Footprints_model y haga clic en Aceptar.
Seattle_1m_Building_Footprints_model será el nombre del nuevo modelo mejorado resultante del proceso de aprendizaje por transferencia.
Sugerencia:
Es más fácil acordarse de qué modelo se entrenó con qué datos si guarda cada modelo y sus chips de entrenamiento correspondientes en la misma carpeta.
- Expanda la sección Avanzado y defina los siguientes valores de parámetros:
- En Modelo preentrenado, haga clic en el botón Examinar. Vaya a la carpeta donde guardó el modelo preentrenado usa_building_footprints.dlpk, selecciónelo y haga clic en Aceptar.
- Verifique que esté activada la casilla Inmovilizar modelo.
La opción Inmovilizar modelo asegura que solo la capa final del modelo se vea afectada por los nuevos datos de entrenamiento, mientras que sus capas básicas se mantienen sin cambios. Este ajuste se elige en muchos casos de aprendizaje por transferencia, ya que evita el riesgo de que el modelo desaprenda sus conocimientos básicos.
Nota:
Si ahora ve un indicador de error junto a Datos de entrenamiento de entrada, no tiene instalada la versión correcta de las Bibliotecas de aprendizaje profundo. Pulse Ctrl+S para guardar su proyecto, cierre ArcGIS ProArcGIS Pro y siga las instrucciones para instalar el marco de aprendizaje profundo para ArcGIS. Si ha instalado antes las Bibliotecas de aprendizaje profundo, siga las instrucciones enumeradas en Actualizar desde una versión anterior. Cuando se complete la instalación, puede volver a abrir su proyecto de ArcGIS Pro y continuar con el tutorial.
- Expanda la sección Parámetros de modelo y verifique que el Tamaño de lote está establecido en 4.
Sugerencia:
Para obtener más información sobre cualquiera de los parámetros de la herramienta, haga clic en el botón de información que hay junto a dichos parámetros.
- En el panel Geoprocesamiento, haga clic en la pestaña Entornos. En Tipo de procesador, elija GPU.
Nota:
Este tutorial asume que su equipo tiene capacidades de GPU. Si no tiene una GPU, aún puede realizar el proceso con su CPU, aunque los datos tardarán más tiempo en procesarse. En el último caso, elija la opción CPU.
- Acepte el resto de valores predeterminados, y haga clic en Ejecutar.
Este proceso podría tardar 10 minutos o más en ejecutarse.
Sugerencia:
Si recibe un error de memoria, puede deberse a que su equipo no tiene suficiente memoria para procesar cuatro teselas a la vez. Intente reducir el valor de Tamaño de lote de 4 a 2 o 1. La reducción de este valor no afectará a la calidad del modelo, solo a la eficiencia del proceso de entrenamiento del modelo.
Ahora tiene un modelo mejorado, Seattle_1m_Building_Footprints, que se ha mejorado para aumentar el rendimiento con sus datos.
Ejecutar inferencia
Ahora que ha completado el aprendizaje por transferencia, utilizará su modelo mejorado para ejecutar inferencia en la capa de imágenes Seattle_RGB.tif y detectar los edificios que contiene.
- En el panel Geoprocesamiento, haga clic en el botón Atrás.
- Busque y abra la herramienta Detectar objetos con aprendizaje profundo.
- Defina los siguientes valores de parámetros para la herramienta Detectar objetos con aprendizaje profundo:
- En Ráster de entrada, elija Seattle_RGB.tif.
- Para Objetos de salida detectados, escriba Seattle_buildings.
- En Definición de modelo, haga clic en el botón Examinar. Vaya a su carpeta Seattle_Building_Detection, expanda Transfer_learning_data y Seattle_1m_Building_Footprints_model, seleccione Seattle_1m_Building_Footprints_model.dlpk y haga clic en Aceptar.
Cuando se carga la definición de modelo, los argumentos del modelo se rellenan automáticamente.
- En relleno, verifique que el valor es 64.
El relleno designa un área de borde en cada chip de imagen que se ignorará durante la detección. Si un fragmento de un edificio aparece en el borde de un chip de imagen, el relleno hará que no se tenga en cuenta para la detección. Un valor de 64 indica que el relleno tendrá 64 píxeles de ancho en cada lado del chip de imagen.
Nota:
El modelo ajustará el paso para correlacionarlo con el valor del relleno. A medida que el modelo avanza hacia las áreas vecinas, un edificio que apareció como un fragmento en el borde de un chip de imagen anterior pronto aparecerá en su totalidad en el centro de uno de los siguientes chips de imagen, donde se detectará correctamente. Obtenga más información sobre el relleno (y otros parámetros de inferencia) en el artículo Aprendizaje profundo con Consejos y sugerencias: Parte 2, en la sección Comprender parámetros de inferencia.
- En batch_size, utilice el mismo valor que utilizó para el proceso de entrenamiento (4 como máximo).
Esto asegurará que la herramienta pueda ejecutarse dentro de la cantidad de memoria que tiene disponible en su equipo.
- En umbral, verifique que el valor es 0,9.
Este es un valor límite entre 0 y 1. Expresa cómo debe ser de fiable el modelo antes de que declare que un objeto es un edificio. El valor 0,9 indica que el modelo debe tener un 90 por ciento de confianza.
- En tile_size, verifique que el valor es 256.
Esto indica el tamaño de los chips de imágenes que el modelo tomará para ejecutar inferencia. Este valor debe ser el mismo que el tamaño de los chips que se utilizaron para entrenar el modelo.
- En Supresión no máxima, active la casilla.
Cuando hay duplicados de huellas de edificios superpuestos, la opción Supresión no máxima asegura que solo se mantenga la entidad de polígono de edificio con la mayor confianza y que se eliminen las demás.
- En el panel Geoprocesamiento, haga clic en la pestaña Entornos.
- En Tipo de procesador, elija GPU.
En este momento, podría ejecutar la herramienta tal cual: detectaría edificios en toda la imagen Seattle_RGB.tif, lo que podría tardar de 10 minutos a 1 hora en función de las especificaciones de su equipo. Debido a la brevedad de este tutorial, solo detectará edificios en un pequeño subconjunto de la entrada de imagen.
- En la cinta, en la pestaña Mapa, en el grupo Navegar, haga clic en Marcadores y elija Extensión de inferencia.
El mapa se acerca a un área más pequeña de Seattle.
- En el panel Geoprocesamiento, en la pestaña Entornos, en Extensión de procesamiento, en Extensión, elija Extensión de visualización actual.
- Haga clic en Ejecutar.
Después de algunos minutos, el proceso se completa y aparece la capa de salida Seattle_buildings en el panel Contenido y en el mapa. Esta vez, puede ver que prácticamente se detectaron todos los edificios.
Detectó satisfactoriamente edificios en un área de Seattle usando un modelo preentrenado mejorado a través de aprendizaje por transferencia.
Comparar los resultados
Ahora comparará dos capas de huellas de edificios obtenidas de la ejecución del modelo preentrenado listo para usar comparado con el modelo mejorado con aprendizaje por transferencia. En ambos casos, muestran los resultados para toda la extensión de sus imágenes. Aunque podría generar ambas capas usted mismo usando la técnica que aprendió en la sección anterior, para ahorrar tiempo, utilizará capas que se prepararon para usted. Primeramente, abrirá un mapa que contiene estas capas.
- En el panel Catálogo, expanda Mapas. Haga clic con el botón derecho en Resultados de extensión completa y elija Abrir.
Aparece el mapa. Contiene dos clases de entidad de polígono:
- Seattle_buildings_off_the_shelf
- Seattle_buildings_with_transfer_learning
Usará la herramienta Swipe para comparar las dos capas.
- En el panel Contenido, haga clic en Seattle_buildings_off_the_shelf para seleccionarla.
- En la cinta, en la pestaña Capa de entidades, en el grupo Comparar, haga clic en Swipe.
- En el mapa, utilice el control deslizante para arrastrar repetidamente de arriba a abajo o de un lado a otro para retirar la capa superior y ver la que hay debajo.
- Acerque y aleje y aplique un desplazamiento para examinar diferentes áreas y evaluar visualmente la diferencia en la calidad de los resultados.
Sugerencia:
En modo swipe, puede acercar y alejar con la rueda del ratón, y desplazar pulsando C en el teclado y arrastrado con el ratón.
El modelo mejorado se comporta mucho mejor en la identificación de las huellas de edificios más pequeños en sus imágenes, si se compara con el modelo listo para usar. Ahora utilizará la herramienta Swipe para comparar los resultados en la capa de aprendizaje por transferencia con los edificios que puede observar visualmente en las imágenes.
- En el panel Contenido, desactive la capa Seattle_buildings_off_the_shelf y seleccione la capa Seattle_buildings_with_transfer_learning.
- Use la herramienta Swipe para comparar las dos capas.
Podría detectar que la capa resultante del modelo mejorado aún no es perfecta y faltan algunos edificios aquí y allí. La mejora de un modelo con aprendizaje por transferencia tiende a ser un proceso iterativo. Podría continuar mejorando el rendimiento del modelo recopilando más ejemplos de entrenamiento y realizando otra ronda de entrenamiento de aprendizaje por transferencia. Para disponer de una vista general rápida, los pasos serían los siguientes:
- Primeramente, observe el tipo de edificios que omitió el modelo.
- Recopile nuevos polígonos de ejemplo preferiblemente para este tipo de edificios y genere nuevos chips de entrenamiento, guardándolos en una nueva carpeta. Debe seguir las mismas directrices que anteriormente, recortando las imágenes para asegurarse de que no se incluyan edificios no etiquetados en los chips.
- Ejecute una nueva sesión de entrenamiento, empezando con el modelo preentrenado listo para usar y alimentándolo con todos los chips hasta el momento (es decir, en el parámetro Datos de entrenamiento de entrada , enumerará todas sus carpetas de chips). Esta es una práctica recomendada para asegurarse de que el modelo trate todos los chips de entrenamiento por igual.
- Cuando haya terminado de explorar las imágenes, en la cinta, en la pestaña Mapa, en el grupo Navegar, haga clic en el botón Explorar para salir del modo de barrido.
- Pulse Ctrl+S para guardar el proyecto.
En este tutorial, utilizó aprendizaje profundo para extraer huellas de edificios de imágenes aéreas en ArcGIS Pro. Eligió un modelo preentrenado de ArcGIS Living Atlas y conoció la importancia de hacer corresponder sus datos de entrada con las expectativas del modelo. Generó una nueva capa de imágenes con la cantidad de bandas esperada. A continuación, aplicó aprendizaje por transferencia para solucionar una discrepancia de resolución y mejoró el rendimiento del modelo en sus imágenes: proporcionó un pequeño número de nuevas muestras de entrenamiento y entrenó aún más el modelo. A continuación, aplicó el modelo mejorado a un barrio de Seattle y obtuvo mejores resultados.