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
- Format danych TFRecord jest zoptymalizowany pod kątem trenowania w TensorFlow. na stronie z przykładami uczenia maszynowego znajdziesz kilka przepływów pracy w TensorFlow, które pokazują, jak trenować model za pomocą plików TFRecords.
- Jeśli chcesz zobaczyć przykład pobierania danych za pomocą Apache Beam hostowanego w Google Cloud Dataflow, a następnie trenowania w Vertex AI za pomocą TensorFlow, przeczytaj samouczek dotyczący klasyfikacji pokrycia terenu i skorzystaj z notebooka colab.
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 })