Analizza l’infestazione dei roditori utilizzando le capacità geospaziali di Amazon SageMaker

Analizza l'infestazione dei roditori con Amazon SageMaker geospaziale

I roditori come ratti e topi sono associati a diversi rischi per la salute e sono noti per diffondere più di 35 malattie. Identificare le aree ad alta attività di roditori può aiutare le autorità locali e le organizzazioni di controllo dei parassiti a pianificare interventi in modo efficace ed eliminare i roditori.

In questo post, mostriamo come monitorare e visualizzare una popolazione di roditori utilizzando le capacità geospaziali di Amazon SageMaker. Successivamente, visualizziamo gli effetti dell’infestazione da roditori sulla vegetazione e sui corpi idrici. Infine, correlazioniamo e visualizziamo il numero di casi di vaiolo delle scimmie segnalati con le avvistamenti di roditori in una regione. Amazon SageMaker rende più facile per gli scienziati dei dati e gli ingegneri di machine learning (ML) costruire, addestrare e distribuire modelli utilizzando dati geospaziali. Lo strumento facilita l’accesso alle fonti di dati geospaziali, l’esecuzione di operazioni di elaborazione appositamente progettate, l’applicazione di modelli di ML pre-addestrati e l’utilizzo di strumenti di visualizzazione integrati più rapidamente e su larga scala.

Notebook

Per prima cosa, utilizziamo un notebook di Amazon SageMaker Studio con un’immagine geospaziale seguendo i passaggi descritti in Introduzione alle capacità geospaziali di Amazon SageMaker.

Accesso ai dati

L’immagine geospaziale viene fornita con le capacità geospaziali di SageMaker che semplificano l’arricchimento dei dati per l’analisi geospaziale e di ML. Per il nostro post, utilizziamo immagini satellitari da Sentinel-2 e i dataset sull’attività dei roditori e sul vaiolo delle scimmie provenienti dai dati aperti di NYC.

Per prima cosa, utilizziamo l’attività dei roditori ed estraiamo la latitudine e la longitudine degli avvistamenti e delle ispezioni dei roditori. Successivamente, arricchiamo queste informazioni sulla posizione con indirizzi stradali leggibili dall’uomo. Creiamo un job di arricchimento vettoriale (VEJ) nel notebook di SageMaker Studio per eseguire un’operazione di geocodifica inversa in modo da poter convertire le coordinate geografiche (latitudine, longitudine) in indirizzi leggibili dall’uomo, alimentato da Amazon Location Service. Creiamo il VEJ nel seguente modo:

import boto3
import botocore
import sagemaker
import sagemaker_geospatial_map

region = boto3.Session().region_name
session = botocore.session.get_session()
execution_role = sagemaker.get_execution_role()

sg_client= session.create_client(
    service_name='sagemaker-geospatial',
    region_name=region
)
response = sg_client.start_vector_enrichment_job(
    ExecutionRoleArn=execution_role,
    InputConfig={
        'DataSourceConfig': {
            'S3Data': {
                'S3Uri': 's3://<bucket>/sample/rodent.csv'
            }
        },
        'DocumentType': 'CSV'
    },
    JobConfig={
        "ReverseGeocodingConfig": { 
         "XAttributeName": "longitude",
         "YAttributeName": "latitude"
      }
    },
    Name='vej-reversegeo',
)

my_vej_arn = response['Arn']

Visualizza l’attività dei roditori in una regione

Ora possiamo utilizzare le capacità geospaziali di SageMaker per visualizzare gli avvistamenti dei roditori. Dopo il completamento del VEJ, esportiamo l’output del job in un bucket Amazon S3.

sg_client.export_vector_enrichment_job(
    Arn=my_vej_arn,
    ExecutionRoleArn=execution_role,
    OutputConfig={
        'S3Data': {
            'S3Uri': 's3://<bucket>/reversegeo/'
        }
    }
)

Una volta completata l’esportazione, vedrai il file CSV di output nel tuo bucket di Amazon Simple Storage Service (Amazon S3), che consiste dei tuoi dati di input (coordinate di longitudine e latitudine) insieme a colonne aggiuntive: numero di indirizzo, paese, etichetta, comune, quartiere, codice postale e regione di quella posizione aggiunti alla fine.

