TensorFlow と Cloud AI Platform を使用した予測

TensorFlow は、ディープラーニングなどの高度な ML 手法をサポートするオープンソース ML プラットフォームです。このページでは、Earth Engine の TensorFlow 固有の機能について説明します。TensorFlow モデルは Earth Engine の外部で開発およびトレーニングされますが、Earth Engine API には、トレーニング データとテストデータを TFRecord 形式でエクスポートし、TFRecord 形式で画像をインポート/エクスポートするメソッドが用意されています。Earth Engine のデータで TensorFlow を使用するパイプラインを開発する方法については、TensorFlow の例のページをご覧ください。Earth Engine が TFRecord ファイルにデータを書き込む方法については、TFRecord ページをご覧ください。

ee.Model

ee.Model パッケージは、TensorFlow をベースとする ML モデルとのやり取りを処理します。

AI Platform でホストされているモデルの操作

新しい ee.Model インスタンスは ee.Model.fromAiPlatformPredictor() で作成できます。これは、Earth Engine データをテンソルにパッケージ化し、予測リクエストとして Google AI Platform に転送し、レスポンスを自動的に Earth Engine データ型に再構成する ee.Model オブジェクトです。モデルとその入力のサイズと複雑さによっては、大量の予測に対応するために AI Platform モデルの最小ノードサイズを調整することが必要になる場合があります。

Earth Engine では、AI Platform モデルで TensorFlow の SavedModel 形式を使用する必要があります。ホストされているモデルが Earth Engine とやり取りするには、その入出力が TensorProto 交換形式(特に base64 でシリアル化された TensorProto)と互換性がある必要があります。これを簡単にするために、Earth Engine CLI には、入力/出力形式の変換に必要なオペレーションで既存の SavedModel をラップする model prepare コマンドがあります。

ee.Model.fromAiPlatformPredictor() でモデルを使用するには、モデルを使用するための十分な権限が必要です。具体的には、ユーザー(またはモデルを使用するすべてのユーザー)には、少なくとも ML Engine モデルユーザーのロールが必要です。モデルの権限は、Cloud コンソールのモデルページで検査および設定できます。

地域

モデルにはリージョン エンドポイントを使用し、モデルの作成時、バージョンの作成時、ee.Model.fromAiPlatformPredictor() でリージョンを指定する必要があります。任意のリージョンを使用できます(グローバルは使用しないでください)。ただし、us-central1 を使用することをおすすめします。REGIONS パラメータは指定しないでください。Cloud コンソールからモデルを作成する場合は、リージョン ボックスがオンになっていることを確認します。

料金

画像予測

model.predictImage() を使用して、ホストされているモデルを使用して ee.Image の予測を行います。predictImage() の戻り値の型は ee.Image です。これは、地図に追加したり、他の計算で使用したり、エクスポートしたりできます。Earth Engine は、必要に応じて入力バンドを自動的にタイル化し、出力投影を調整してスケールの変更とオーバータイリングを行います。(タイリングの仕組みの詳細については、TFRecord のドキュメントをご覧ください)。バンドがスカラーの場合でも、Earth Engine は常に 3D テンソルをモデルに転送します(最後のディメンションは 1 になります)。

ほとんどの畳み込みモデルには、固定された入力投影(モデルがトレーニングされたデータの投影)があります。この場合、ee.Model.fromAiPlatformPredictor() の呼び出しで fixInputProj パラメータを true に設定します。予測を可視化する際は、固定入力投影を持つモデルをズームアウトする際に注意してください。これは、こちらに記載されている理由と同じです。特に、広い空間範囲にズームすると、データのリクエストが多すぎる結果、AI Platform の速度低下や拒否が発生する可能性があります。