Clasificar píxeles con aprendizaje profundo (Image Analyst)

Disponible con licencia de Image Analyst.

Resumen

Ejecuta un modelo de aprendizaje profundo entrenado en un ráster de entrada para generar un ráster clasificado, donde cada píxel válido tiene una etiqueta de clase asignada.

Esta herramienta requiere un archivo de definición de modelo que contenga información del modelo entrenado. El modelo puede entrenarse usando la herramienta Entrenar un modelo de aprendizaje profundo o mediante software de entrenamiento de terceros como, por ejemplo, TensorFlow, PyTorch o Keras. El archivo de definición de modelo puede ser un archivo JSON de definición de modelo de Esri (.emd) o un paquete de modelo de aprendizaje profundo, y debe contener la ruta a la función ráster de Python que se llamará para procesar cada objeto y la ruta al archivo de modelo de aprendizaje profundo binario entrenado.

Uso

  • Debe instalar la API de Python de marco de aprendizaje profundo adecuada (como TensorFlow o PyTorch) en el entorno de Python de ArcGIS AllSource; de lo contrario, se producirá un error al agregar el archivo de definición de modelo de Esri a la herramienta. La información de marco adecuada se obtiene del creador del archivo de definición de modelo de Esri.

    Para configurar su equipo para usar marcos de aprendizaje profundo en ArcGIS AllSource, consulte Instalar marcos de aprendizaje profundo para ArcGIS.

  • Esta herramienta llama a una API de Python de aprendizaje profundo de terceros (como TensorFlow, PyTorch o Keras) y usa la función ráster de Python especificada para procesar cada objeto.

  • En la página de GitHub sobre la función ráster de Esri de Python hay ejemplos de casos de uso de esta herramienta. También puede escribir módulos de Python personalizados con los siguientes ejemplos e instrucciones del repositorio de GitHub.

  • El valor del parámetro Definición de modelo puede ser un archivo JSON de definición de modelo de Esri (.emd), una cadena de caracteres JSON o un paquete de modelo de aprendizaje profundo (.dlpk). Una cadena de caracteres JSON es útil cuando esta herramienta se utiliza en el servidor para pegar la cadena de caracteres JSON, en lugar de cargar el archivo .emd. El archivo .dlpk debe almacenarse localmente.

  • Para obtener más información sobre el aprendizaje profundo, consulte Aprendizaje profundo en ArcGIS AllSource.

  • La siguiente muestra de código usa el archivo de definición de modelo de Esri (.emd):

    {
        "Framework":"TensorFlow",
        "ModelConfiguration":"deeplab",
    
        "ModelFile":"\\Data\\ImgClassification\\TF\\froz_inf_graph.pb",
        "ModelType":"ImageClassification",
        "ExtractBands":[0,1,2],
        "ImageHeight":513,
        "ImageWidth":513,
    
        "Classes" : [
            {
                "Value":0,
                "Name":"Evergreen Forest",
                "Color":[0, 51, 0]
             },
             {
                "Value":1,
                "Name":"Grassland/Herbaceous",
                "Color":[241, 185, 137]
             },
             {
                "Value":2,
                "Name":"Bare Land",
                "Color":[236, 236, 0]
             },
             {
                "Value":3,
                "Name":"Open Water",
                "Color":[0, 0, 117]
             },
             {
                "Value":4,
                "Name":"Scrub/Shrub",
                "Color":[102, 102, 0]
             },
             {
                "Value":5,
                "Name":"Impervious Surface",
                "Color":[236, 236, 236]
             }
        ]
    }
  • El ráster de entrada puede ser un ráster simple, varios rásteres o una clase de entidad con imágenes adjuntas. Para obtener más información sobre los adjuntos, consulte Agregar o eliminar archivos adjuntos.

  • Aumentar el tamaño de lote puede mejorar el rendimiento de la herramienta; sin embargo, a medida que aumenta el tamaño del lote, se utiliza más memoria. Si se produce un error de memoria insuficiente, utilice un tamaño de lote más pequeño. El valor de batch_size se puede ajustar con el parámetro Argumentos.

  • Los tamaños de lote son números cuadrados, como 1, 4, 9, 16, 25, 64, etc. Si el valor de entrada no es un cuadrado perfecto, se utiliza el valor cuadrado más alto posible. Por ejemplo, si se especifica un valor de 6, significa que el tamaño de lote se establece en 4.

  • Para obtener información sobre los requisitos para ejecutar esta herramienta y los problemas que pueden presentarse, consulte Preguntas frecuentes sobre el aprendizaje profundo.

