Esri technology di Giorgio Forti
Quando il GIS incontra l’Intelligenza Artificiale: ArcGIS implementa “Geospatial Deep Learning”
Nella Newsletter di Marzo parliamo di piattaforma Esri e tecnologie di Intelligenza Artificiale (AI), in particolare per implementare algoritmi di Machine Learning e Deep Learning (ML e DL) in ambito Geospaziale, il settore nel quale il software ArcGIS è leader mondiale.
Il DL è una tecnica di apprendimento automatico che utilizza reti neurali profonde per imparare attraverso il “training”. Proprio come la tradizionale classificazione supervisionata delle immagini, questi modelli si basano su training per "imparare" cosa cercare. Tuttavia, a differenza della segmentazione e classificazione tradizionale, i modelli di DL non analizzano solo i singoli pixel o gruppi di pixel ma hanno una maggiore capacità di apprendimento e possono imparare a riconoscere forme complesse, modelli e texture a varie scale all'interno delle immagini. Questo permette ai modelli di DL di analizzare grandi quantità di dati in condizioni variabili. I modelli “addestrati” possono poi essere applicati a un'ampia varietà di immagini a un costo computazionale molto più basso ed essere riutilizzati da altri.
Nell’ambito del Deep Learning il software Esri, essenzialmente, permette di integrare gli algoritmi e i modelli disponibili nel mondo della “Open Data Science” o proprietari (distribuiti essenzialmente con codice Python), fornendo tutte le funzionalità per :
- Importare e utilizzare i modelli
- Effettuare il “training” dei modelli per aumentare progressivamente la percentuale di affidabilità
- Effettuare il riconoscimento degli oggetti e delle classi per individuarli ed etichettarli nelle immagini satellitari a valle del Training (Inferenza).
- Integrare altri sistemi di Machine Learning fornendo la componente di Geolocalizzazione e di Analisi Geospaziale.
Sulla base dei possibili scenari di utilizzo, ne troviamo due principali:
- Analisi di immagini su Workstation in modalità Desktop
- Utilizzatori Multipli in modalità centralizzata (Server – Side)
Analisi di immagini su Workstation in modalità Desktop
In questa tipologia di scenario, l’analista di immagini, con ArcGIS Pro (nelle versioni 2.7 e 2.6) con l’estensione Image Analyst può utilizzare le funzionalità e i workflow relativi al Deep Learning come schematizzato nella figura seguente:
ArcGIS nell’ambito delle categorie di Deep Learning (Pixel Classification, Object Detection, Instance Segmentation e Image Classification), abilita alcune funzioni di “inferenza” specializzate per l’ambito Geospaziale rappresentate di seguito con esempi pratici per una maggiore comprensione:
Di seguito un esempio pratico del modello FeatureClassifier (https://developers.arcgis.com/python/api-reference/arcgis.learn.html#featureclassifier) che permette di classificare gli oggetti all’interno di una immagine in modalità dinamica.
Nell’immagine seguente un esempio di “Object Detection” usando il modello YOLOv3 che agisce sui Full Motion Video. Nel caso specifico riesce a geolocalizzare i pesci gatto da una ripresa da Drone (https://developers.arcgis.com/python/guide/yolov3-object-detector/):
A questo link sono disponibili ulteriori dettagli riguardo l’analisi DL all’interno di ArcGIS Pro:
https://pro.arcgis.com/en/pro-app/latest/help/analysis/image-analyst/deep-learning-in-arcgis-pro.htm
A questo link sono disponibili i tool su ArcGIS Pro con i modelli e gli algoritmi di DL utilizzati:
Le best practice, le caratteristiche hardware raccomandate e le librerie Python che vengono incluse nel prodotto sono indicate a questo link:
http://downloads.esri.com/resources/ImageAnalyst/DeepLearning_FAQ.pdf
Questo scenario di utilizzo è anche quello consigliato per la fase iniziale di testing di tipo qualitativo, per individuare i modelli di DL e i casi d’uso più adatti per l’utilizzatore finale e gli obiettivi prefissati.
Utilizzatori Multipli in modalità centralizzata (Server – Side)
Questo scenario di utilizzo è quello relativo a funzionalità DL che vengono messe a disposizione in modalità centralizzata (Server Side), integrando una Architettura Esri già esistente o dedicata basata su ArcGIS Enterprise. Questa architettura può essere modulata a vari livelli e complessità di utilizzo personalizzando delle web app profilate e implementando gli algoritmi di DL in modalità più automatica e di fatto più semplificata. Per questo la fase di valutazione qualitativa e dei casi d’uso dello scenario precedente è fondamentale per questo scenario.
Inserendo in una architettura basata su ArcGIS Enterprise la componente ArcGIS Notebook e Image Server è possibile implementare questo scenario.
ArcGIS Notebook Server
ArcGIS Notebooks mette a disposizione una piattaforma integrata per creare, condividere ed eseguire attività legate alla “Data Science”.
ArcGIS Notebooks è costruito per eseguire analisi di big data, modelli di deep learning e strumenti di visualizzazione dinamica.
ArcGIS Notebooks utilizza come interfaccia a “riga di comando” un ambiente notebook Jupyter, che fornisce uno spazio di lavoro semplificato basato su celle.
I notebook sono implementati utilizzando contenitori Docker (https://www.docker.com/get-started) - un sistema operativo virtualizzato che fornisce un ambiente isolato in stile "sandbox" per ogni utilizzatore di notebook. Le risorse di calcolo per ogni contenitore possono essere configurate dall'organizzazione - consentendo la flessibilità per gli utilizzatori di notebook per ottenere le risorse di calcolo di cui hanno bisogno, quando ne hanno bisogno.
L’elemento fondamentale del Notebook sono le librerie Python di Esri: ArcPy e l'API ArcGIS per Python. Accanto a queste ci sono centinaia di popolari librerie Python, come TensorFlow, scikit-learn e fast.ai etc., per creare una libreria Python completa per l'analisi spaziale, la “Data Science”, il deep learning e la gestione dei contenuti.
Qualsiasi procedura Open Source basata su Python (per esempio per analisi di tipo Machine Learning o AI) può essere integrata in Esri tramite le ArcGIS API for Python e arricchita con le funzionalità Geospaziali (con ArcPy): https://developers.arcgis.com/python/
ArcGIS Notebooks è rilasciato con due livelli di licenza, Standard e Advanced. Con la licenza Standard (inclusa in ArcGIS Enterprise) è possibile integrare le procedure Python di ”Data Science”, mentre con la Advanced è possibile utilizzare anche le procedure ArcPy di Esri, implementando quindi anche tutte le funzionalità di “Raster Analytics” incluse in Image Server:
https://enterprise.arcgis.com/en/image/latest/raster-analytics/perform-raster-analysis.htm
ArcGIS API per Python include il modulo arcgis.learn che rende semplice addestrare un'ampia varietà di modelli di deep learning sui propri set di dati e risolvere problemi complessi. Include oltre quindici modelli di deep learning che supportano flussi di lavoro GIS e di telerilevamento avanzati. Inoltre, questi modelli supportano una varietà di tipi di dati - immagini aeree e orientate, nuvole di punti, dati batimetrici, LiDAR, video, feature layer, dati tabulari e persino testo non strutturato.
Nella figura seguente un esempio di estrazione di pattern da immagini satellitari (edifici danneggiati da eventi naturali):
Questo non è valido solo per le immagini, ma è possibile applicarlo anche ai dati LIDAR, come nell’esempio della figura seguente dove sono stati estratti edifici e vegetazione utilizzando i modelli PointCNN: https://developers.arcgis.com/python/guide/point-cloud-segmentation-using-pointcnn/
oppure aTesto non Strutturato, utilizzando l’Entity Recognizer Model come nell’esempio seguente, dove viene analizzato un “Crime Incidente Report” e nella figura successiva, dove i dati vengono geocodificati e visualizzati: https://developers.arcgis.com/python/guide/how-named-entity-recognition-works/
Altri Esempi di utilizzo di modelli di DL li possiamo trovare in questo Blog di Esri:
https://www.esri.com/arcgis-blog/products/api-python/analytics/deep-learning-models-in-arcgis-learn/
Maggiori informazioni sul prodotto le possiamo trovare a questo link:
https://www.esri.com/en-us/arcgis/products/arcgis-notebooks/get-started