Dal file di output generato dal VEJ, possiamo utilizzare le capacità geospaziali di SageMaker per sovrapporre l’output su una mappa di base e fornire una visualizzazione a strati per semplificare la collaborazione. Le capacità geospaziali di SageMaker forniscono strumenti di visualizzazione integrati alimentati da Foursquare Studio, che funzionano nativamente all’interno di un notebook di SageMaker tramite il SDK della mappa geospaziale di SageMaker. Di seguito, possiamo visualizzare gli avvistamenti dei roditori e ottenere anche gli indirizzi leggibili dall’uomo per ciascuno dei punti dati. Le informazioni sull’indirizzo di ciascun punto dati degli avvistamenti dei roditori possono essere utili per ispezioni e trattamenti dei roditori.

Analizzare gli effetti dell’infestazione dei roditori sulla vegetazione e sui corpi d’acqua

Per analizzare gli effetti dell’infestazione dei roditori sulla vegetazione e sui corpi d’acqua, è necessario classificare ogni posizione come vegetazione, acqua e terreno scoperto. Vediamo come possiamo utilizzare queste capacità geospaziali per effettuare questa analisi.

Le nuove capacità geospaziali in SageMaker offrono un accesso più facile ai dati geospaziali come Sentinel-2 e Landsat 8. L’accesso integrato ai dataset geospaziali consente di risparmiare settimane di lavoro altrimenti perse nella raccolta e nel trattamento dei dati provenienti da vari fornitori e venditori di dati. Inoltre, queste capacità geospaziali offrono un modello di segmentazione pre-addestrato Land Use Land Cover (LULC) per identificare il materiale fisico, come vegetazione, acqua e terreno scoperto, sulla superficie terrestre.

Utilizziamo questo modello di ML LULC per analizzare gli effetti della popolazione di roditori sulla vegetazione e sui corpi d’acqua.

Nel frammento di codice seguente, definiamo prima le coordinate dell’area di interesse (aoi_coords) di New York City. Successivamente, creiamo un Earth Observation Job (EOJ) e selezioniamo l’operazione LULC. SageMaker scarica e preelabora i dati delle immagini satellitari per l’EOJ. Successivamente, SageMaker esegue automaticamente l’inferenza del modello per l’EOJ. Il tempo di esecuzione dell’EOJ varierà da alcuni minuti a diverse ore a seconda del numero di immagini elaborate. È possibile monitorare lo stato degli EOJ utilizzando la funzione get_earth_observation_job e visualizzare l’input e l’output degli EOJ nella mappa.

aoi_coords = [
    [
            [
              -74.13513011934334,
              40.87856296920188
            ],
            [
              -74.13513011934334,
              40.565792636343616
            ],
            [
              -73.8247144462764,
              40.565792636343616
            ],
            [
              -73.8247144462764,
              40.87856296920188
            ],
            [
              -74.13513011934334,
              40.87856296920188
            ]
    ]
]