Parámetros

EtiquetaExplicaciónTipo de datos
Ráster de entrada

El dataset ráster de entrada que se clasificará.

La entrada puede ser un solo ráster, varios rásteres de un dataset de mosaico, un servicio de imágenes, una carpeta de imágenes o una clase de entidad con imágenes adjuntas.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
Definición de modelo

El valor del parámetro Definición de modelo puede ser un archivo JSON de definición de modelo de Esri (.emd), una cadena de caracteres JSON o un paquete de modelo de aprendizaje profundo (.dlpk). Una cadena de caracteres JSON es útil cuando esta herramienta se utiliza en el servidor para pegar la cadena de caracteres JSON, en lugar de cargar el archivo .emd. El archivo .dlpk debe almacenarse localmente.

Contiene la ruta al archivo de modelo binario de aprendizaje profundo, la ruta a la función ráster de Python que se va a usar y otros parámetros, como el tamaño de tesela preferido o el relleno.

File; String
Argumentos
(Opcional)

La información del parámetro Definición de modelo se utilizará para rellenar este parámetro. Estos argumentos varían dependiendo de la arquitectura del modelo. A continuación figuran argumentos de modelos compatibles con los modelos entrenados en ArcGIS. Los modelos preentrenados de ArcGIS y los modelos de aprendizaje profundo personalizados pueden tener argumentos adicionales que son compatibles con las herramientas.

  • batch_size: número de teselas de imágenes procesadas en cada paso de la inferencia del modelo. Esto depende de la memoria de la tarjeta gráfica. El argumento está disponible para todas las arquitecturas del modelo.
  • padding: número de píxeles en el borde de las teselas de imágenes desde los cuales se combinarán las predicciones de las teselas adyacentes. Para suavizar la salida a la vez que se reducen los artefactos, aumente el valor. El valor máximo del relleno puede ser la mitad del valor del tamaño de tesela. El argumento está disponible para todas las arquitecturas del modelo.
  • tile_size: el ancho y la altura de las teselas de imágenes en las que se dividen las imágenes para la predicción. El argumento solo está disponible para la arquitectura CycleGAN.
  • predict_background: especifica si se clasificará la clase de fondo. Cuando es true, la clase de fondo también se clasifica. El argumento está disponible para UNET, PSPNET, DeepLab y MMSegmentation.
  • test_time_augmentation: aplica un aumento del tiempo de prueba durante la predicción. Si se establece en True, las predicciones de variantes rotadas y volteadas de la imagen de entrada se fusionarán en la salida final. El argumento está disponible para UNET, PSPNET, DeepLab, HED Edge Detector, BDCN Edge Detector, ConnectNet, MMSegmentation y Multi-Task Road Extractor.
  • merge_policy: política para fusionar predicciones aumentadas. Las opciones disponibles son Mín., Máx. y Valor medio. Solo es aplicable cuando se utiliza el aumento del tiempo de prueba. El argumento está disponible para las arquitecturas MultiTaskRoadExtractor y ConnectNet. Si IsEdgeDetection está presente en el archivo .emd del modelo, las arquitecturas BDCNEdgeDetector, HEDEdgeDetector y MMSegmentation también están disponibles.
  • threshold: las predicciones con una puntuación de confianza superior a este umbral se incluyen en el resultado. Los valores permitidos son entre 0 y 1,0. Si ArcGISLearnVersion pertenece a la versión 1.8.4 u otra posterior en el archivo .emd del modelo, las arquitecturas MultiTaskRoadExtractor y ConnectNet están disponibles. Si ArcGISLearnVersion pertenece a la versión 1.8.4 u otra posterior y IsEdgeDetection está presente en el archivo .emd del modelo, las arquitecturas BDCNEdgeDetector, HEDEdgeDetector y MMSegmentation también están disponibles.
  • return_probability_raster: especifica si la salida será un ráster de probabilidad. Cuando es true, la salida será un ráster de probabilidad. Si es false, la salida será un ráster clasificado binario. El valor predeterminado es falso. Si ArcGISLearnVersion pertenece a la versión 1.8.4 u otra posterior en el archivo .emd del modelo, las arquitecturas MultiTaskRoadExtractor y ConnectNet están disponibles. Si ArcGISLearnVersion pertenece a la versión 1.8.4 u otra posterior y IsEdgeDetection está presente en el archivo .emd del modelo, las arquitecturas BDCNEdgeDetector, HEDEdgeDetector y MMSegmentation también están disponibles.
  • direction: la imagen se convierte de un dominio a otro. Las opciones son AtoB y BtoA. El argumento solo está disponible para la arquitectura CycleGAN. Para obtener información sobre este argumento, consulte Funcionamiento de CycleGAN.
  • thinning: especifica si el grosor de los bordes previstos se reducirá o si estos se reducirán a su esqueleto. Las opciones son True y False. Si IsEdgeDetection está presente en el archivo .emd del modelo, las arquitecturas BDCNEdgeDetector, HEDEdgeDetector y MMSegmentation están disponibles.

