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
- Il formato di dati TFRecord è ottimizzato per l'addestramento in TensorFlow. La pagina degli esempi di machine learning include diversi flussi di lavoro di TensorFlow che mostrano come addestrare un modello utilizzando TFRecords.
- In alternativa, per un esempio di come scaricare i dati utilizzando Apache Beam, ospitati in Google Cloud Dataflow, quindi addestrati in Vertex AI utilizzando TensorFlow, consulta il tutorial sulla classificazione della copertura del suolo e segui le istruzioni con un notebook colab.
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.
-
Il pacchetto
ee.Model
di Earth Engine consente di fare previsioni utilizzando i dati in Earth Engine e un modello addestrato ospitato su Vertex AI di Google. Puoi ospitare il tuo modello addestrato personalizzato in Vertex AI ed eseguire l'inferenza direttamente in Earth Engine utilizzandoee.Model.fromVertexAi
. Per ulteriori informazioni, consulta Connessione ai modelli ospitati su Vertex AI. - In alternativa, il tutorial sulla classificazione della copertura del suolo mostra come fare previsioni utilizzando un servizio cloud come Cloud Functions.
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 })