Earth Engine の ML

機械学習 API

機械学習(ML)は、地球観測データを分析するための強力な手法です。Earth Engine には、使いやすい API を使用して一般的なシナリオ向けの ML モデルを構築して使用できる機能が組み込まれています。

一般的な ML タスクは、衛星画像内のピクセルを 2 つ以上のカテゴリに分類することです。このアプローチは、土地利用土地被覆のマッピングやその他の一般的なアプリケーションに役立ちます。

  • 教師あり分類: 土地を分類する ML 手法の一つは、グラウンド トゥルースのサンプルを使用して、クラス間の差異をモデルに学習させることです。Earth Engine の組み込みの教師あり分類子は、このプロセスをサポートしています。
  • 教師なし分類: 教師なし分類では、トレーニング アルゴリズムにグラウンド トゥルース サンプルは提供されません。代わりに、アルゴリズムは、固有の違いに基づいて使用可能なデータをクラスタに分割します。Earth Engine の教師なし分類器は、グラウンド トゥルース データが存在しない場合、最終的なクラス数が不明な場合、または迅速なテストを行う場合に特に便利です。
  • 回帰: 分類モデルは各入力を離散クラスにバケット化しようとしますが、回帰モデルは各入力の連続変数を予測しようとします。たとえば、回帰モデルは水質、森林率、雲量、作物の収量を予測できます。詳細については、ee.Reducers の線形回帰のセクションをご覧ください。

Earth Engine 外でのトレーニングと予測

ディープ ラーニングとニューラル ネットワークは、衛星画像などの複雑なデータに適した ML 技術です。Earth Engine の Machine Learning API では、ディープラーニングもニューラル ネットワークもサポートされていません。これらの機能を利用するには、TensorFlow や PyTorch などのフレームワークを使用して、Earth Engine の外部でモデルをトレーニングする必要があります。

従来の機械学習用の scikit-learn や、勾配ブースト決定木用の XGBoost などのフレームワークに精通している場合は、Earth Engine の外部でトレーニングすることもできます。

最後に、データセットが非常に大きく、下記の制限を超えている場合は、Earth Engine の外部でモデルをトレーニングすることをおすすめします。

トレーニング用に Earth Engine からデータをエクスポートする

Earth Engine 外のモデルから予測を取得する

Earth Engine の外部でモデルをトレーニングする場合、そのモデルから予測を取得する方法はいくつかあります。

  • Earth Engine の ee.Model パッケージを使用すると、Earth Engine のデータと Google の Vertex AI でホストされているトレーニング済みモデルを使用して予測できます。カスタム トレーニング済みモデルを Vertex AI でホストし、ee.Model.fromVertexAi を使用して Earth Engine で直接推論を実行できます。詳細については、Vertex AI でホストされているモデルへの接続をご覧ください。
  • または、土地被覆分類チュートリアルでは、Cloud Functions などのクラウド サービスを使用して予測を行う方法について説明しています。

Earth Engine 以外でモデルをトレーニングするその他の理由

使い慣れた環境や好みに加えて、Earth Engine の Machine Learning API でサポートされていないモデル アーキテクチャ(畳み込みニューラル ネットワークなど)を使用する場合、Vertex AI のより多くの機能を使用する場合、または Earth Engine の Machine Learning API でスケーリングの上限に達した場合は、Earth Engine の外部でモデルをトレーニングすることをおすすめします。

トレーニング セットの上限

ee.Classifier または ee.Clusterer を使用したトレーニングは、通常、最大 100 MB のデータセットで効果的です。非常に大まかなガイドラインとして、32 ビット(浮動小数点数)の精度を前提とすると、次の条件を満たすトレーニング データセットに対応できます(ここで、n はサンプル数、b はバンド数です)。

nb ≤ (100 * 2 20) / 4

たとえば、100 個のバンドを使用してトレーニングする場合、トレーニングに使用するサンプル数は 200,000 未満にする必要があります。

推論の上限

Earth Engine は 256 x 256 の画像タイルを取り扱うため、画像の推論リクエストのバンドの数が 400 未満である必要があります(画像の精度が 32 ビットであると想定)。

分類システムを複数回再トレーニングして、各トレーニング実行のデータセットを制限内に収めることができます。

      var trainings = ee.List.sequence(0, 3).map(function(cover) {
          return image.addBands(landcover.eq(cover).stratifiedSample()
      })

      var classifier = ee.Classifier.smileCart()
          .train(trainings.get(0), "cover")
          .train(trainings.get(1), "cover")
          .train(trainings.get(2), "cover")
          .train(trainings.get(3), "cover")
    

モデルサイズの上限

また、モデル自体は 100 MB 未満である必要があります。Google の分類システムの多くは、複雑さとサイズを制限するように構成できます。次に例を示します。

      var classifier = ee.Classifier.smileRandomForest({
          numberOfTrees: 10,
          minLeafPopulation: 10,
          maxNodes: 10000
      })