APIs für Machine Learning
Maschinelles Lernen (ML) ist eine leistungsstarke Methode zur Analyse von Erdbeobachtungsdaten. Die Earth Engine bietet integrierte Funktionen, mit denen Nutzer ML-Modelle mit nutzerfreundlichen APIs für gängige Szenarien erstellen und verwenden können.
Eine gängige ML-Aufgabe besteht darin, die Pixel in Satellitenbildern in zwei oder mehr Kategorien zu klassifizieren. Der Ansatz eignet sich für die Kartierung der Landnutzung und der Bodenbedeckung sowie für andere gängige Anwendungen.
- Überwachte Klassifizierung: Eine ML-Methode zur Klassifizierung von Landflächen besteht darin, ein Modell mithilfe von Ground-Truth-Beispielen zu trainieren, zwischen Klassen zu unterscheiden. Die in Earth Engine integrierten überwachten Klassifikatoren unterstützen diesen Prozess.
- Unsupervised Classification: Bei der unüberwachten Klassifizierung werden dem Trainingsalgorithmus keine Ground-Truth-Beispiele zur Verfügung gestellt. Stattdessen teilt der Algorithmus die verfügbaren Daten anhand inhärenter Unterschiede in Cluster auf. Die unbeaufsichtigten Klassifikatoren von Earth Engine sind besonders nützlich, wenn keine Ground-Truth-Daten vorhanden sind, wenn Sie die endgültige Anzahl der Klassen nicht kennen oder wenn Sie schnell Tests durchführen möchten.
- Regression: Während ein Klassifizierungsmodell versucht, jede Eingabe in eine diskrete Klasse einzuteilen, versucht ein Regressionsmodell, für jede Eingabe eine kontinuierliche Variable vorherzusagen. Mit einem Regressionsmodell lassen sich beispielsweise die Wasserqualität, die Waldbedeckung in Prozent, die Wolkenbedeckung in Prozent oder der Ernteertrag vorhersagen. Weitere Informationen finden Sie im Abschnitt Lineare Regression von ee.Reducers.
Training und Vorhersage außerhalb von Earth Engine
Deep Learning und neuronale Netzwerke sind Verfahren des maschinellen Lernens, die sich gut für komplexe Daten wie Satellitenbilder eignen. Weder Deep Learning noch neuronale Netze werden in den Machine-Learning-APIs von Earth Engine unterstützt. Stattdessen müssen Sie ein Framework wie TensorFlow oder PyTorch verwenden und Ihr Modell außerhalb von Earth Engine trainieren, um sie zu nutzen.
Sie können auch außerhalb von Earth Engine trainieren, wenn Sie bereits mit einem Framework wie scikit-learn für klassisches maschinelles Lernen oder XGBoost für gradient boosted decision trees vertraut sind.
Schließlich können Sie ein Modell auch außerhalb von Earth Engine trainieren, wenn Ihr Datensatz sehr groß ist und die unten aufgeführten Limits überschreitet.
Daten aus Earth Engine für das Training exportieren
- Das TFRecord-Datenformat ist für das Training in TensorFlow optimiert. Die Seite mit Beispielen für maschinelles Lernen enthält mehrere TensorFlow-Workflows, die zeigen, wie ein Modell mit TFRecords trainiert wird.
- Ein Beispiel zum Herunterladen von Daten mit Apache Beam, die in Google Cloud Dataflow gehostet werden, und anschließendem Training in Vertex AI mit TensorFlow finden Sie im Leitfaden zur Klassifizierung von Bodenbedeckungen. Sie können sich die Schritte auch in einem Colab-Notebook ansehen.
Vorhersagen aus einem Modell außerhalb der Earth Engine abrufen
Wenn Sie ein Modell außerhalb von Earth Engine trainieren, haben Sie mehrere Möglichkeiten, Vorhersagen mit diesem Modell zu erhalten.
-
Mit dem
ee.Model
-Paket von Earth Engine können Vorhersagen mit Daten in Earth Engine und einem trainierten Modell erstellt werden, das auf Vertex AI von Google gehostet wird. Sie können Ihr benutzerdefiniert trainiertes Modell in Vertex AI hosten und Inferenzen direkt in Earth Engine mitee.Model.fromVertexAi
ausführen. Weitere Informationen finden Sie unter Verbindung zu in Vertex AI gehosteten Modellen herstellen. - Alternativ wird in der Anleitung zur Klassifizierung der Landbedeckung gezeigt, wie Sie Vorhersagen mit einem Cloud-Dienst wie Cloud Functions erstellen.
Weitere Gründe, Modelle außerhalb von Earth Engine zu trainieren
Neben der Vertrautheit und den Vorlieben kann es auch andere Gründe geben, ein Modell außerhalb von Earth Engine zu trainieren. Das ist beispielsweise der Fall, wenn Sie Modellarchitekturen (z. B. Convolutional Neural Networks) verwenden möchten, die von den Machine Learning APIs von Earth Engine nicht unterstützt werden, wenn Sie mehr Funktionen von Vertex AI nutzen möchten oder wenn Sie bei den Machine Learning APIs von Earth Engine auf Skalierungslimits stoßen.
Limits für Trainings-Datasets
Das Training mit ee.Classifier
oder ee.Clusterer
ist im Allgemeinen bei Datasets mit bis zu 100 MB effektiv. Als sehr grobe Richtlinie können bei einer Genauigkeit von 32 Bit (d.h. Gleitkomma) Trainingsdatensätze verwendet werden, die die folgenden Anforderungen erfüllen (n ist die Anzahl der Beispiele und b die Anzahl der Bänder):
nb ≤ (100 * 2 20) ÷ 4
Wenn Sie beispielsweise mit 100 Bändern trainieren, sollte die Anzahl der für das Training verwendeten Beispiele unter 200.000 liegen.
Einschränkungen bei der Inferenz
Da in Earth Engine Bildkacheln mit einer Größe von 256 × 256 Pixeln verarbeitet werden, dürfen Anfragen für die Bildinferenz weniger als 400 Bänder haben. Dabei wird wieder von einer 32-Bit-Genauigkeit der Bilder ausgegangen.
Sie können einen Klassifikator mehrmals neu trainieren, um den Datensatz für jeden Trainingslauf innerhalb der Limits zu halten.
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")
Einschränkungen bei der Modellgröße
Außerdem darf das Modell selbst nicht größer als 100 MB sein. Viele unserer Klassifikatoren können so konfiguriert werden, dass ihre Komplexität und damit ihre Größe begrenzt wird. Beispiel:
var classifier = ee.Classifier.smileRandomForest({ numberOfTrees: 10, minLeafPopulation: 10, maxNodes: 10000 })