Value Table
Modo de procesamiento

Especifica cómo se procesarán todos los elementos de ráster en un dataset de mosaico o un servicio de imágenes. Este parámetro se aplica si el ráster de entrada es un dataset de mosaico o un servicio de imágenes.

  • Procesar como imagen en mosaicoSe creará un mosaico con todos los elementos de ráster del dataset de mosaico o del servicio de imágenes y se procesarán. Esta es la opción predeterminada.
  • Procesar todos los elementos de ráster por separadoTodos los elementos de ráster del dataset de mosaico o del servicio de imágenes se procesarán como imágenes separadas.
String
Carpeta de salida
(Opcional)

Carpeta en la que se almacenarán los rásteres clasificados de salida. Se generará un dataset de mosaico utilizando los rásteres clasificados de esta carpeta.

Este parámetro es obligatorio si el ráster de entrada es una carpeta de imágenes o un dataset de mosaico en el que se procesarán todos los elementos por separado. El valor predeterminado es una carpeta de la carpeta del proyecto.

Folder
Entidades de salida
(Opcional)

Clase de entidad en la cual se almacenarán los rásteres clasificados de salida.

Este parámetro es obligatorio si el ráster de entrada es una clase de entidad de imágenes.

Feature Class
Sobrescribir datos adjuntos
(Opcional)

Especifica si los datos adjuntos de la imagen existente se sobrescriben.

  • Desactivado: los datos adjuntos de la imagen existente no se sobrescribirán y los datos adjuntos de la imagen nueva se guardarán en una clase de entidad nueva. El parámetro Entidades de salida estará disponible cuando se desactive este parámetro. Esta es la opción predeterminada.
  • Activado: la clase de entidad existente se sobrescribirá con los nuevos datos adjuntos actualizados.

Este parámetro solo está disponible cuando el valor del parámetro Ráster de entrada es una clase de entidad con datos adjuntos de imagen.

Boolean

Valor de retorno

EtiquetaExplicaciónTipo de datos
Dataset ráster de salida

Nombre del ráster o dataset de mosaico que contiene el resultado.

Raster Dataset

ClassifyPixelsUsingDeepLearning(in_raster, in_model_definition, {arguments}, processing_mode, {out_classified_folder}, {out_featureclass}, {overwrite_attachments})
NombreExplicaciónTipo de datos
in_raster

El dataset ráster de entrada que se clasificará.

La entrada puede ser un solo ráster, varios rásteres de un dataset de mosaico, un servicio de imágenes, una carpeta de imágenes o una clase de entidad con imágenes adjuntas.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
in_model_definition

