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 .