API машинного обучения
Машинное обучение (МО) — мощный метод анализа данных наблюдения за Землей. Earth Engine обладает встроенными возможностями, позволяющими пользователям создавать и использовать модели МО для распространённых сценариев с помощью простых в использовании API.
Распространенной задачей машинного обучения является классификация пикселей на спутниковых снимках по двум или более категориям. Этот подход полезен для картографирования землепользования и других популярных приложений.
- Контролируемая классификация: один из методов машинного обучения для классификации земель заключается в использовании реальных примеров для обучения модели различать классы. Встроенные контролируемые классификаторы Earth Engine поддерживают этот процесс.
- Неконтролируемая классификация: При неконтролируемой классификации обучающему алгоритму не предоставляются истинные примеры. Вместо этого алгоритм делит доступные данные на кластеры на основе их внутренних различий. Неконтролируемые классификаторы Earth Engine особенно полезны, когда отсутствуют истинные данные, когда неизвестно окончательное количество классов или когда требуется провести быстрые эксперименты.
- Регрессия: В то время как модель классификации пытается отнести каждый входной параметр к дискретному классу, регрессионная модель пытается предсказать непрерывную переменную для каждого входного параметра. Например, регрессионная модель может предсказать качество воды, процент лесного покрова, процент облачности или урожайность. Подробнее см. в разделе «Линейная регрессия» на сайте ee.Reducers .
Обучение и прогнозирование вне Earth Engine
Глубокое обучение и нейронные сети — это методы машинного обучения, которые хорошо подходят для сложных данных, таких как спутниковые снимки. Ни глубокое обучение, ни нейронные сети не поддерживаются в API машинного обучения Earth Engine. Чтобы воспользоваться ими, вам потребуется использовать фреймворк, например TensorFlow или PyTorch, и обучать свою модель вне Earth Engine.
Вы также можете захотеть провести обучение вне Earth Engine, если вы уже знакомы с фреймворком типа scikit-learn для классического машинного обучения или XGBoost для деревьев решений с градиентным усилением.
Наконец, вы можете захотеть обучить модель вне Earth Engine, если ваш набор данных очень большой и превышает ограничения, указанные ниже.
Экспорт данных из Earth Engine для обучения
- Формат данных TFRecord оптимизирован для обучения в TensorFlow. Страница примеров машинного обучения включает несколько рабочих процессов TensorFlow , демонстрирующих обучение модели с использованием TFRecords.
- В качестве альтернативы, для примера того, как загрузить данные с помощью Apache Beam, размещенного в Google Cloud Dataflow, а затем обучиться в Vertex AI с помощью TensorFlow, посетите, пожалуйста, учебное пособие по классификации земельного покрова и проработайте его с помощью совместного блокнота.
Получение прогнозов из модели, не использующей Earth Engine
Если вы обучаете модель вне Earth Engine, у вас есть несколько вариантов получения прогнозов с помощью этой модели.
- Пакет
ee.Model
от Earth Engine позволяет делать прогнозы, используя данные Earth Engine и обученную модель, размещённую в Vertex AI от Google. Вы можете разместить свою обученную модель в Vertex AI и выполнять логический вывод непосредственно в Earth Engine с помощьюee.Model.fromVertexAi
. Подробнее см. в руководстве по прогнозированию изображений или в руководстве по прогнозированию таблиц . - В качестве альтернативы, в руководстве по классификации земельного покрова показано, как можно делать прогнозы с использованием облачного сервиса, например Cloud Functions.
Другие причины обучения моделей вне Earth Engine
Помимо знакомства и предпочтений, вы можете захотеть обучить модель вне Earth Engine, если вы хотите использовать архитектуры моделей (например, сверточные нейронные сети), которые не поддерживаются API машинного обучения Earth Engine, если вы хотите использовать больше возможностей Vertex AI или если вы сталкиваетесь с ограничениями масштабирования при использовании API машинного обучения Earth Engine.
Пределы обучающего набора
Обучение с использованием ee.Classifier
или ee.Clusterer
, как правило, эффективно для наборов данных объёмом до 100 МБ. В качестве очень грубого предположения, предполагающего 32-битную (т.е. с плавающей точкой) точность, это может работать с обучающими наборами данных, удовлетворяющими следующим условиям (где n — количество примеров, b — количество диапазонов):
nb ≤ (100 * 2 20 ) / 4
Например, если вы обучаете с использованием 100 диапазонов, количество примеров, используемых для обучения, должно быть менее 200 000.
Пределы вывода
Поскольку Earth Engine обрабатывает фрагменты изображений размером 256x256, запросы на вывод изображений должны иметь менее 400 полос (опять же, предполагая 32-битную точность изображений).
Вы можете переобучать классификатор несколько раз, чтобы сохранить набор данных для каждого цикла обучения в определенных пределах.
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")
Ограничения на размер модели
Кроме того, сама модель должна быть размером менее 100 МБ. Многие из наших классификаторов можно настроить так, чтобы ограничить их сложность и, следовательно, размер. Например:
var classifier = ee.Classifier.smileRandomForest({ numberOfTrees: 10, minLeafPopulation: 10, maxNodes: 10000 })