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
- Format danych TFRecord jest zoptymalizowany pod kątem trenowania w TensorFlow. Na stronie z przykładami uczenia maszynowego znajdziesz kilka przepływów pracy TensorFlow , które pokazują, jak trenować model za pomocą TFRecords.
- Możesz też zapoznać się z przykładem pobierania danych za pomocą Apache Beam hostowanego w Google Cloud Dataflow, a następnie trenowania w Vertex AI przy użyciu TensorFlow. W tym celu otwórz samouczek dotyczący klasyfikacji pokrycia terenu i postępuj zgodnie z instrukcjami w notatniku Colab.
Uzyskiwanie prognoz z modelu spoza Earth Engine
Jeśli wytrenujesz model poza Earth Engine, masz kilka opcji uzyskiwania prognoz z tego modelu.
-
Pakiet
ee.Model
Earth Engine umożliwia prognozowanie na podstawie danych w Earth Engine i wytrenowanego modelu hostowanego w Vertex AI od Google. Możesz hostować wytrenowany niestandardowo model w Vertex AI i przeprowadzać wnioskowanie bezpośrednio w Earth Engine za pomocąee.Model.fromVertexAi
. Więcej informacji znajdziesz w przewodniku po prognozach dotyczących obrazów lub w przewodniku po prognozach dotyczących tabel. - Możesz też zapoznać się z samouczkiem dotyczącym klasyfikacji pokrycia terenu, w którym pokazujemy, jak przeprowadzać prognozy za pomocą usługi w chmurze, takiej jak Cloud Functions.
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 })