機械学習 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 からデータをエクスポートする
- TFRecord データ形式は、TensorFlow でのトレーニング用に最適化されています。 機械学習の例のページには、TFRecord を使用してモデルをトレーニングする方法を示す TensorFlow ワークフローがいくつか含まれています。
- また、Google Cloud Dataflow でホストされている Apache Beam を使用してデータをダウンロードし、TensorFlow を使用して Vertex AI でトレーニングする方法の例については、土地被覆分類チュートリアルをご覧ください。Colab ノートブックに沿って操作してください。
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 })