APIs für Machine Learning
Maschinelles Lernen (ML) ist eine leistungsstarke Methode zur Analyse von Erdbeobachtungsdaten. Earth Engine bietet integrierte Funktionen, mit denen Nutzer ML-Modelle mit nutzerfreundlichen APIs für gängige Szenarien erstellen und verwenden können.
Eine häufige Aufgabe beim maschinellen Lernen besteht darin, die Pixel in Satellitenbildern in zwei oder mehr Kategorien zu klassifizieren. Dieser Ansatz ist nützlich für die Kartierung der Landnutzung und der Landbedeckung sowie für andere beliebte Anwendungen.
- Überwachte Klassifizierung:Eine ML-Technik zur Klassifizierung von Land besteht darin, anhand von Beispielen mit Grundwahrheit ein Modell zu trainieren, um zwischen Klassen zu unterscheiden. Die integrierten überwachten Klassifikatoren von Earth Engine unterstützen diesen Prozess.
- Unüberwachte Klassifizierung: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 von inhärenten Unterschieden in Cluster ein. Die unüberwachten Klassifizierer 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 einzuordnen, versucht ein Regressionsmodell, für jede Eingabe eine kontinuierliche Variable vorherzusagen. Mit einem Regressionsmodell lässt sich beispielsweise die Wasserqualität, der prozentuale Waldbestand, der prozentuale Anteil der Wolkendecke oder der Ernteertrag vorhersagen. Weitere Informationen finden Sie im Abschnitt zur linearen Regression von ee.Reducers.
Training und Vorhersage außerhalb von Earth Engine
Deep Learning und neuronale Netzwerke sind Machine-Learning-Techniken, die sich gut für komplexe Daten wie Satellitenbilder eignen. Weder Deep Learning noch neuronale Netzwerke werden in den APIs für maschinelles Lernen 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 nutzen zu können.
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 kann es sinnvoll sein, ein Modell außerhalb von Earth Engine zu trainieren, wenn Ihr Dataset sehr groß ist und die unten dokumentierten Grenzwerte überschreitet.
Daten aus Earth Engine für das Training exportieren
- Das TFRecord-Datenformat ist für das Training in TensorFlow optimiert. Auf der Seite mit Beispielen für maschinelles Lernen finden Sie mehrere TensorFlow-Workflows, in denen gezeigt wird, wie Sie ein Modell mit TFRecords trainieren.
- Alternativ finden Sie im Tutorial zur Landbedeckungsklassifizierung ein Beispiel dafür, wie Sie Daten mit Apache Beam, das in Google Cloud Dataflow gehostet wird, herunterladen und dann in Vertex AI mit TensorFlow trainieren. Folgen Sie dazu einem Colab-Notebook.
Vorhersagen aus einem Modell außerhalb von Earth Engine abrufen
Wenn Sie ein Modell außerhalb von Earth Engine trainieren, haben Sie mehrere Möglichkeiten, Vorhersagen aus diesem Modell zu erhalten.
-
Das
ee.Model
-Paket von Earth Engine ermöglicht Vorhersagen mit Daten in Earth Engine und einem trainierten Modell, das in Vertex AI von Google gehostet wird. Sie können Ihr benutzerdefiniertes trainiertes Modell in Vertex AI hosten und Inferenz direkt in Earth Engine mitee.Model.fromVertexAi
ausführen. Weitere Informationen finden Sie im Leitfaden zu Bildvorhersagen oder im Leitfaden zu Tabellenvorhersagen. - Alternativ wird im Tutorial zur Landbedeckungsklassifizierung gezeigt, wie Sie Vorhersagen mit einem Cloud-Dienst wie Cloud Functions erstellen können.
Weitere Gründe für das Trainieren von Modellen außerhalb von Earth Engine
Neben Vertrautheit und 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 mit den Machine-Learning-APIs von Earth Engine an Skalierungsgrenzen stoßen.
Limits für Trainings-Dataset
Das Training mit ee.Classifier
oder ee.Clusterer
ist in der Regel bei Datasets mit bis zu 100 MB effektiv. Als sehr grobe Richtlinie gilt bei einer 32-Bit-Genauigkeit (d.h. Gleitkommazahl), dass Trainingsdatasets, die die folgende Bedingung erfüllen, verarbeitet werden können (wobei n die Anzahl der Beispiele und b die Anzahl der Bänder ist):
nb ≤ (100 * 2 20) / 4
Wenn Sie beispielsweise 100 Bänder für das Training verwenden, sollte die Anzahl der für das Training verwendeten Beispiele unter 200.000 liegen.
Inferenzlimits
Da in Earth Engine 256 × 256 Bildkacheln verarbeitet werden, dürfen Inferenzanfragen für Bilder weniger als 400 Bänder haben (wieder unter der Annahme einer 32-Bit-Präzision der Bilder).
Sie können einen Classifier mehrmals neu trainieren, um das Dataset für jeden Trainingslauf innerhalb der Grenzwerte 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")
Beschränkungen 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 })