Skip To Content

Ejemplo: Inferencia utilizando un modelo preentrenado

El aprendizaje profundo se puede usar para automatizar la tarea de extraer manualmente entidades de las imágenes. Con los modelos preentrenados de ArcGIS, puede mitigar la necesidad de disponer de grandes datasets, una gran potencia informática y conocimientos o experiencia en aprendizaje profundo. Estos modelos han sido entrenados con datos geográficos diversos y funcionan bien en varias regiones. Los modelos preentrenados de ArcGIS están disponibles para cualquier persona con una cuenta de ArcGIS a través de ArcGIS Living Atlas of the World. En el siguiente flujo de trabajo, se utiliza el modelo Detección de coches: EE. UU. para identificar automóviles en imágenes aéreas y de drones de alta resolución.

Requisitos

Los siguientes requisitos son necesarios para llevar a cabo este flujo de trabajo:

  • Imágenes aéreas para ejecutar el modelo.
    Nota:

    Puede descargar imágenes aéreas que contengan automóviles desde OpenAerialMap.

  • El aprendizaje profundo es intensivo desde el punto de vista computacional, y por ello se recomienda utilizar una GPU potente para procesar datasets grandes.

Inferencia con modelos preentrenados

Las secciones siguientes describen los procesos involucrados en la inferencia con un modelo preentrenado de ArcGIS.

Importación de bibliotecas de Python

Importe las siguientes bibliotecas de Python:

from arcgis.gis import GIS
from arcgis.learn import detect_objects
from arcgis.raster.analytics import copy_raster
 
gis = GIS("home")

Agregar los datos y el modelo para el análisis

Hay dos métodos que puede utilizar para agregar su dataset al notebook.

El primer método implica cargar las imágenes aéreas en el espacio de trabajo de su notebook, agregarlas a la celda de código y ejecutar la función copy_raster() para extraer los datos.

dataset = "/arcgis/home/Aerial imagery.tif"
imagery = copy_raster(input_raster=dataset, output_name="Aerial_imagery", raster_type_name="Raster Dataset")

El segundo método implica agregar las imágenes aéreas como una capa de imágenes alojada en su portal y agregar la capa de imágenes a su notebook mediante su itemID.

imagery = gis.content.get("<imagery-layer-item-id>")

Agregar el paquete de aprendizaje profundo

Puede descargar el modelo preentrenado Detección de coches: EE. UU. desde ArcGIS Living Atlas. Una vez descargado el modelo, agréguelo como un elemento a su portal y acceda a él en su notebook mediante su itemID.

model = gis.content.get("<deep-learning-package-item-id>")

Ejecutar el modelo

Para ejecutar el modelo preentrenado en su notebook, utilice el módulo detect_objects de arcgis.learn. El módulo tomará sus imágenes como entrada y detectará y contará la cantidad de automóviles presentes en ellas.

Nota:

Tiene la posibilidad de aumentar el rendimiento del modelo aumentando sus argumentos con valores variables hasta lograr el resultado deseado:

model_arguments = {
	"padding": "100",	# The number of pixels at the border of image tiles from which predictions are blended for adjacent tiles. To smooth the output while reducing artifacts, increase the value
	"batch_size": "16",	# Change batch size as per GPU specifications
	"threshold": "0.5",	# Get detections greater than 50% confidence
	"tile_size": "224",	# The width and height of image tiles into which the imagery is split for prediction
        }

Nota:

Si hay una GPU configurada, puede establecer un contexto dentro del método detect_object() para configurarlo en el entorno de la GPU:

context = { "processorType": "GPU" }

num_cars = {}
 
detected_cars = detect_objects(
        input_raster=imagery,
        model = model,
        output_name = "detected_cars",
        )
 
num_cars[imagery.name] = len(detected_cars.query(as_df=True))

Resultados del modelo

Finalmente, una vez ejecutado su modelo, puede mostrar la salida de num_cars:

print(f"Number of cars is {num_cars}.")