Earth Engine 中的機器學習

機器學習 API

機器學習 (ML) 是一種強大的技術,可用於分析地球觀測資料。Earth Engine 內建功能可讓使用者針對常見情境,透過容易使用的 API 建構及使用機器學習模型。

常見的機器學習任務,就是將衛星圖像中的像素分類為兩個或更多類別。這種做法適用於土地利用/土地覆蓋圖繪製和其他熱門應用程式。

  • 監督式分類:分類土地的一種 ML 技術,就是使用真值範例教導模型區分類別。Earth Engine 內建的監督式分類器可支援這項程序。
  • 非監督式分類:在非監督式分類中,訓練演算法不會提供實際資料範例。相反地,演算法會根據內在差異,將可用資料分成不同的叢集。當您沒有實際真實資料、不知道最終類別數量,或想快速進行實驗時,Earth Engine 的無監督分類器就特別實用。
  • 迴歸:分類模型會嘗試將每個輸入值分類為獨立類別,而迴歸模型則會嘗試預測每個輸入值的連續變數。舉例來說,迴歸模型可以預測水質、森林覆蓋率、雲層覆蓋率或作物產量。詳情請參閱 ee.Reducers 的線性迴歸一節

在 Earth Engine 以外進行訓練和預測

深度學習和類神經網路是機器學習技術,可用於衛星影像等複雜資料。Earth Engine 的機器學習 API 不支援深度學習或類神經網路。如要充分利用這些功能,您必須使用 TensorFlow 或 PyTorch 等架構,並在 Earth Engine 外部訓練模型。

如果您已熟悉 scikit-learn 等架構 (用於傳統機器學習) 或 XGBoost (用於梯度提升決策樹),也建議您在 Earth Engine 外部進行訓練。

最後,如果資料集非常龐大,且超出下方所述的限制,建議您在 Earth Engine 外部訓練模型。

匯出 Earth Engine 資料以用於訓練

在 Earth Engine 以外取得模型的預測結果

如果您在 Earth Engine 外部訓練模型,可以透過幾種方式取得該模型的預測結果。

在 Earth Engine 外部訓練模型的其他原因

除了熟悉度和偏好之外,如果您想使用 Earth Engine 的機器學習 API 不支援的模型架構 (例如卷積神經網路)、想使用 Vertex AI 的更多功能,或是遇到 Earth Engine 機器學習 API 的縮放限制,建議您在 Earth Engine 外部訓練模型。

訓練集限制

使用 ee.Classifieree.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
      })