L'apprendimento profondo può essere utilizzato per automatizzare l'attività di estrazione manuale di feature dalle immagini. Grazie ai modelli preaddestrati di ArcGIS, si può ridurre la necessità di dataset molto ampi, di potenza di calcolo considerevole e di conoscenza o esperienza nel settore dell'apprendimento profondo. Questi modelli sono stati addestrati sulla base di vari dati geografici e hanno dimostrato buoni risultati in diverse regioni. I modelli preaddestrati di ArcGIS sono disponibili per chiunque abbia un account ArcGIS tramite ArcGIS Living Atlas of the World. Nel seguente flusso di lavoro il modello Rilevamento auto-USA è utilizzato per identificare le auto in immagini scattate da droni e aeree ad alta definizione.
Requisiti
Per effettuare questo flusso di lavoro sono necessari i seguenti requisiti:
- Immagini aeree su cui eseguire il modello.
Nota:
Le immagini aeree in cui sono presenti auto possono essere scaricate da OpenAerialMap.
- L'apprendimento profondo utilizza un elevato numero di calcoli e si consiglia di utilizzare una GPU potente per elaborare grandi dataset.
Inferenza con modelli preaddestrati
Le seguenti sezioni descrivono i processi coinvolti nell'inferenza con un modello preaddestrato di ArcGIS.
Importazioni libreria di Python
Importare le seguenti librerie di Python:from arcgis.gis import GIS
from arcgis.learn import detect_objects
from arcgis.raster.analytics import copy_raster
gis = GIS("home")
Aggiungere i dadi e il modello per analisi
Esistono due metodi che possono essere utilizzati per aggiungere il dataset agli appunti.
Il primo metodo prevede il caricamento di immagini aeree nel workspace degli appunti, la loro aggiunta nella cella di codice e l'esecuzione della funzione copy_raster() per estrarre i dati.dataset = "/arcgis/home/Aerial imagery.tif"
imagery = copy_raster(input_raster=dataset, output_name="Aerial_imagery", raster_type_name="Raster Dataset")
Il secondo metodo consiste nell'aggiunta di immagini aeree al portale come layer di immagini ospitato e l'aggiunta del layer di immagini agli appunti utilizzando il suo itemID.imagery = gis.content.get("<imagery-layer-item-id>")
Aggiungere il pacchetto di apprendimento profondo
È possibile scaricare il modello di Rilevamento auto - USA da ArcGIS Living Atlas. Dopo aver scaricato il modello, aggiungerlo come un elemento al portale e accedervi negli appunti utilizzando il suo itemID.model = gis.content.get("<deep-learning-package-item-id>")
Eseguire il modello
Per eseguire il modello preaddestrato negli appunti, utilizzare il modulo detect_objects di arcgis.learn. Il modulo considererà le immagini come un input e rileverà e conterà il numero di auto in esse presenti.
Nota:
È possibile aumentare potenzialmente le prestazioni del modello incrementando gli argomenti del modello con valori mutevoli finché non si ottiene l'output desiderato:
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:
Se è configurata una GPU, è possibile impostare un contesto all'interno del metodo detect_object()per impostarla nell'ambiente 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))
Risultati modello
Infine, dopo aver eseguito il modello è possibile visualizzare l'output di num_cars:print(f"Number of cars is {num_cars}.")