Maschinelles Lernen in Earth Engine

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

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.

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