從農作物生長,水域變化分析,收成預測到自然災害(火災,洪水)檢測,經濟發展分析,都可以看到EO (Earth Observation) 數據的身影。只要提供足夠數量的高訪問頻率的高解析度空間圖像,許多隱藏其中的特定信息,模式就可以自動的通過機器學習方面被提取出來。Eo-learn正是這種為了更簡便輕快的實現這種工作流程原型的一組工具。

基於eo-learn的水體檢測工作流程

什麼是eo-learn?

eo-learn是一個開源庫,同時也是一座介於機器學習和衛星圖像的橋樑,旨在幫助衛星圖像分析專家更高效簡便的創建基於機器學習的方法分析衛星圖像,另一方面也為機器學習專家分析衛星圖像提供了方便。

基於模塊化設計的eo-learn易於上手,同時也容易互相協作。復用特定的eo-task,例如eo-value-extraction 流程:雲層模化-多圖像處理-提取特徵-分類,等等。使用現有的task是免費的,並且鼓勵每個使用者優化整個流程。我們堅信整個工具依然有許多進步的空間,誰知道它會不會有朝一日拯救世界呢?總之,我們希望越來越多的人使用並且不斷進步。

概述

eo-learn使用numpy和shapely geometry存儲處理衛星圖像數據。Github上已開源~

eo-learn的主要模塊有EOPatch,EOTask,EOWorkflow等。

EOPatch

所有的數據都在EOPatch里存儲,Python詞典里存儲:

  • numpy和sshapely向量時序空間信息 (例如 Sentinel-2, Landsat 8 Sentinel-1 bands, cloud masks等)
  • 向量非時序空間信息(Digital Elevation Model, target LULC maps, count of valid pixels等)
  • 標量時序空間信息(標籤信息,狀態變化信息等)

一個EOPatch實例被唯一定義為包含邊界坐標信息的bbox,和相對應的時間間隔。任何可被python可讀取的數據類型都可以存儲到EOPatch裡面。

EOPatch實例

EOTask

EOTask用來在EOPatch實例上執行特定操作,不同功能的task分別在不同的eo-learn子庫里,常用的如下:

  • eo-learn-core: 核心的子庫,實現基本的模塊構造(EOPatch, EOTask,EOWorkflow)和常用的功能。
  • eo-learn-io: 從sentinel-hub和Geopedia獲取數據的輸入/輸出相關操作。
  • eo-learn-mask: 計算雲層mask和其他數據mask的集合。
  • eo-learn-feature: 獲取數據特徵的集合,包括差分數據以及計算空間時間等。
  • eo-learn-geometry: 處理空間變換的子庫,例如向量到光柵的變換,從mask中取樣label等
  • eo-learn-ml-tools: 為了搭建和驗證機器學習任務的庫。
  • eo-learn-registration: 實現多圖像聯合處理的子庫。

完整的task列表可以點擊這裡,如果沒有找到合適的task,可以自己現場擼一個出來~

class FooTask(EOTask):
def __init__(self, foo_param):
self.foo_param = foo_param

def execute(self, eopatch, *, patch_specific_param):
# do what foo does on input eopatch and return it
return eopatch

用戶自己定義的task可以通過代碼pull 個reqest用來造福社區~

EOWorkflow

最後利用EOWorkflow串聯起所有的task就完成了整體的流程。EOWorkflow允許定義一個無圈圖來表示整個流程,其中每個task被表示成頂點,EOPatch逐個通過邊流過這些節點,最終完成整個流程。一旦eoworkflow被定義好,eopatch就可以並行的輸入,這樣即使面對大數目的數據,eoworkflow仍然可以提供詳盡的日誌記錄信息和執行監控信息,例如內存佔用,異常,輸入參數等。

應用實例

Eo-learn提供了處理衛星圖片所需的最常見的各種操作,所以可以構建完整的遙感衛星圖像應用。本專欄里就有一個系列專門介紹陸地覆蓋分類的應用。其他應用還包括水體自動監控系統,

下面是一些實例的鏈接:

Multi-year time series of multi-spectral data viewed and analyzed in Sentinel Hub?

medium.com

Observing landscape changes from space?

medium.com

sentinel-hub/eo-learn?

github.com
圖標

歡迎點贊,留言,評論~


推薦閱讀:
相关文章