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,形状为 (N) 的一维数据应具有维度 1,形状为 (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]
。对于返回某些功能块特征概率输出的模型(在较低分辨率下),这种情况非常常见。
预测值
几乎所有卷积模型都需要固定投影的输入。这是因为大多数卷积模型都是在固定尺度上训练的。在这种情况下,请在对 ee.Model.fromVertexAi()
的调用中将 fixInputProj
参数设置为 true,并在 proj
参数中指定数据的投影。
输入图片的投影和模型的固定投影将影响输出值。请参阅 EE 重新投影指南。