圖片預測

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) 的 1D 資料應有 1 個維度,形狀為 (N, M) 的 2D 資料應有 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, Channels) 形狀的輸入,但傳回形狀為 (1, 1, 1) 的張量。在這種情況下,outputTileSize 必須設為 [1, 1]。如果模型會傳回某些圖塊特徵的機率輸出內容 (解析度較低),這種情況相當常見。

預測值

幾乎所有卷積模型都預期輸入固定投影。這是因為大多數卷積模型都是以固定比例訓練。在這種情況下,請在呼叫 ee.Model.fromVertexAi() 時將 fixInputProj 參數設為 true,並在 proj 參數中指定資料的投影。

輸入圖片的投影和模型的固定投影會影響輸出值。請參閱 EE 重新投影指南。