Modelos de aprendizaje profundo en ArcGIS

Disponible con licencia de Image Analyst.

Un modelo de aprendizaje profundo es un modelo informático que se entrena utilizando muestras de entrenamiento y redes neuronales de aprendizaje profundo para realizar diversas tareas, como detección de objetos, clasificación de píxeles, detección de cambios y clasificación de objetos.

En ArcGIS puede agrupar modelos de aprendizaje profundo en tres categorías:

  • Modelos preentrenados de ArcGIS
  • Modelos entrenados con ArcGIS
  • Modelos personalizados

Modelos preentrenados de ArcGIS

Los modelos preentrenados de ArcGIS automatizan la digitalización y la extracción de entidades geográficas de imágenes y datasets de nube de puntos.

Extraer manualmente entidades de datos sin procesar, como digitalizar huellas o generar mapas de cobertura de suelo, requiere mucho tiempo. El aprendizaje profundo automatiza el proceso y minimiza la interacción manual necesaria para completar estas tareas. Sin embargo, entrenar un modelo de aprendizaje profundo puede ser complicado, ya que se requieren grandes cantidades de datos, recursos informáticos y conocimientos sobre aprendizaje profundo.

Con los modelos preentrenados de ArcGIS, no es necesario invertir tiempo y esfuerzo para entrenar un modelo de aprendizaje profundo. Los modelos de ArcGIS se han entrenado con datos de diversas geografías. A medida que hay nuevas imágenes disponibles, puede extraer entidades y generar capas de datasets SIG para la representación cartográfica, la visualización y el análisis. Los modelos preentrenados están disponibles en ArcGIS Living Atlas of the World si dispone de una cuenta de ArcGIS.

Modelos entrenados con ArcGIS

Es posible, por diferentes motivos, deba entrenar sus propios modelos. Un ejemplo de ello es cuando el modelo preentrenado de ArcGIS disponible está entrenado para una región geográfica distinta a su área de interés. En tales situaciones, puede usar la herramienta Entrenar modelo de aprendizaje profundo. El entrenamiento de su propio modelo requiere realizar pasos adicionales, pero generalmente brinda los mejores resultados para un área de interés y un caso de uso específicos. La herramienta entrena un modelo de aprendizaje profundo utilizando la salida de la herramienta Exportar datos de entrenamiento para aprendizaje profundo. Ambas herramientas son compatibles con los formatos de metadatos de aprendizaje profundo y las arquitecturas de modelos más populares.

Para obtener más información sobre los diversos formatos de metadatos, consulte la documentación de la herramienta Exportar datos de entrenamiento para aprendizaje profundo. Para obtener más información sobre los distintos tipos de modelos, consulte la documentación de la herramienta Entrenar un modelo de aprendizaje profundo.

Modelos personalizados

La inferencia del modelo de aprendizaje profundo en ArcGIS se implementa sobre el marco de funciones ráster de Python. En ArcGIS se pueden usar muchos modelos de aprendizaje profundo entrenados fuera de ArcGIS para la inferencia; sin embargo, esto requiere que se personalice la función de inferencia y que se instalen los paquetes correctos capaces de admitir el modelo. El repositorio de aprendizaje profundo de ráster brinda orientación sobre las funciones ráster de aprendizaje profundo de Python en ArcGIS, además de cómo crear funciones ráster personalizadas de Python para integrar modelos de aprendizaje profundo adicionales en ArcGIS. Estos modelos se consideran modelos personalizados.

Contenidos del modelo de aprendizaje profundo

Un modelo típico entrenado en ArcGIS contiene la carpeta y los archivos que se muestran en la siguiente imagen y se enumeran a continuación:

Estructura de carpetas del modelo

  • loss_graph.png: muestra la pérdida de validación y entrenamiento de los lotes procesados. Esto se utiliza en el archivo model_metrics.html.
  • show_results.png: muestra resultados de muestra para el modelo. Esto se utiliza en el archivo model_metrics.html.
  • training_validation_loss.json: muestra la pérdida de validación y entrenamiento por época.
  • model_metrics.html: contiene información sobre el modelo entrenado, como la tasa de aprendizaje, la pérdida de validación y entrenamiento, y los resultados de muestra.
  • model_name.pth: contiene los pesos del modelo.

