Uczenie maszynowe w Earth Engine

Interfejsy Machine Learning API

Uczenie maszynowe to zaawansowana technika analizowania danych obserwacji Ziemi. Earth Engine ma wbudowane funkcje, które umożliwiają użytkownikom tworzenie i używanie modeli ML w przypadku typowych scenariuszy za pomocą łatwych w obsłudze interfejsów API.

Częstym zadaniem ML jest klasyfikowanie pikseli na zdjęciach satelitarnych do co najmniej 2 kategorii. Ta metoda jest przydatna w mapowaniu pokrycia terenu i innych popularnych zastosowaniach.

  • Klasyfikacja nadzorowana: jedną z technik ML do klasyfikowania terenu jest używanie przykładów opartych na danych podstawowych, aby nauczyć model rozróżniania klas. Wbudowane klasyfikatory nadzorowane Earth Engine obsługują ten proces.
  • Klasyfikacja bez nadzoru: w klasyfikacji bez nadzoru algorytmowi trenującemu nie są dostarczane żadne przykłady danych podstawowych. Zamiast tego algorytm dzieli dostępne dane na klastry na podstawie wrodzonych różnic. Klasyfikatory bez nadzoru Earth Engine są szczególnie przydatne, gdy nie ma danych referencyjnych, nie znasz ostatecznej liczby klas lub chcesz szybko przeprowadzić eksperyment.
  • Regresja: model klasyfikacji próbuje przypisać każde dane wejściowe do dyskretnej klasy, a model regresji próbuje prognozować zmienną ciągłą dla każdego wejścia. Na przykład model regresji może prognozować jakość wody, procent pokrycia lasami, procent pokrycia chmurami lub plony. Więcej informacji znajdziesz w sekcji regresji liniowej w ee.Reducers.

Trenowanie i prognozowanie poza Earth Engine

Deep learning i sieci neuronowe to techniki uczenia maszynowego, które mogą dobrze sprawdzać się w przypadku złożonych danych, takich jak zdjęcia satelitarne. Interfejsy API uczenia maszynowego w Earth Engine nie obsługują deep learningu ani sieci neuronowych. Aby z nich korzystać, musisz użyć platformy takiej jak TensorFlow lub PyTorch i wytrenować model poza Earth Engine.

Możesz też trenować model poza Earth Engine, jeśli znasz już platformę taką jak scikit-learn do klasycznego uczenia maszynowego lub XGBoost do drzew decyzyjnych z gradientowym wzmacnianiem.

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

Eksportowanie danych z Earth Engine na potrzeby trenowania

Uzyskiwanie prognoz z modelu spoza Earth Engine

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

Inne powody trenowania modeli poza Earth Engine

Oprócz znajomości i preferencji możesz wytrenować model poza Earth Engine, jeśli chcesz używać architektur modeli (np. konwolucyjnych sieci neuronowych), które nie są obsługiwane przez interfejsy Earth Engine API do uczenia maszynowego, jeśli chcesz korzystać z większej liczby funkcji Vertex AI lub jeśli napotkasz ograniczenia skalowania w przypadku interfejsów Earth Engine API do uczenia maszynowego.

Limity zbioru treningowego

Trenowanie z użyciem ee.Classifier lub ee.Clusterer jest zwykle skuteczne w przypadku zbiorów danych o rozmiarze do 100 MB. Przyjmując w przybliżeniu precyzję 32-bitową (czyli zmiennoprzecinkową), można uwzględnić zbiory danych treningowych, które spełniają następujące warunki (gdzie n to liczba przykładów, a b to liczba pasm):

nb ≤ (100 * 2 20) / 4

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

Limity wnioskowania

Earth Engine przetwarza kafelki obrazów o wymiarach 256 x 256 pikseli, więc żądania wnioskowania dotyczące obrazów muszą mieć mniej niż 400 pasów (przy założeniu 32-bitowej precyzji obrazów).

Klasyfikator możesz wytrenować ponownie więcej niż raz, aby zachować zbiór danych dla każdego 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 musi mieć mniej niż 100 MB. Wiele 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
      })