Earth Engine は、Vertex AI でホストされているモデルへのコネクタとして ee.Model
を提供します。このコネクタは、画像データまたはテーブルデータをオンライン予測リクエストとして、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
}
}
ヒント: バンドまたはプロパティを「テンソルに変換できない」というエラー メッセージが表示された場合は、型のオーバーライドを使用して入力を特定の型に強制的に変換するのが解決策の 1 つです。
inputShapes
inputShapes
は、バンド名と配列ピクセル形状の辞書です。長さが 1 より大きいモデルの配列値ピクセルを送信するには、inputShapes
引数を設定します。この引数は inputTypeOverride
に似ていますが、画像予測の入力バンドシェイプに固有のものです。たとえば、3 つのバンド((1)「ndvi_series」を 12 個の値を持つ 1 次元時系列として、(2)「temp」をスカラーとして、(3)「patch」を 2 次元ピクセル配列としてエンコードするには、次のようにします。
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, チャンネル数) の入力を受け付けますが、(1, 1, 1) のテンソルを返します。この場合、outputTileSize
を [1, 1]
に設定する必要があります。これは、一部のタイル特性の確率の出力を(低解像度で)返すモデルでよく見られます。
予測
ほとんどの畳み込みモデルは、固定された投影の入力を想定しています。これは、ほとんどの畳み込みモデルが固定スケールでトレーニングされるためです。この場合、ee.Model.fromVertexAi()
の呼び出しで fixInputProj
パラメータを true に設定し、proj
パラメータでデータのプロジェクションを指定します。
入力画像のプロジェクションとモデルの固定プロジェクションは、出力値に影響します。EE の再投影ガイドをご覧ください。