Uczenie maszynowe w Earth Engine

Interfejsy Machine Learning API

Systemy uczące się (ML) to potężna metoda analizowania danych z Earth. Earth Engine ma wbudowane funkcje, które umożliwiają użytkownikom tworzenie i używanie modeli ML do typowych zastosowań za pomocą łatwych w użyciu interfejsów API.

Typowym zadaniem związanym z AI jest klasyfikowanie pikseli na zdjęciach satelitarnych na 2 lub więcej kategorii. Podejście to jest przydatne do mapowania pokrycia terenu i innych popularnych zastosowań.

  • Klasyfikacja nadzorowana: jedną z technik ML do klasyfikowania gruntów jest użycie przykładów danych rzeczywistych, aby nauczyć model rozróżniania klas. Wbudowane w Earth Engine klasyfikatory nadzorowane obsługują ten proces.
  • Klasyfikacja nienadzorowana: w klasyfikacji nienadzorowanej algorytmowi treningowemu nie podaje się żadnych przykładów danych rzeczywistych. Zamiast tego algorytm dzieli dostępne dane na klastry na podstawie ich różnic. Nienadzorowane klasyfikatory w Earth Engine są szczególnie przydatne, gdy nie ma danych o prawdziwych wartościach, gdy nie znasz ostatecznej liczby klas lub gdy chcesz szybko przeprowadzić eksperyment.
  • Regresja: model klasyfikacji próbuje przypisać każdemu wejściu klasę dyskretną, a model regresji próbuje przewidzieć ciągłą zmienną dla każdego wejścia. Na przykład model regresji może przewidywać jakość wody, procentowy udział lasów, procentowy udział chmur lub plony. Więcej informacji znajdziesz w sekcji Regresja liniowa w ee.Reducers.

Trenowanie i prognozowanie poza Earth Engine

Deep learning i sieci neuronowe to techniki uczenia maszynowego, które mogą dobrze działać w przypadku złożonych danych, takich jak zdjęcia satelitarne. W interfejsach API uczenia maszynowego Earth Engine nie są obsługiwane ani uczenie głębokie, ani sieci neuronowe. Aby z nich korzystać, musisz użyć frameworka, takiego jak TensorFlow lub PyTorch, i trenować model poza Earth Engine.

Jeśli znasz już frameworki takie jak scikit-learn do klasycznego uczenia maszynowego lub XGBoost do drzewek decyzyjnych z wzmocnieniem gradientowym, możesz też przeprowadzić szkolenie poza Earth Engine.

Jeśli Twój zbiór danych jest bardzo duży i przekracza limity podane poniżej, możesz wytrenować model poza Earth Engine.

Eksportowanie danych z Earth Engine na potrzeby trenowania

Uzyskiwanie prognoz z modelu poza Earth Engine

Jeśli trenujesz model poza Earth Engine, masz kilka opcji uzyskiwania prognoz z tego modelu.

  • Pakiet ee.Model w Earth Engine umożliwia prognozowanie na podstawie danych w Earth Engine i wytrenowanego modelu hostowanego w Vertex AI. Możesz hostować wytrenowany niestandardowo model w Vertex AI i wykonywać wnioskowanie bezpośrednio w Earth Engine za pomocą ee.Model.fromVertexAi. Więcej informacji znajdziesz w artykule Łączenie z modelami hostowanymi w Vertex AI.
  • Możesz też skorzystać z samouczka klasyfikacji pokrycia terenu, aby dowiedzieć się, jak wykonywać prognozy za pomocą usługi w chmurze, takiej jak Cloud Functions.

Inne powody trenowania modeli poza Earth Engine

Model można trenować poza Earth Engine nie tylko ze względu na znajomość i preferencje, ale też wtedy, gdy chcesz używać architektur modeli (np. konwolucyjnych sieci neuronowych), których nie obsługują interfejsy API systemów uczących się Earth Engine, gdy chcesz korzystać z większej liczby funkcji Vertex AI lub gdy napotykasz limity skalowania w przypadku interfejsów API systemów uczących się Earth Engine.

Limity zestawów treningowych

Szkolenie za pomocą funkcji ee.Classifier lub ee.Clusterer jest zazwyczaj skuteczne w przypadku zbiorów danych o rozmiary do 100 MB. Bardzo ogólnie, przy założeniu dokładności 32-bitowej (czyli zmiennoprzecinkowej), ta metoda może obsługiwać zbiory danych treningowych, które spełniają te warunki (gdzie n to liczba przykładów, a b to liczba pasm):

nb ≤ (100 * 2 20) / 4

Jeśli na przykład trenujesz z użyciem 100 pasm, liczba przykładów użytych do trenowania powinna być mniejsza niż 200 tys. przykładów.

Limity wnioskowania

Earth Engine przetwarza obrazy w postaci kafelków o wymiarach 256 x 256, dlatego wnioski dotyczące obrazów muszą zawierać mniej niż 400 pasm (z wykorzystaniem 32-bitowej rozdzielczości obrazu).

Możesz przeprowadzić ponowne trenowanie klasyfikatora więcej niż raz, aby zachować zbiór danych dla każdego procesu trenowania w ramach limitów.

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

Limity rozmiaru modelu

Dodatkowo sam model nie może być większy niż 100 MB. Wiele z naszych klasyfikatorów można skonfigurować tak, aby ograniczyć ich złożoność, a tym samym rozmiar. Na przykład:

      var classifier = ee.Classifier.smileRandomForest({
          numberOfTrees: 10,
          minLeafPopulation: 10,
          maxNodes: 10000
      })