Maschinelles Lernen in Earth Engine

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

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.

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
      })