論文閱讀——Universal Correspondence Network
- 2020 年 11 月 30 日
- AI
一、概述
這是圖像匹配領域中一篇比較經典的論文,由斯坦福AI lab發表於2016年CVPR。本文提出了一種利用全卷積網絡直接預測dense descriptor的思路,對近兩年的很多文章都有比較大的影響。
本文的貢獻:
1.提出一種基於全卷積網絡的密集特徵提取與關聯預測結構,對任意圖像關聯任務均適用
2.提出一種在特徵空間上最近鄰搜索以在線挖掘困難負例的訓練方法,加快了網絡收斂
3.提出一個convolutional spatial transformer模塊(層)來模擬patch normalization過程
4.刷新了稀疏SFM、密集匹配、語義匹配等多個數據集的SOTA指標,並對常見的variation具有魯棒性
本文值得關注的地方:
1.本文作者直接用caffe手擼了三個新的網絡模塊:convolution spatial transformer、KNN layer和channel-wise L2Norm layer(即tf.nn.l2_normalize),動手能力非常強
2.Convolution spatial transformer是針對我們目前關心的patch normalization提出一種解決方案。雖然感覺要一次學習所有patch的變換歸一化,可能比ST難學很多,但也是目前所了解到的唯一一種在非patch-based方法中能對patch進行操作的解決方案了。能把一個對全圖apply的operation改成convolution風格,來實現對多個圖像patch apply,這一點就感覺真的很強了。
3.KNN的靈活使用:訓練中通過比較某個位置(xi,yi)的特徵與其在另一張圖像上的最近鄰之間的距離,來挖掘困難樣本;預測階段對兩個dense feature提取匹配關係時,也是在特徵空間上利用KNN搜索來達到O(N)的複雜度
另外需要加以區分的是,本文和之前讀的一些基於特徵檢測和描述的方法有些區別:本文並不涉及特徵檢測,甚至提取的特徵也並不解釋為描述子。本文解決的是輸入兩張圖像然後直接提取其各自特徵,在特徵空間上進行逐像素的最近鄰搜索,得到預測的correspondences。這種任務就是所謂的dense correspondence。
二、方法
2015年前後出現了一些基於相似度的方法(以patch-CNN為例),這類方法旨在利用CNN直接學習一個相似度函數。其模式如下圖,缺點在於對包含N個關鍵點的圖像對,需要進行O(N^2)次兩兩比較。這是本文要解決的一個主要問題。
2.1整體系統設計
本文旨在設計一個通用的圖像關聯預測器,來同時處理不同類型的圖像關聯任務:稀疏特徵匹配、稠密關聯、語義關聯等。整體流程比較清晰,用孿生網絡(兩個網絡各層權重完全共享)接收輸入圖像對(A,B),分別提取出特徵圖,然後在特徵空間找到A特徵每個像素位置在特徵B中的最近鄰,進而實現兩圖像關聯的預測。
具體網絡結構:特徵提取部分主體使用GoogLeNet(conv1 – inception_4a),然後送入convolutional spatial transformer layer,在特徵空間上進行逐像素的patch normalization操作,最後將特徵送入L2 norm layer,將每個像素位置的特徵歸一化到norm為1,便於後續比較。
下面是convolutional spatial transformer的結構示意,該模塊的物理意義是模仿patch normalization環節。
2.2 訓練
相比基於檢測和描述的方法,本文的訓練目標還算簡單,直接用了contrast loss:讓正對在特徵空間相似,而負對遠離且要大於一個margin。由於負對比較多且大多數負對的特徵距離都很遠,對優化沒有貢獻,故作者認為困難負例挖掘非常重要。作者提出了一個直觀的方式:對輸入圖像對(A,B),對圖像A特徵上某個位置,在圖像特徵B上挖掘其對應的難負例時,可以直接找到該位置特徵在圖像B特徵上的最近鄰即可。
訓練loss如下:
測試階段也是依靠特徵空間上的最近鄰搜索預測出關聯的。對輸入圖像對(A,B)分別預測得到特徵,然後A的每一個特徵位置只需要和B的特徵計算一次最近鄰即可,故測試階段的複雜度是O(N)而不是O(N^2)。
三、實驗結果
由於主要關注系統設計中的idea,對具體的任務(包括其測度)還不是很熟悉,這裡就簡單放幾張示意圖。
對於幾何匹配任務:(注意圖(a)中有兩種關鍵點:FAST關鍵點和密集關鍵點,即逐像素)
對於語義關聯任務:
四、問題記錄:
1.論文實驗部分說利用全卷積網絡得到分辨率是原圖1/4的特徵,然後再利用插值得到密集預測的特徵(這裡指的是上採樣回原圖分辨率?)以避免稀疏匹配中存在的量化誤差問題。這部分在補充材料的網絡結構圖並沒有體現?
2.感覺還是對sparse和dense的區別沒有搞得特別清楚。Dense方法是把原圖每一個像素都當做關鍵點,然後找到其在另一張圖上的最近鄰嗎?