Skip To Content

Exemplo: Inferência usando um modelo pré-treinado

Deep learning pode ser usado para automatizar a tarefa de extrair manualmente feições de imagens. Com modelos pré-treinados do ArcGIS, você pode reduzir a necessidade de grandes conjuntos de dados, poder de computação significativo e conhecimento ou experiência em deep learning. Esses modelos foram treinados em diversos dados geográficos e apresentam bom desempenho em diversas regiões. Os modelos pré-treinados do ArcGIS estão disponíveis para qualquer pessoa com uma conta ArcGIS por meio do ArcGIS Living Atlas of the World. No fluxo de trabalho a seguir, o modelo Car Detection-USA é usado para identificar carros em imagens aéreas e de drones de alta resolução.

Requisitos

Os seguintes requisitos são necessários para executar este fluxo de trabalho:

  • Imagens aéreas para executar o modelo.
    Anotação:

    Você pode baixar imagens aéreas contendo carros de OpenAerialMap.

  • Deep learning é computacionalmente intensiva e é recomendado usar uma GPU eficiente para processar grandes conjuntos de dados.

Inferência com modelos pré-treinados

As seções a seguir descrevem os processos envolvidos na inferência com um modelo pré-treinado do ArcGIS.

Importações de bibliotecas Python

Importe as seguintes bibliotecas Python:

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

Adicione os dados e o modelo para análise

Há dois métodos que você pode usar para adicionar seu conjunto de dados ao seu notebook.

O primeiro método envolve carregar as imagens aéreas na sua área de trabalho do notebook, adicioná-las à célula de código e executar a função copy_raster() para extrair os dados.

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

O segundo método envolve adicionar as imagens aéreas como uma camada de imagens hospedada no seu portal e adicionar a camada de imagens ao seu notebook usando seu itemID.

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

Adicione o pacote de deep learning

Você pode baixar o modelo pré-treinado Car Detection - EUA no ArcGIS Living Atlas. Depois de baixar o modelo, adicione-o como um item ao seu portal e acesse-o no seu notebook usando seu itemID.

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

Execute o modelo

Para executar o modelo pré-treinado no seu notebook, use o módulo detect_objects do arcgis.learn. O módulo receberá suas imagens como entrada e detectará e contará o número de carros presentes nelas.

Anotação:

Você pode potencialmente aumentar o desempenho do modelo aumentando os argumentos do modelo com valores variados até que a saída desejada seja alcançada:

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
        }

Anotação:

Se uma GPU estiver configurada, você pode definir um contexto dentro do método detect_object() para defini-lo para o ambiente da 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 do modelo

Finalmente, depois de executar seu modelo, você pode exibir a saída de num_cars:

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