Machine learning in Earth Engine

API per il machine learning

Il machine learning (ML) è una tecnica potente 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 machine learning comune è classificare i pixel delle immagini satellitari in due o più categorie. L'approccio è utile per la mappatura dell'uso e della copertura del suolo e per altre applicazioni comuni.

  • Classificazione supervisionata: una tecnica di ML per classificare il terreno consiste nell'utilizzare esempi di dati empirici reali per insegnare a un modello a distinguere tra le classi. I classificatori supervisionati integrati di Earth Engine supportano questo processo.
  • Classificazione non supervisionata:nella classificazione non supervisionata, all'algoritmo di addestramento non vengono forniti esempi di dati di riferimento. Al contrario, l'algoritmo divide 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 verità di base, quando non conosci il numero finale di classi o quando vuoi fare una sperimentazione rapida.
  • 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 la resa delle colture. Per ulteriori informazioni, consulta la sezione 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 funzionare bene 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, devi utilizzare un framework come TensorFlow o PyTorch e addestrare il modello al di fuori di Earth Engine.

Potresti anche voler 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 delle decisioni con boosting del gradiente.

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

Esportazione dei dati da Earth Engine per l'addestramento

Generare previsioni da un modello esterno a Earth Engine

Se addestri un modello al di fuori di Earth Engine, hai alcune opzioni per ottenere previsioni da questo modello.

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

Oltre alla familiarità e alle preferenze, 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 Machine Learning di Earth Engine, se vuoi utilizzare più funzionalità di Vertex AI o se riscontri limiti di scalabilità con le API 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, supponendo una precisione a 32 bit (ovvero float), è possibile ospitare 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 256x256, le richieste di inferenza sulle immagini devono avere meno di 400 bande (sempre supponendo una precisione a 32 bit delle immagini).

Puoi eseguire il retraining di un classificatore più di una volta per mantenere il set di dati per ogni esecuzione di 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 quindi le dimensioni. Ad esempio:

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