Earth Engine の ML

機械学習 API

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

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

  • 教師あり分類: 土地を分類する ML 手法の 1 つに、グラウンド トゥルースの例を使用して、クラスを区別するようにモデルをトレーニングする方法があります。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 で直接推論を実行できます。詳細については、画像予測ガイドまたはテーブル予測ガイドをご覧ください。
  • また、土地被覆分類チュートリアルでは、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 は 256x256 の画像タイルを処理するため、画像に対する推論リクエストのバンド数は 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 未満である必要があります。多くの分類子は、複雑さ、つまりサイズを制限するように構成できます。次に例を示します。

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