Машинное обучение в Earth Engine

API машинного обучения

Машинное обучение (ML) — это мощный метод анализа данных наблюдения Земли. 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 для обучения

Получение прогнозов из модели вне Earth Engine

Если вы обучаете модель вне Earth Engine, у вас есть несколько вариантов получения прогнозов на основе этой модели.

Другие причины обучать модели вне 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
      })