作者:Karsten Noe
編譯:ronghuaiyang
導讀
透過使用預訓練網路在遙感影像應用中減少對標註資料的需求。
深度學習是一個了不起的方法,用於遙感資料集,如衛星或航空照片的目標檢測和分割/匹配。然而,就像深度學習的許多其應用場景一樣,獲得足夠的帶標註的訓練資料可能會耗費大量的時間。在這篇文章中,我將介紹一些我們的工作,即使用預先訓練好的網路來在遙感資料的目標檢測任務中避免標註大型訓練資料集的大量繁瑣工作。
2019年9月中旬,我參加了北歐遙感會議。從許多會談中可以明顯看出,深度學習已經進入許多遙感專家的工具箱。觀眾們對這個話題的興趣似乎很大,他們討論了在各種應用中使用深度學習技術的影響和適用性。
討論的內容之一是使用為一種資料(通常是自然影像)開發和訓練的神經網路,並將其應用於其他型別(遙感)資料來源中的實踐。例如,來自挪威計算中心的Øivind Due Trier展示了一項工作,在一個為計算機視覺應用開發的標準的物體檢測網路應用於過濾海拔地圖上,為了定位挪威考古遺址。這裡,來自聽眾的反對意見是,使用這個模型沒有意義。我強烈反對這一點,儘管神經網路是為自然影像開發的,但在其他資料來源上測試它也是有意義的。在這種情況下,演示者可以演示它的工作原理!在我看來,甚至嘗試在資料來源之間遷移學習也是有意義的 —— 為什麼用在另一種資料集上訓練的濾波器來初始化網路會比隨機初始化更糟糕呢?開發的模型可能太大,容易過擬合,但是使用現有程式碼庫和預訓練過的模型進行快速試驗的好處往往太大,因此進行試驗是很有意義的。
在這篇文章的其餘部分,我將展示一些我們在實驗室中所做的工作,這些工作是將一個在一個領域(ImageNet自然影像)訓練過的網路用於在另一個領域(航拍影像)進行基於影像的搜尋。希望我能使你相信這種方法是有意義的。我並不是說ImageNet網路可以得到最好的結果,而是說在考慮可能需要的標註工作量時,使用跨域網路確實有意義。
視覺搜尋以及所需的訓練資料
深度學習或其他機器學習技術可用於開發識別影像中物體的魯棒方法。對於來自飛機的航拍影像或高解析度衛星照片,這將使不同物體型別的匹配、計數或分割成為可能。然而,使用深度學習需要大量的訓練資料,除非你已有了可用的用於所需的物體類別的註冊資料,而建立這樣一個訓練資料集是一個非常耗時的過程。
因此,在與哥本哈根市的合作中,我們朝著一種工具邁進了一步,該工具可以用於匹配所需的物體型別,而不需要預先建立訓練資料。該工具基於之前的一個專案背後的技術。這個線上演示可以讓你點選丹麥航拍影像資料集上的一個地方,並檢視丹麥的100個看起來最相似的地方。相似度度量是基於一個訓練有素的神經網路來區分不同的物體型別。例如,點選遊艇碼頭或風力渦輪機將會產生以下結果:
基本上,該技術的工作原理是將資料集分割成一堆小片段(在本例中是4800萬個片段),每個片段執行一個Resnet-34網路,該網路訓練用來區分ImageNet資料集中的1000個不同物體。我們沒有使用最終的分類(1000個類中的一個),而是從網路中為每個片段提取一個所謂的描述符,它由2048個數字組成。為了節省記憶體和減少計算負擔,我們訓練了一個自動編碼器神經網路來壓縮2048個數字到512位。在那之後,來自航拍影像資料集的4800萬個影像片段可以在不到80毫秒內與一個新的片段相比較!autoencoder是針對這個特定的資料集進行訓練的,這意味著它可以以自監督的方式擬合相關的特徵。
在一開始,這個解決方案有一些弱點,為了使技術更健壯,我們解決了:
- 我們改進了旋轉不變性,基於從網路輸出提取的描述子,對影像片段旋轉0, 90, 180和270度。
- 基於不同尺度的片段計算描述符。這可以找到不同大小的物體。
- 我們開發了一種“refining”搜尋的互動式方法,使得匹配不只是基於單個片段,而是基於多個片段。
從2016年公開的12.5釐米解析度的丹麥spring航拍影像資料集中,我們在哥本哈根周圍的以下區域計算了3種不同比例的8,838,984個片段的描述符:
互動式匹配
互動式匹配目前還處於原型階段,最好透過一個示例來解釋:假設我們想要對映一個區域中航行的所有船隻。我們首先選擇一個包含一艘船的片段:
基於所儲存的描述符,系統計算所選片段與所有其片段出之間的“距離”(相似性)。然後,排序完成,100個最相似的片段顯示給使用者:
可以看到,這些片段中有一些包含船隻,但結果遠遠不夠好。使用者現在可以選擇一些他滿意的片段:
然後,將所選擇的所有片段和資料庫中所有片段的描述符進行比較,再根據它們的平均相似距離進行排序。這就產生了下面的前100名:
可以看到有顯著的改善。我們可以選擇再執行一次迭代搜尋,透過選擇更多的我們滿意的片段,並再次執行排序:
船隻仍在前100名之列,這是一個好跡象。請注意,我們之前標記為滿意的片段不再出現在互動式細分中。
從排序到匹配
迭代方法的結果是對880萬個片段進行排序,基於在互動細化過程中選擇的片段的平均相似距離。理想情況下,應該有個邊界,前N個片段包含船隻,剩下的片段是沒有的。然而,在實際中,更確切地說,是前M個片段包含船隻,之後在片段M和片段N之間有一個間隔,其中一些包含船隻,而不是所有都包含船隻。在M之後的片段被假設不包含船,以避免誤報。我們建立了一個快速而粗糙的使用者介面,使用者可以在其中檢查已排序的片段,併為M和N建立一些有用的值。
如果排序是好的,如果M和N被合理地設定,你現在就有了乾淨的訓練資料,包括包含船隻的片段(排序M)和不包含船隻的片段(排序N)。這可以用來訓練一個分類網路(或者可能的目標檢測網路)來識別船隻。然而,在我們的例子中,我們選擇測試一種更簡單的啟發式來匹配船:我們在排序中從M之前選擇了100個隨機的片段(正樣本),在N之後選擇了100個隨機的片段(負樣本)。這些片段組成了一個200個樣本的比較集。對於M和N之間的每個片段,我們找到與比較集中描述符最相似的兩個片段。如果這兩個片段都是正樣本,片段被接受為一條船,並且片段的輪廓被儲存為一個多邊形。對於所有正的示例樣本(排序rank<M),也建立一個多邊形。結果概覽如下:
放大後,你可以看到像這樣的東西(由於某些原因,包圍框少了一條邊):
匹配並不完美,但在不到一刻鐘的時間內,該技術可以提供情況的概述。與此同時,你也為訓練資料集創造了一個很好的起點,可以用來訓練神經網路或其他機器學習方法。
匹配樹木
用同樣的重複的過程來匹配樹木樹,得到一個像這樣的匹配:
放大,看起來是這樣:
同樣,這個匹配並不完美,但它為進一步的工作提供了一個良好的起點。
我希望這篇文章在如何使用預訓練的神經網路的物體定位方面能激發一些靈感,比如從地圖中提取訓練資料。我很有興趣瞭解更多潛在的使用案例,所以如果你曾經需要在大圖片(如地圖)中尋找特定的物體,請留下評論!
另外,我非常渴望聽到你的想法,如何使用自監督的方法來建立一個更好的影像patch的嵌入表示。
英文原文: