Detectar objetos 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 una clase de entidad con los objetos que encuentre. Las entidades pueden ser cuadros o polígonos de delimitación alrededor de los objetos encontrados o puntos en el centro de los objetos.

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 PyTorch o Keras) en el entorno de Python de ArcGIS Pro; 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 Pro, 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.

  • Consulte el siguiente ejemplo del archivo .emd.

    {
        "Framework" :"TensorFlow",
        "ModelConfiguration": "ObjectDetectionAPI",
        
        "ModelFile": ".\\CoconutTreeDetection.model",
        "ModelType": "ObjectDetection",
        "ImageHeight": 850,
        "ImageWidth": 850,
        "ExtractBands": [0,1,2],
        "ImageSpaceUsed": "MAP_SPACE"
        "Classes": [
        {
            "Value": 0,
            "Name": "CoconutTree",
            "Color": [0, 255, 0]
        }
        ]
    }
  • La herramienta puede procesar imágenes de entrada que estén en el espacio de mapa o en el espacio de píxeles. Las imágenes en el espacio de mapa se encuentran en un sistema de coordenadas basado en mapa. Las imágenes en el espacio de píxeles están en un espacio de imagen sin procesar, sin rotación ni distorsión. El sistema de referencia puede especificarse al generar los datos de entrenamiento en la herramienta Exportar datos de entrenamiento para aprendizaje profundo usando el parámetro Sistema de referencia. Si el modelo se entrena en un software de entrenamiento de terceros, el sistema de referencia debe especificarse en el archivo .emd usando el parámetro ImageSpaceUsed, que puede establecerse como MAP_SPACE o PIXEL_SPACE.

  • Para las capas de imágenes orientadas, el procesamiento siempre se realizará en el espacio de píxeles. Cuando se utiliza el espacio de píxeles para el procesamiento, las detecciones del espacio de píxeles se conservan en la tabla de salida en el campo IShape.

  • 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, el tamaño de lote se establece en 4.

  • Use el parámetro Supresión no máxima para identificar y eliminar entidades duplicadas de la detección de objetos. Para obtener más información sobre este parámetro, consulte la sección Utilización de la herramienta Supresión no máxima. Cuando las entradas son capas de imágenes orientadas, los duplicados se conservan con geometrías de terreno nulas.

  • Utilice la opción Procesar solo elementos candidatos del parámetro Modo de procesamiento para detectar objetos solo en imágenes seleccionadas del dataset del mosaico. Puede utilizar la herramienta Calcular candidatos de mosaico para encontrar las imágenes candidatas en un dataset de mosaico y un servicio de imágenes que mejor representen el área del mosaico.

  • Esta herramienta admite y utiliza varias GPU, si están disponibles. Para utilizar una GPU específica, determine el entorno Id. de GPU. Cuando el Id. de GPU no se define, la herramienta todas las GPU disponibles. Esta es la opción predeterminada.

  • El ráster de entrada puede ser un ráster único, varios rásteres, un dataset o una capa de imágenes orientadas, o bien una clase de entidad con imágenes adjuntas. Para obtener más información sobre los adjuntos, consulte Agregar o eliminar archivos adjuntos.

  • 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.

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

  • Para obtener más información sobre el aprendizaje profundo, consulte Aprendizaje profundo con la extensión ArcGIS Image Analyst.

Parámetros

EtiquetaExplicaciónTipo de datos
Ráster de entrada

La imagen de entrada que se utilizará para detectar objetos. 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, una clase de entidad con imágenes adjuntas o una capa o dataset de imágenes orientadas.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class; Oriented Imagery Layer
Objetos de salida detectados

Clase de entidad de salida que contendrá geometrías que rodean al objeto u objetos detectados en la imagen de entrada.

Si la clase de entidad ya existe, los resultados se agregarán a la clase de entidad existente.

Feature Class
Definición de modelo

Este parámetro 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.

  • padding: el 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.
  • threshold: las detecciones con una puntuación de confianza superior a este umbral se incluirán en el resultado. Los valores permitidos son entre 0 y 1,0. El argumento está disponible para todas las arquitecturas del modelo.
  • batch_size: el número de teselas de imágenes que se procesarán 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.
  • nms_overlap: ratio de superposición máximo para dos entidades de superposición, definido como la relación del área de intersección sobre el área de combinación. El valor predeterminado es 0,1. El argumento está disponible para todas las arquitecturas del modelo.
  • exclude_pad_detections: si se establece en True, se filtrarán detecciones potencialmente truncadas cerca de los bordes que están en la región rellena de chips de imagen. El argumento está disponible para SSD, RetinaNet, YOLOv3, DETReg, MMDetection y Faster RCNN solamente.
  • test_time_augmentation: aplica un aumento del tiempo de prueba durante la predicción. Si se establece en True, las predicciones de orientaciones rotadas y volteadas de la imagen de entrada se fusionarán en la salida final y sus valores de confidencia se promediarán. Esto puede hacer que los valores de confianza caigan por debajo del umbral en el caso de los objetos que solo se detectan en unas cuantas orientaciones de la imagen. 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 dividirán las imágenes para la predicción. El argumento solo está disponible para MaskRCNN.
  • 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 solo está disponible para MaskRCNN.
  • output_classified_raster: ruta de acceso al ráster de salida. El argumento solo está disponible para MaXDeepLab.

Value Table
Supresión no máxima
(Opcional)

Especifica si se realizará la supresión no máxima, en la cual se identifican los objetos duplicados y se eliminan las entidades duplicadas con el valor de confianza más bajo.

  • Desactivado: no se realizará la supresión no máxima. Todos los objetos detectados estarán en la clase de entidad de salida. Esta es la opción predeterminada.
  • Activado: se realizará la supresión no máxima y se eliminarán los objetos duplicados detectados. Cuando las entradas son capas de imágenes orientadas, los duplicados se conservan con geometrías de terreno nulas.

Boolean
Campo de puntuación de confianza
(Opcional)

Nombre del campo de la clase de entidad que contendrá las puntuaciones de confianza generadas por el método de detección de objetos.

Este parámetro es obligatorio cuando está activado el parámetro Supresión no máxima.

String
Campo de valor de clase
(Opcional)

El nombre del campo de valor de clase de la clase de entidad de entrada.

Si no se proporciona ningún nombre de campo, se utilizará un campo Classvalue o Value. Si estos campos no existen, se identificará que todos los registros pertenecen a una sola clase.

String
Máx. ratio de superposición
(Opcional)

El ratio de superposición máximo para dos entidades de superposición, definido como la relación del área de intersección sobre el área de combinación. El valor predeterminado es 0.

Double
Modo de procesamiento
(Opcional)

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.
  • Procesar solo los elementos candidatosSolo se procesarán los elementos de ráster con un valor de 1 o 2 en el campo Candidate de la tabla de atributos del datasets de mosaico de entrada.
String
Utilizar el espacio de píxeles
(Opcional)

Especifica si la inferencia se realizará en imágenes en espacio de píxeles.

  • Desactivado: la inferencia se hará en el espacio de mapa. Esta es la opción predeterminada.
  • Activado: la inferencia se realizará en espacio de imagen y la salida se transformará de nuevo en espacio de mapa. Esta opción es útil cuando se utilizan imágenes oblicuas o imágenes de callejero en las que las entidades pueden distorsionarse mediante el uso del espacio de mapa.

Boolean
Objetos de interés
(Opcional)

Especifica los nombres de los objetos que detectará la herramienta. Las opciones disponibles se basarán en el valor del parámetro Definición de modelo.

Este parámetro solo está activo cuando el modelo detecta más de un tipo de objeto.

String

Salida derivada

EtiquetaExplicaciónTipo de datos
Ráster clasificado de salida

El ráster clasificado de salida para la clasificación de píxeles. El nombre del dataset ráster será el mismo que el valor del parámetro Objetos de salida detectados.

Este parámetro solo es aplicable cuando el tipo de modelo es Segmentación panóptica.

Raster Dataset

DetectObjectsUsingDeepLearning(in_raster, out_detected_objects, in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, {class_value_field}, {max_overlap_ratio}, {processing_mode}, {use_pixelspace}, {in_objects_of_interest})
NombreExplicaciónTipo de datos
in_raster

La imagen de entrada que se utilizará para detectar objetos. 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, una clase de entidad con imágenes adjuntas o una capa o dataset de imágenes orientadas.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class; Oriented Imagery Layer
out_detected_objects

Clase de entidad de salida que contendrá geometrías que rodean al objeto u objetos detectados en la imagen de entrada.

Si la clase de entidad ya existe, los resultados se agregarán a la clase de entidad existente.

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.

  • padding: el 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.
  • threshold: las detecciones con una puntuación de confianza superior a este umbral se incluirán en el resultado. Los valores permitidos son entre 0 y 1,0. El argumento está disponible para todas las arquitecturas del modelo.
  • batch_size: el número de teselas de imágenes que se procesarán 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.
  • nms_overlap: ratio de superposición máximo para dos entidades de superposición, definido como la relación del área de intersección sobre el área de combinación. El valor predeterminado es 0,1. El argumento está disponible para todas las arquitecturas del modelo.
  • exclude_pad_detections: si se establece en True, se filtrarán detecciones potencialmente truncadas cerca de los bordes que están en la región rellena de chips de imagen. El argumento está disponible para SSD, RetinaNet, YOLOv3, DETReg, MMDetection y Faster RCNN solamente.
  • test_time_augmentation: aplica un aumento del tiempo de prueba durante la predicción. Si se establece en True, las predicciones de orientaciones rotadas y volteadas de la imagen de entrada se fusionarán en la salida final y sus valores de confidencia se promediarán. Esto puede hacer que los valores de confianza caigan por debajo del umbral en el caso de los objetos que solo se detectan en unas cuantas orientaciones de la imagen. 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 dividirán las imágenes para la predicción. El argumento solo está disponible para MaskRCNN.
  • 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 solo está disponible para MaskRCNN.
  • output_classified_raster: ruta de acceso al ráster de salida. El argumento solo está disponible para MaXDeepLab.