El valor del parámetro in_model_definition puede ser un archivo JSON de definición de modelo de Esri (.emd), una cadena de caracteres JSON o un paquete de modelo de aprendizaje profundo (.dlpk). Una cadena de caracteres JSON es útil cuando esta herramienta se utiliza en el servidor para pegar la cadena de caracteres JSON, en lugar de cargar el archivo .emd. El archivo .dlpk debe almacenarse localmente.

Contiene la ruta al archivo de modelo binario de aprendizaje profundo, la ruta a la función ráster de Python que se va a usar y otros parámetros, como el tamaño de tesela preferido o el relleno.

File; String
arguments
[arguments,...]
(Opcional)

La información del parámetro in_model_definition se usará para configurar los valores predeterminados de este parámetro. Estos argumentos varían dependiendo de la arquitectura del modelo. A continuación figuran argumentos de modelos compatibles con los modelos entrenados en ArcGIS. Los modelos preentrenados de ArcGIS y los modelos de aprendizaje profundo personalizados pueden tener argumentos adicionales que son compatibles con las herramientas.

  • batch_size: número de teselas de imágenes procesadas en cada paso de la inferencia del modelo. Esto depende de la memoria de la tarjeta gráfica. El argumento está disponible para todas las arquitecturas del modelo.
  • padding: número de píxeles en el borde de las teselas de imágenes desde los cuales se combinarán las predicciones de las teselas adyacentes. Para suavizar la salida a la vez que se reducen los artefactos, aumente el valor. El valor máximo del relleno puede ser la mitad del valor del tamaño de tesela. El argumento está disponible para todas las arquitecturas del modelo.
  • tile_size: el ancho y la altura de las teselas de imágenes en las que se dividen las imágenes para la predicción. El argumento solo está disponible para la arquitectura CycleGAN.
  • predict_background: especifica si se clasificará la clase de fondo. Cuando es true, la clase de fondo también se clasifica. El argumento está disponible para UNET, PSPNET, DeepLab y MMSegmentation.
  • test_time_augmentation: aplica un aumento del tiempo de prueba durante la predicción. Si se establece en True, las predicciones de variantes rotadas y volteadas de la imagen de entrada se fusionarán en la salida final. El argumento está disponible para UNET, PSPNET, DeepLab, HED Edge Detector, BDCN Edge Detector, ConnectNet, MMSegmentation y Multi-Task Road Extractor.
  • merge_policy: política para fusionar predicciones aumentadas. Las opciones disponibles son Mín., Máx. y Valor medio. Solo es aplicable cuando se utiliza el aumento del tiempo de prueba. El argumento está disponible para las arquitecturas MultiTaskRoadExtractor y ConnectNet. Si IsEdgeDetection está presente en el archivo .emd del modelo, las arquitecturas BDCNEdgeDetector, HEDEdgeDetector y MMSegmentation también están disponibles.
  • threshold: las predicciones con una puntuación de confianza superior a este umbral se incluyen en el resultado. Los valores permitidos son entre 0 y 1,0. Si ArcGISLearnVersion pertenece a la versión 1.8.4 u otra posterior en el archivo .emd del modelo, las arquitecturas MultiTaskRoadExtractor y ConnectNet están disponibles. Si ArcGISLearnVersion pertenece a la versión 1.8.4 u otra posterior y IsEdgeDetection está presente en el archivo .emd del modelo, las arquitecturas BDCNEdgeDetector, HEDEdgeDetector y MMSegmentation también están disponibles.
  • return_probability_raster: especifica si la salida será un ráster de probabilidad. Cuando es true, la salida será un ráster de probabilidad. Si es false, la salida será un ráster clasificado binario. El valor predeterminado es falso. Si ArcGISLearnVersion pertenece a la versión 1.8.4 u otra posterior en el archivo .emd del modelo, las arquitecturas MultiTaskRoadExtractor y ConnectNet están disponibles. Si ArcGISLearnVersion pertenece a la versión 1.8.4 u otra posterior y IsEdgeDetection está presente en el archivo .emd del modelo, las arquitecturas BDCNEdgeDetector, HEDEdgeDetector y MMSegmentation también están disponibles.
  • direction: la imagen se convierte de un dominio a otro. Las opciones son AtoB y BtoA. El argumento solo está disponible para la arquitectura CycleGAN. Para obtener información sobre este argumento, consulte Funcionamiento de CycleGAN.
  • thinning: especifica si el grosor de los bordes previstos se reducirá o si estos se reducirán a su esqueleto. Las opciones son True y False. Si IsEdgeDetection está presente en el archivo .emd del modelo, las arquitecturas BDCNEdgeDetector, HEDEdgeDetector y MMSegmentation están disponibles.