eoj_input_config = {
    "RasterDataCollectionQuery": {
        "RasterDataCollectionArn": "arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8",
        "AreaOfInterest": {
            "AreaOfInterestGeometry": {
                "PolygonGeometry": {
                    "Coordinates": aoi_coords
                }
            }
        },
        "TimeRangeFilter": {
            "StartTime": "2023-01-01T00:00:00Z",
            "EndTime": "2023-02-28T23:59:59Z",
        },
        "PropertyFilters": {
            "Properties": [{"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 2.0}}}],
            "LogicalOperator": "AND",
        },
    }
}
eoj_config = {
  "LandCoverSegmentationConfig": {}
}

response = geospatial_client.start_earth_observation_job(
    Name="eoj-rodent-infestation-lulc-example",
    InputConfig=eoj_input_config,
    JobConfig=eoj_config,
    ExecutionRoleArn=execution_role,
)
eoj_arn = response["Arn"]
eoj_arn

Map = sagemaker_geospatial_map.create_map()
Map.set_sagemaker_geospatial_client(sg_client)

Map.render()

time_range_filter = {
    "start_date": "2023-01-01T00:00:00Z",
    "end_date": "2023-02-28T23:59:59Z",
}


config = {"preset": "singleBand", "band_name": "mask"}
output_layer = Map.visualize_eoj_output(
    Arn=eoj_arn, config=config, time_range_filter=time_range_filter
)

Per visualizzare la popolazione di roditori rispetto alla vegetazione, sovrapponiamo la popolazione di roditori e i dati di avvistamento alle previsioni del modello di segmentazione delle coperture terrestri. Questa visualizzazione può aiutarci a individuare la popolazione di roditori e analizzarla rispetto alla vegetazione e ai corpi d’acqua.

Visualizza i casi di vaiolo delle scimmie e correlali con i dati sui roditori

Per visualizzare la relazione tra i casi di vaiolo delle scimmie e le osservazioni dei roditori, aggiungiamo il dataset dei casi di vaiolo delle scimmie e il file geoJSON per i confini dei distretti di New York City. Guarda il seguente codice:

nybb = pd.read_csv("./nybb.csv")
monkeypox = pd.read_csv("./monkeypox.csv")
dataset = Map.add_dataset({
    "data": nybb
}, auto_create_layers=False)
dataset = Map.add_dataset({
    "data": monkeypox
}, auto_create_layers=False)

All’interno di un notebook di SageMaker Studio, possiamo utilizzare lo strumento di visualizzazione fornito da Foursquare per aggiungere livelli nella mappa e aggiungere grafici. Qui, abbiamo aggiunto i dati dei casi di vaiolo delle scimmie come grafico per mostrare il numero di casi di vaiolo delle scimmie per ciascuno dei distretti. Per vedere la correlazione tra i casi di vaiolo delle scimmie e le osservazioni dei roditori, abbiamo aggiunto i confini dei distretti come livello di poligoni e aggiunto il livello di mappa termica che rappresenta l’attività dei roditori. Il livello dei confini dei distretti è colorato per corrispondere al grafico dei dati dei casi di vaiolo delle scimmie. Come possiamo vedere, il distretto di Manhattan presenta una elevata concentrazione di avvistamenti di roditori e registra il numero più alto di casi di vaiolo delle scimmie, seguito da Brooklyn.

Ciò è supportato da una semplice analisi statistica del calcolo della correlazione tra la concentrazione degli avvistamenti di roditori e i casi di vaiolo delle scimmie in ciascun distretto. Il calcolo ha prodotto un valore r di 0,714, che implica una correlazione positiva.

r = np.corrcoef(borough_stats['Concentrazione (avvistamenti per chilometro quadrato)'], borough_stats['Casi di vaiolo delle scimmie'])

Conclusione

In questo post, abbiamo dimostrato come è possibile utilizzare le capacità geospaziali di SageMaker per ottenere indirizzi dettagliati degli avvistamenti di roditori e visualizzare gli effetti dei roditori sulla vegetazione e sui corpi idrici. Ciò può aiutare le autorità locali e le organizzazioni di controllo dei parassiti a pianificare interventi efficaci ed eliminare i roditori. Abbiamo inoltre correlato gli avvistamenti di roditori ai casi di vaiolo delle scimmie nella zona con lo strumento di visualizzazione integrato. Utilizzando l’arricchimento vettoriale e gli EOJ insieme agli strumenti di visualizzazione integrati, le capacità geospaziali di SageMaker eliminano le sfide legate alla gestione di dataset geospaziali su larga scala, all’addestramento del modello e all’inferenza, e forniscono la possibilità di esplorare rapidamente previsioni e dati geospaziali su una mappa interattiva utilizzando grafica accelerata 3D e strumenti di visualizzazione integrati.

Puoi iniziare a utilizzare le capacità geospaziali di SageMaker in due modi:

  • Attraverso l’interfaccia utente geospaziale di SageMaker, come parte dell’interfaccia utente di SageMaker Studio
  • Attraverso i notebook di SageMaker con un’immagine geospaziale di SageMaker

Per saperne di più, visita le capacità geospaziali di Amazon SageMaker e la guida introduttiva alle capacità geospaziali di Amazon SageMaker. Inoltre, visita il nostro repository GitHub, che contiene diversi notebook di esempio sulle capacità geospaziali di SageMaker.