天天看點

【深度學習】深度學習在視覺搜尋和比對中的應用

作者: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的嵌入表示。