Value Table
processing_mode

Especifica cómo se procesarán todos los elementos de ráster en un dataset de mosaico o un servicio de imágenes. Este parámetro se aplica si el ráster de entrada es un dataset de mosaico o un servicio de imágenes.

  • PROCESS_AS_MOSAICKED_IMAGESe creará un mosaico con todos los elementos de ráster del dataset de mosaico o del servicio de imágenes y se procesarán. Esta es la opción predeterminada.
  • PROCESS_ITEMS_SEPARATELYTodos los elementos de ráster del dataset de mosaico o del servicio de imágenes se procesarán como imágenes separadas.
String
out_classified_folder
(Opcional)

Carpeta en la que se almacenarán los rásteres clasificados de salida. Se generará un dataset de mosaico utilizando los rásteres clasificados de esta carpeta.

Este parámetro es obligatorio si el ráster de entrada es una carpeta de imágenes o un dataset de mosaico en el que se procesarán todos los elementos por separado. El valor predeterminado es una carpeta de la carpeta del proyecto.

Folder
out_featureclass
(Opcional)

Clase de entidad en la cual se almacenarán los rásteres clasificados de salida.

Este parámetro es obligatorio si el ráster de entrada es una clase de entidad de imágenes.

Feature Class
overwrite_attachments
(Opcional)

Especifica si los datos adjuntos de la imagen existente se sobrescriben.

  • NO_OVERWRITELos datos adjuntos de la imagen existente no se sobrescribirán y los datos adjuntos de la imagen nueva se guardarán en una clase de entidad nueva. Cuando se especifica esta opción, es preciso rellenar el parámetro out_featureclass. Esta es la opción predeterminada.
  • OVERWRITELa clase de entidad existente se sobrescribirá con los nuevos datos adjuntos actualizados.

Este parámetro solo es válido cuando el valor del parámetro in_raster es una clase de entidad con datos adjuntos de imagen.

Boolean

Valor de retorno

NombreExplicaciónTipo de datos
out_classified_raster

Nombre del ráster o dataset de mosaico que contiene el resultado.

Raster Dataset

Muestra de código

Ejemplo 1 de ClassifyPixelsUsingDeepLearning (ventana de Python)

Este ejemplo clasifica un ráster en función de una clasificación de píxeles personalizada mediante la función ClassifyPixelsUsingDeepLearning.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

ClassifyPixelsUsingDeepLearning("c:/classifydata/moncton_seg.tif",
     "c:/classifydata/moncton.tif", "c:/classifydata/moncton_sig.emd")
Ejemplo 2 de ClassifyPixelsUsingDeepLearning (script independiente)

Este ejemplo clasifica un ráster en función de una clasificación de píxeles personalizada mediante la función ClassifyPixelsUsingDeepLearning.

# Import system modules
import arcpy
from arcpy.ia import *


# Set local variables
in_raster = "c:\\classifydata\\moncton_seg.tif"
in_model_definition = "c:\\classifydata\\moncton_sig.emd"
model_arguments = "padding 0; batch_size 16"
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Execute 
Out_classified_raster = ClassifyPixelsUsingDeepLearning(in_raster, 
                   in_model_definition, model_arguments, processing_mode)
Out_classified_raster.save("c:\\classifydata\\classified_moncton.tif")