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
- Il formato dei dati TFRecord è ottimizzato per l'addestramento in TensorFlow. La pagina degli esempi di machine learning include diversi workflow TensorFlow che mostrano come addestrare un modello utilizzando TFRecords.
- In alternativa, per un esempio di come scaricare i dati utilizzando Apache Beam, ospitato in Google Cloud Dataflow, quindi addestrarli in Vertex AI utilizzando TensorFlow, consulta il tutorial sulla classificazione della copertura del suolo e segui un notebook Colab.
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.
-
Il pacchetto
ee.Model
di Earth Engine consente di effettuare previsioni utilizzando i dati in Earth Engine e un modello addestrato ospitato su Vertex AI di Google. Puoi ospitare il modello addestrato personalizzato in Vertex AI ed eseguire l'inferenza direttamente in Earth Engine utilizzandoee.Model.fromVertexAi
. Per saperne di più, consulta la guida alle previsioni delle immagini o la guida alle previsioni delle tabelle. - In alternativa, il tutorial sulla classificazione della copertura del suolo mostra come eseguire le previsioni utilizzando un servizio cloud come Cloud Functions.
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 })