Dependiendo de la arquitectura del modelo, la carpeta del modelo puede contener archivos de soporte adicionales como ModelConfiguration.py.

Archivo de definición de modelo de Esri

El archivo de definición del modelo (.emd) de Esri es un archivo en formato JSON que describe el modelo de aprendizaje profundo entrenado. Contiene parámetros de definición del modelo que son necesarios para ejecutar las herramientas de inferencia, y es necesario que el científico de datos que entrenó el modelo lo modifique. Existen parámetros obligatorios y opcionales en el archivo, tal y como se describe en la siguiente tabla.

Una vez completado y verificado el archivo .emd, se puede usar para inferir varias veces, siempre y cuando las imágenes de entrada sean del mismo sensor que la entrada de modelo original y las clases u objetos que se detectan son iguales. Por ejemplo, un archivo .emd que se definió con un modelo para detectar plataformas de pozos petrolíferos mediante imágenes de satélite de Sentinel-2 se puede utilizar para detectar plataformas de pozos petrolíferos en varias áreas de interés y varias fechas con imágenes de Sentinel-2.

Algunos parámetros se utilizan en todas las herramientas de inferencia y se enumeran en la tabla siguiente. Algunos parámetros solo se utilizan con herramientas específicas, como los parámetros CropSizeFixed y BlackenAroundFeature, que solo los utiliza la herramienta Clasificar objetos con aprendizaje profundo.

Parámetro de archivo de definición de modeloDescripción

Marco

El nombre del marco de aprendizaje profundo utilizado para entrenar un modelo.

Entre los marcos de aprendizaje profundo se incluyen los siguientes:

  • TensorFlow
  • Keras
  • PyTorch
Consulte la lista de marcos admitidos.

Si entrena el modelo con un marco de aprendizaje profundo que no aparece en los marcos admitidos, se necesita una función de inferencia personalizada (un módulo de Python) además del modelo entrenado; también debe definir InferenceFunction según la ruta del módulo de Python.

ModelConfiguration

El nombre de la configuración del modelo.

La configuración del modelo define las entradas y salidas del modelo, la lógica de inferencia y las suposiciones sobre las entradas y salidas del modelo. Los flujos de trabajo de aprendizaje profundo de código abierto existentes definen la configuración estándar de entrada y salida y la lógica de inferencia. ArcGIS admite este conjunto de configuraciones predefinidas:

  • TensorFlow
    • ObjectDetectionAPI
    • DeepLab
  • Keras
    • MaskRCNN

Si usó una de las configuraciones predefinidas, escriba el nombre de la configuración en el archivo .emd. Si entrenó el modelo de aprendizaje profundo con una configuración personalizada, debe describir por completo las entradas y salidas en el archivo .emd o en el archivo de Python personalizado.

ModelType

El tipo de modelo. Las opciones son las siguientes:

  • ImageClassification: clasificar píxeles.
  • ObjectDetection: detectar objetos o entidades.
  • ObjectClassification: clasificar objetos y entidades.

ModelFile

La ruta a un archivo de modelo de aprendizaje profundo entrenado. El formato de archivo depende del marco del modelo. Por ejemplo, en TensorFlow, el archivo de modelo es un archivo .pb.

Descripción

Información sobre el modelo. La información del modelo puede incluir cualquier cosa para describir el modelo entrenado. Entre los ejemplos se incluyen el número y el nombre del modelo, la hora a la que se creó el modelo, la precisión de rendimiento, etc.

InferenceFunction

(Opcional)

La ruta de la función de inferencia.

Una función de inferencia comprende el archivo de datos del modelo entrenado y proporciona la lógica de inferencia. Las funciones de inferencia siguientes son compatibles con las herramientas de geoprocesamiento de aprendizaje profundo de ArcGIS Pro:

  • Detectar objetos para TensorFlow
  • Clasificar píxeles para TensorFlow
  • Detectar objetos para Keras
  • Detectar objetos para PyTorch
  • Clasificar objetos para PyTorch
