Machine learning in Earth Engine

API per il machine learning

Il machine learning (ML) è una tecnica efficace per analizzare i dati di osservazione della Terra. Earth Engine dispone di funzionalità integrate che consentono agli utenti di creare e utilizzare modelli ML per scenari comuni con API di facile utilizzo.

Un'attività di ML comune è classificare i pixel delle immagini satellitari in due o più categorie. L'approccio è utile per la mappatura dell'uso del suolo e della copertura del suolo e per altre applicazioni diffuse.

  • Classificazione supervisionata: una tecnica di ML per classificare il suolo consiste nell'utilizzare esempi basati su dati empirici reali per insegnare a un modello a distinguere tra le classi. I classificatori supervisionati integrati di Earth Engine supportano questa procedura.
  • Classificazione non supervisionata: nella classificazione non supervisionata, non vengono forniti esempi di dati di fatto all'algoritmo di addestramento. Al contrario, l'algoritmo suddivide i dati disponibili in cluster in base alle differenze intrinseche. I classificatori non supervisionati di Earth Engine sono particolarmente utili quando non esistono dati di riferimento, quando non conosci il numero finale di classi o quando vuoi eseguire sperimentazioni rapide.
  • Regressione: mentre un modello di classificazione tenta di raggruppare ogni input in una classe discreta, un modello di regressione tenta di prevedere una variabile continua per ogni input. Ad esempio, un modello di regressione potrebbe prevedere la qualità dell'acqua, la percentuale di copertura forestale, la percentuale di copertura nuvolosa o il rendimento del raccolto. Per ulteriori informazioni, consulta la sezione sulla regressione lineare di ee.Reducers.

Addestramento e previsione al di fuori di Earth Engine

Il deep learning e le reti neurali sono tecniche di machine learning che possono essere efficaci per dati complessi come le immagini satellitari. Né il deep learning né le reti neurali sono supportati nelle API di machine learning di Earth Engine. Per sfruttarli, dovrai utilizzare un framework come TensorFlow o PyTorch e addestrare il modello al di fuori di Earth Engine.

Potresti anche eseguire l'addestramento al di fuori di Earth Engine se hai già familiarità con un framework come scikit-learn per il machine learning classico o XGBoost per gli alberi decisionali con boosting per gradiente.

Infine, ti consigliamo di addestrare un modello al di fuori di Earth Engine se il tuo set di dati è molto grande e supera i limiti descritti di seguito.

Esportazione dei dati da Earth Engine per l'addestramento

Ottenere le previsioni da un modello esterno a Earth Engine

Se addestri un modello al di fuori di Earth Engine, hai a disposizione alcune opzioni per ottenere le previsioni da quel modello.

Altri motivi per addestrare i modelli al di fuori di Earth Engine

Oltre che per familiarità e preferenza, potresti voler addestrare un modello al di fuori di Earth Engine se vuoi utilizzare architetture di modelli (ad es. reti neurali convoluzionali) non supportate dalle API di machine learning di Earth Engine, se vuoi utilizzare più funzionalità di Vertex AI o se riscontri limiti di scalabilità con le API di machine learning di Earth Engine.

Limiti del set di addestramento

L'addestramento con ee.Classifier o ee.Clusterer è generalmente efficace con set di dati fino a 100 MB. Come linea guida molto approssimativa, se si assume una precisione a 32 bit (ad es. float), è possibile utilizzare set di dati di addestramento che soddisfano (dove n è il numero di esempi e b è il numero di bande):

nb ≤ (100 * 2 20) / 4

Ad esempio, se esegui l'addestramento utilizzando 100 bande, il numero di esempi utilizzati per l'addestramento deve essere inferiore a 200.000.

Limiti di inferenza

Poiché Earth Engine elabora riquadri di immagini di 256 x 256, le richieste di inferenza sulle immagini devono avere meno di 400 bande (di nuovo, supponendo una precisione di 32 bit delle immagini).

Puoi addestrare nuovamente un classificatore più di una volta per mantenere il set di dati per ogni esecuzione dell'addestramento entro i limiti.

      var trainings = ee.List.sequence(0, 3).map(function(cover) {
          return image.addBands(landcover.eq(cover).stratifiedSample()
      })

      var classifier = ee.Classifier.smileCart()
          .train(trainings.get(0), "cover")
          .train(trainings.get(1), "cover")
          .train(trainings.get(2), "cover")
          .train(trainings.get(3), "cover")
    

Limiti di dimensione del modello

Inoltre, il modello stesso deve avere dimensioni inferiori a 100 MB. Molti dei nostri classificatori possono essere configurati per limitarne la complessità e, di conseguenza, le dimensioni. Ad esempio:

      var classifier = ee.Classifier.smileRandomForest({
          numberOfTrees: 10,
          minLeafPopulation: 10,
          maxNodes: 10000
      })