Value Table
run_nms
(Opcional)

Especifica si se realizará la supresión no máxima, en la cual se identifican los objetos duplicados y se eliminan las entidades duplicadas con el valor de confianza más bajo.

  • NO_NMSNo se realizará la supresión no máxima. Todos los objetos detectados estarán en la clase de entidad de salida. Esta es la opción predeterminada.
  • NMSSe realizará la supresión no máxima y se eliminarán los objetos duplicados detectados. Cuando las entradas son capas de imágenes orientadas, los duplicados se conservan con geometrías de terreno nulas.
Boolean
confidence_score_field
(Opcional)

Nombre del campo de la clase de entidad que contendrá las puntuaciones de confianza generadas por el método de detección de objetos.

Este parámetro es obligatorio si el parámetro run_nms se define como NMS.

String
class_value_field
(Opcional)

El nombre del campo de valor de clase de la clase de entidad de entrada.

Si no se proporciona ningún nombre de campo, se utilizará un campo Classvalue o Value. Si estos campos no existen, se identificará que todos los registros pertenecen a una sola clase.

String
max_overlap_ratio
(Opcional)

El ratio de superposición máximo para dos entidades de superposición, definido como la relación del área de intersección sobre el área de combinación. El valor predeterminado es 0.

Double
processing_mode
(Opcional)

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.
  • PROCESS_CANDIDATE_ITEMS_ONLYSolo se procesarán los elementos de ráster con un valor de 1 o 2 en el campo Candidate de la tabla de atributos del datasets de mosaico de entrada.
String
use_pixelspace
(Opcional)

Especifica si la inferencia se realizará en imágenes en espacio de píxeles.

  • NO_PIXELSPACELa inferencia se hará en el espacio de mapa. Esta es la opción predeterminada.
  • PIXELSPACELa inferencia se realizará en espacio de imagen y la salida se transformará de nuevo en espacio de mapa. Esta opción es útil cuando se utilizan imágenes oblicuas o imágenes de callejero en las que las entidades pueden distorsionarse mediante el uso del espacio de mapa.
Boolean
in_objects_of_interest
[in_objects_of_interest,...]
(Opcional)

Especifica los objetos que detectará la herramienta. Las opciones disponibles se basarán en el valor del parámetro in_model_definition.

Este parámetro solo está activo cuando el modelo detecta más de un tipo de objeto.

String

Salida derivada

NombreExplicaciónTipo de datos
out_classified_raster

El ráster clasificado de salida para la clasificación de píxeles. El nombre del dataset ráster será el mismo que el valor del parámetro out_detected_objects.

Este parámetro solo es aplicable cuando el tipo de modelo es Segmentación panóptica.

Raster Dataset

Muestra de código

Ejemplo 1 de DetectObjectsUsingDeepLearning (ventana de Python)

En este ejemplo se crea una clase de entidad basada en la detección de objetos.

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

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

DetectObjectsUsingDeepLearning("c:/detectobjects/moncton_seg.tif", 
     "c:/detectobjects/moncton_seg.shp", "c:/detectobjects/moncton.emd", 
     "padding 0; threshold 0.5; batch_size 4", "NO_NMS", "Confidence", 
     "Class", 0, "PROCESS_AS_MOSAICKED_IMAGE")
Ejemplo 2 de DetectObjectsUsingDeepLearning (script independiente)

En este ejemplo se crea una clase de entidad basada en la detección de objetos.

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

"""
Usage: DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
       in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, 
       {class_value_field}, {max_overlap_ratio}, {processing_mode})
"""

# Set local variables
in_raster = "c:/classifydata/moncton_seg.tif"
out_detected_objects = "c:/detectobjects/moncton.shp"
in_model_definition = "c:/detectobjects/moncton_sig.emd"
model_arguments = "padding 0; threshold 0.5; batch_size 4"
run_nms = "NO_NMS"
confidence_score_field = "Confidence"
class_value_field = "Class"
max_overlap_ratio = 0
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Execute 
DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
   in_model_definition, model_arguments, run_nms, confidence_score_field, 
   class_value_field, max_overlap_ratio, processing_mode)

Información de licenciamiento

  • Basic: Requiere Image Analyst
  • Standard: Requiere Image Analyst
  • Advanced: Requiere Image Analyst

Temas relacionados