Si usó una de las funciones de inferencia anteriores, no hay necesidad de especificarlo en el archivo .emd. Si entrena el modelo con una configuración de modelo de aprendizaje profundo que todavía no es compatible, o si requiere una lógica de inferencia especial, se necesita una función de inferencia personalizada (un módulo de Python) además del modelo entrenado. En este caso, defina InferenceFunction con la ruta del módulo de Python. Es posible ubicar un archivo de módulo de Python de inferencia en cualquier lugar al que pueda acceder ArcGIS Pro.

SensorName

(Opcional)

El nombre del sensor utilizado para capturar las imágenes a partir de las que se generaron las muestras de entrenamiento.

RasterCount

(Opcional)

El número de rásteres utilizados para generar las muestras de entrenamiento.

BandList

(Opcional)

La lista de bandas utilizadas en las imágenes de origen.

ImageHeight

(Opcional)

El número de filas de la imagen que se está clasificando o procesando.

ImageWidth

(Opcional)

El número de columnas de la imagen que se está clasificando o procesando.

ExtractBands

(Opcional)

Los índices o nombres de banda que se extraerán de las imágenes de entrada.

Clases

(Opcional)

Información adicional sobre los objetos o categorías de las clases de salida.

DataRange

(Opcional)

El rango de valores de datos si se realizó el escalado o la normalización durante el procesamiento previo.

ModelPadding

(Opcional)

La cantidad de relleno que se debe agregar a las imágenes de entrada para las inferencias.

BatchSize

(Opcional)

El número de muestras de entrenamiento que se van a utilizar en cada iteración del modelo.

PerProcessGPUMemoryFraction

(Opcional)

La fracción de memoria de GPU que se desea asignar a cada iteración del modelo. El valor predeterminado es 0,95 o 95 por ciento.

MetaDataMode

(Opcional)

El formato de las etiquetas de metadatos utilizadas para los chips de imagen.

ImageSpaceUsed

(Opcional)

El tipo de sistema de referencia utilizado para entrenar el modelo. Las opciones son las siguientes:

  • MAP_SPACE
  • PIXEL_SPACE

WellKnownBandNames

(Opcional)

Los nombres de cada banda de entrada, en orden de índice de banda. Se puede hacer referencia a las bandas mediante estos nombres en otras herramientas.

AllTileStats

Las estadísticas de cada banda en los datos de entrenamiento.

A continuación, se muestra un ejemplo de un archivo de definición de modelo que usa una configuración de modelo estándar:

{
    "Framework": "TensorFlow",
    "ModelConfiguration": "ObjectDetectionAPI",
    "ModelFile":"C:\\ModelFolder\\ObjectDetection\\tree_detection.pb",
    "ModelType":"ObjectionDetection",
    "ImageHeight":850,
    "ImageWidth":850,
    "ExtractBands":[0,1,2],
    "Classes" : [
      {
        "Value": 0,
        "Name": "Tree",
        "Color": [0, 255, 0]
      }
    ]
}

A continuación encontrará un ejemplo de un archivo de definición de modelo con parámetros opcionales adicionales en la configuración:

