Прогнозы изображений

Earth Engine предоставляет ee.Model в качестве соединителя для моделей, размещенных на Vertex AI . Этот соединитель отправляет данные изображения или таблицы в виде запросов онлайн-прогнозирования обученной модели, развернутой на конечной точке Vertex AI. Результаты модели затем возвращаются в виде изображений или таблиц Earth Engine.

ee.Model.predictImage

Используйте model.predictImage() чтобы делать прогнозы для ee.Image с использованием размещенной модели. ee.Image используется для создания фрагментов (патчей изображений) полос, которые затем отправляются в размещенную модель. Тип возвращаемого значения predictImage() — это ee.Image , который можно добавить на карту, экспортировать или использовать в других вычислениях.

Параметры ввода

При выполнении вывода с использованием ee.Image в коннекторе ee.Model используется ряд параметров. Эти элементы управления предназначены для входных каналов и свойств, мозаики фрагментов входного изображения, размера фрагмента выходного изображения и диапазонов выходного изображения.

Полосы и свойства

Для указания входных диапазонов и свойств используйте следующие параметры:

inputProperties

inputProperties — это список имен свойств, которые пересылаются в каждый экземпляр прогноза. Поддерживаются числовые, строковые и логические свойства.

inputTypeOverride

inputTypeOverride — это словарь имен свойств и/или полос с предоставленной информацией о конкретном типе и измерении. Это может быть необходимо, поскольку многие алгоритмы Earth Engine создают выходные данные с динамическими типами, которые невозможно вывести до времени выполнения.

Например, если вы вычисляете «уклон», сопоставляя функцию ee.Terrain.slope с коллекцией, вам нужно будет указать выходной тип «наклона» во входных данных вывода следующим образом:

inputTypeOverride = {
  "slope": {
    "type": "PixelType",
    "precision": "float",
    "dimensions": 0,
    "min": -100.0,
    "max": 100.0
  }
}

СОВЕТ: Если вы столкнулись с сообщением об ошибке, что полоса или свойство «невозможно преобразовать в тензор», возможное решение — использовать переопределение типа, чтобы принудительно присвоить входным данным заданный тип.

inputShapes

inputShapes — это словарь названий каналов и формы массива пикселей. Чтобы отправить пиксели со значением массива модели с длиной больше 1, установите аргумент inputShapes . быть установлен. Аргумент аналогичен inputTypeOverride , но специфичен для входных форм полос для прогнозирования изображений. Например, чтобы закодировать три полосы: (1) «ndvi_series» как одномерный временной ряд с 12 значениями, (2) «temp» как скаляр и (3) «patch» как двумерный массив пикселей, используйте следующее:

inputShapes = {
  "ndvi_series": [12],  # 12 ndvi samples
  "temp": [], # scalar
  "patch": [2, 2], # 2px * 2px patch
}

outputBands

outputBands — это словарь имен выходных каналов для объекта, содержащего ee.PixelType и размеры полосы. Здесь размеры должны быть такими же, как длина массива тензорных форм. Другими словами, скалярные данные с формой () должны иметь размерность 0, 1D-данные с формой (N) должны иметь размерность 1, 2D-данные с формой (N, M) должны иметь размерность 2. Например, выходной канал с именем «B1» с пикселями в виде массива и формой задается следующим образом:

outputBands = {
  'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}

Размеры плитки

Вы управляете мозаикой изображения, используя следующие параметры:

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

Входные размеры плитки

Чтобы установить размеры входной плитки, используйте inputTileSize и inputOverlapSize . Установите эти параметры, указав пару ширины и высоты тайла в пикселях (например, [32, 32]). Общий размер патча определяется путем сложения высот и ширины inputTileSize и outputTileSize .

Например, полностью сверточная модель может ожидать ввода с формой (256 x 256 x каналов). Если нас беспокоят эффекты краев между результатами вывода, мы можем отбросить пиксели inputOverlapSize[0] слева и справа и inputOverlapSize[1] сверху и снизу каждого результата вывода. Это приведет к большему количеству вызовов прогнозирования, чтобы полностью охватить область прогнозирования.

Например, если наша модель ожидает (256 x 256 x 3), и мы хотим отбросить 32 граничных пикселя, мы должны указать следующее:

ee.Model({
  "endpoint": endpoint,
  "inputTileSize": [192, 192],
  "inputOverlapSize": [64, 64],
  # rest omitted.
}

ПРИМЕЧАНИЕ. Параметр inputOverlapSize представляет собой полное перекрытие по координатам x и y. Если вы хотите создать буфер из N пикселей вокруг всего изображения, то перекрытие будет равно [2N, 2N]

Размер выходной плитки

Чтобы установить размер выходной плитки, установите аргумент outputTileSize . Если outputTileSize не установлен, размер плитки по умолчанию идентичен inputTileSize .

Для некоторых моделей выходной размер может отличаться от входного. Например, модель классификации может принимать входные данные в форме (256, 256, Каналы), но возвращать тензоры с формой (1, 1, 1). В этом случае для outputTileSize необходимо установить значение [1, 1] . Это довольно часто встречается в моделях, которые возвращают выходные данные вероятности (с уменьшенным разрешением) некоторой характеристики тайла.

Проекция

Почти все сверточные модели предполагают ввод фиксированной проекции. Это связано с тем, что большинство сверточных моделей обучаются в фиксированном масштабе. В этом случае установите для параметра fixInputProj значение true при вызове ee.Model.fromVertexAi() и укажите проекцию данных в параметре proj .

Проекция входного изображения и фиксированная проекция модели будут влиять на выходные значения. См. руководство по перепроецированию EE .