深度學習在視覺搜索和匹配中的應用
導讀
通過使用預訓練網絡在遙感圖像應用中減少對標注數據的需求。
本文引用地址:http://www.j9360.com/article/202009/418421.htm
深度學習是一個了不起的方法,用于遙感數據集,如衛星或航空照片的目標檢測和分割/匹配。然而,就像深度學習的許多其應用場景一樣,獲得足夠的帶標注的訓練數據可能會耗費大量的時間。在這篇文章中,我將介紹一些我們的工作,即使用預先訓練好的網絡來在遙感數據的目標檢測任務中避免標注大型訓練數據集的大量繁瑣工作。
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的嵌入表示。
英文原文:https://towardsdatascience.com/deep-learning-for-visual-searches-and-mapping-89b85061ef9e
評論