{
    "Framework": "PyTorch",
    "ModelConfiguration": "FasterRCNN",
    "ModelFile":"C:\\ModelFolder\\ObjectDetection\\river_detection.pb",
    "ModelType":"ObjectionDetection",
				"Description":"This is a river detection model for  imagery",
    "ImageHeight":448,
    "ImageWidth":448,
    "ExtractBands":[0,1,2,3],
				"DataRange":[0.1, 1.0],
				"ModelPadding":64,
				"BatchSize":8,
				"PerProcessGPUMemoryFraction":0.8,
				"MetaDataMode" : "PASCAL_VOC_rectangles",
				"ImageSpaceUsed" : "MAP_SPACE",
    "Classes" : [
      {
        "Value": 1,
        "Name": "River",
        "Color": [0, 255, 0]
      }
    ],
				"InputRastersProps" : {
						"RasterCount" : 1,
						"SensorName" : "Landsat 8",
						"BandNames" : [
								"Red",
								"Green",
								"Blue",
								"NearInfrared"
						]
				},
				"AllTilesStats" : [
      {
      		"BandName" : "Red",
      		"Min" : 1,
      		"Max" : 60419,
      		"Mean" : 7669.720049855654,
      		"StdDev" : 1512.7546387966217
      },
      {
      		"BandName" : "Green",
      		"Min" : 1,
      		"Max" : 50452,
      		"Mean" : 8771.2498195125681,
      		"StdDev" : 1429.1063589515179
      },
      {
      		"BandName" : "Blue",
      		"Min" : 1,
      		"Max" : 47305,
      		"Mean" : 9306.0475897744163,
      		"StdDev" : 1429.380049936676
      },
      {
      		"BandName" : "NearInfrared",
      		"Min" : 1,
      		"Max" : 60185,
      		"Mean" : 17881.499184561973,
      		"StdDev" : 5550.4055277121679
      }
    ],
}

Paquete de modelo de aprendizaje profundo

Un paquete de modelo de aprendizaje profundo (.dlpk) contiene los archivos y datos necesarios para ejecutar herramientas de inferencia de aprendizaje profundo para la detección de objetos o la clasificación de imágenes. El paquete se puede cargar en su portal como un elemento DLPK y utilizarse como entrada para las herramientas de análisis de ráster de aprendizaje profundo.

Los paquetes de modelos de aprendizaje profundo deben contener un archivo de definición de modelo de Esri (.emd) y un archivo de modelo entrenado. La extensión de archivo del modelo entrenado depende del marco que se usó para entrenar al modelo. Por ejemplo, si entrenó su modelo mediante TensorFlow, el archivo del modelo es un archivo .pb, mientras que un modelo entrenado con Keras genera un archivo .h5. En función del marco del modelo y de las opciones que haya usado para entrenar el modelo, es posible que necesite incluir una función ráster de Python (.py) o archivos adicionales. Puede incluir varios archivos de modelo entrenados en un mismo paquete de modelo de aprendizaje profundo.

La mayoría de los paquetes se pueden abrir en cualquier versión de ArcGIS Pro. De forma predeterminada, el contenido de un paquete se almacena en la carpeta <User Documents>\ArcGIS\Packages. Puede cambiar esta ubicación en las Opciones de descarga y uso compartido. Si la versión de ArcGIS Pro utilizada para abrir un paquete no es compatible con la funcionalidad de este, la funcionalidad no estará disponible.

Para ver o editar las propiedades de un paquete .dlpk o para agregar o eliminar archivos de un paquete .dlpk, haga clic con el botón derecho en el paquete .dlpk del panel Catálogo y haga clic en Propiedades.

Abra un paquete de aprendizaje profundo en el panel Catálogo.

Las propiedades incluyen esta información:

  • Entrada: el archivo .emd, archivo de modelo entrenado y cualquier archivo adicional que pueda ser necesario para ejecutar las herramientas de inferencia.
  • Marco: el marco de aprendizaje profundo utilizado para entrenar el modelo.
  • ModelConfiguration: el tipo de entrenamiento de modelo realizado (detección de objetos, clasificación de píxeles o clasificación de entidades).
  • Descripción: una descripción del modelo. Es opcional y editable.
  • Resumen: un breve resumen del modelo. Es opcional y editable.
  • Etiquetas: cualquier etiqueta utilizada para identificar el paquete. Resulta útil para elementos del paquete .dlpk almacenados en su portal.

Propiedades del paquete de aprendizaje profundo

Cualquier propiedad que se edite en la ventana Propiedades se actualiza al hacer clic en Aceptar. Si se accede al elemento del paquete .dlpk desde su portal en el panel Catálogo, el elemento del portal se actualiza.

Para obtener más información sobre cómo crear un paquete .dlpk, consulte Compartir un paquete de modelo de aprendizaje profundo.

Temas relacionados