En este artículo continuo con las aplicaciones del servicio Sentinel-2 Views. En este caso voy un paso más allá para explicar cómo detectar objetos con técnicas de Deep Learning usando imágenes Sentinel-2 en ArcGIS Pro.
En primer lugar, me gustaría aclarar algunos conceptos relacionados con la Inteligencia Artificial:
Las técnicas de Deep Learning pueden impulsar el Machine Learning, que en última instancia puede permitir el desarrollo de la Inteligencia Artificial.
El flujo de trabajo para trabajar con Deep Learning en ArcGIS comienza con las imágenes y los datos etiquetados. Esta es la entrada para los generar los datos de entrenamiento. Posteriormente, el modelo se define con las librerías de detección de objetos (como Tensorflow, Keras, CNTK…) y con los formatos de metadatos específicos en función de las necesidades (KITTI Labels, PACAL Visual Objects Classes…). Finalmente, las herramientas de Inferencia relacionan todos los datos y genera una capa con los objetos detectados.
Esto se resume con los siguientes 4 pasos del diagrama:
Todo esto se enmarca con el resto de las herramientas de la plataforma ArcGIS, desde la preparación de las imágenes en Mosaic Datasets hasta el análisis posterior después de los resultados de la inferencia y la posterior monitorización con herramientas de movilidad y de campo.
Para aquellos que hayáis seguido la serie de artículos que he publicado en los últimos meses, ya estaréis familiarizados con el flujo de trabajo para añadir el servicio de imágenes Sentinel-2 Views de Esri y como poder seleccionar imágenes concretas por determinados atributos. Para los que no lo hayáis visto o los que queráis refrescar, aquí tenéis un enlace al post donde lo explico.
La última versión de ArcGIS Pro y la extensión Image Analyst permite instalar librería de Deep Learning para ejecutar las herramientas del flujo de clasificación o detección de objetos con técnicas de Deep Learning.
A continuación, os adjunto los enlaces para instalar:
Todas las tareas de Deep Learning dependen de conjuntos de datos entrada, seleccionadas por nosotros mismos y basadas en nuestros conocimientos para entrenar a la red neuronal a la hora de identificar objetos.
Los objetos etiquetados serán utilizados por la red neuronal para entrenar un modelo que pueda ser utilizado para realizar inferencias sobre los datos.
El asistente Label Objects for Deep Learning se encuentra en el menú desplegable Classification Tools, de la pestaña Imagery. El panel está dividido en dos partes. La parte superior del panel se utiliza para gestionar las clases y la parte inferior del panel se utiliza para gestionar la recogida de las muestras y para exportar los datos de muestra para entrenar el modelo de Deep Learning.
Este proceso se puede llevar a cabo de forma alternativa con la herramienta Export Training Data for Deep Learning.
En este punto es importante tener en cuenta el formato de las etiquetas de metadatos de salida. Existen cinco opciones para las etiquetas de metadatos de salida de datos de entrenamiento:
Dependiendo de los objetos que se quieran identificar, así como de las muestras de entrada y las librerías empleados, será necesario seleccionar el formato de metadatos más adecuado.
Los metadatos de salida son un archivo .txt o un archivo .xml que contiene los datos de muestra de entrenamiento incluidos en el rectángulo mínimo de delimitación.
El siguiente paso consiste en entrenar el modelo de detección de objetos basado en las muestras de entrenamiento identificadas, capturadas y exportadas anteriormente.
En este punto es importante tener en cuenta el tipo de modelo que se desea entrenar. Existen seis tipos de modelos disponibles en los parámetros del modelo:
Los datos de salida se almacenan con una estructura de carpetas que contiene las imágenes de muestra, las etiquetas y el modelo teniendo en cuenta todos los parámetros que se pueden configurar a la hora de ejecutar la herramienta:
En este último paso ejecutamos la herramienta de inferencia Detect Objects Using Deep Learning, basándonos en el modelo que hemos preparado en el paso anterior y aplicándolo sobre una imagen concreta para identificar los objetos encontrados.
El uso de esta herramienta conlleva la ejecución de las librerías adecuadas de Deep Learning basadas en el framework del API de Python así como las funciones ráster específicas.
En este punto, cabe destacar el parámetro relacionado con los argumentos del modelo de detección, que se definen en la clase de función ráster de Python. Aquí es donde enumera los argumentos y parámetros de Deep Learning adicionales para experimentar y refinar los resultados, como un umbral de confianza para ajustar la sensibilidad.
Esri proporciona ejemplos de casos de uso de esta herramienta en la página de Esri Python raster function GitHub. También puedes escribir módulos Python personalizados siguiendo los ejemplos e instrucciones del repositorio GitHub:
Una vez obtenidos los resultados, se puede refinar el modelo incluyendo más muestras de los objetos que se desean detectar, eliminando duplicados (Non Maximum Supression) u optimizando el modelo mediante el módulo arcgis.learn (p.ej.: Object Detection Workflow) y el uso de ArcGIS Notebooks.
Artículo escrito por Antonio San José Albacete