一、概述
??作為近兩年detector和descriptor joint learning(也稱one-stage)類型論文的又一代表,D2-Net是一種相當特別的結構。其特點是“一圖兩用”,即網(wǎng)絡預測出的dense tensor即是detection score maps骡送,又是description map特征圖即代表特征檢測結果又代表特征描述結果(注意預測的特征圖并不是原圖分辨率大邪菪А)。換句話說各谚,D2-Net的特征檢測模塊和描述模塊是高度耦合的。
??本文主要針對的是appearance變化較大(包括日-夜變化到千、大的視角變化等)場景下的圖像匹配任務昌渤。文章作者比較了兩種局部特征學習方法:sparse方法和dense方法。其中sparse方法高效憔四,但是在appearance變化大的場景提取不到可重復的關鍵點膀息,其原因在于特征提取器只使用淺層圖像信息,不使用語義信息了赵;dense方法則直接利用深層特征提取密集特征描述潜支,更加魯棒卻以更高的匹配時間和內存開銷為代價。
??因此作者的目的在于柿汛,提出一種足夠魯棒的sparse local feature冗酿,讓其提取的特征(興趣點)具有更好的repeatability,進而實現(xiàn)既有sparse方法的高效性络断,又有dense方法的魯棒性裁替。其核心idea是將特征提取階段延后,使得局部特征也可以利用高層語義信息貌笨,而不是只考慮低層信息弱判。
問題:關于這里的sparse和dense方法
作者這里提到sparse方法的缺陷是keypoint不夠可重復,因為這些sparse feature提取時只考慮圖像低層特征锥惋。但是這段又沒給參考文獻昌腰,所以本文究竟是針對哪些論文做的改進呢?近幾年的local feature并不會像作者說的那樣“only consider small low-level information like image regions”鞍虻遭商?難道是針對SIFT為代表的的傳統(tǒng)方法的缺陷嗎?看到下面評估部分也有和SuperPoint對比捅伤,那SuperPoint也有這個缺陷嗎株婴?
-
dense方法這幾篇文獻沒讀過,但是作者說這些方法“跳過檢測直接提取密集描述子的方法”暑认,這還是圖像匹配嗎困介?
答:閱讀了下UCN的論文,發(fā)現(xiàn)所謂密集匹配方法就是直接對輸入兩圖(A,B)預測特征然后在特征空間上進行最近鄰搜索等方法蘸际,預測出特征之間的稠密關聯(lián)座哩,簡單理解就是已知圖像A上的關鍵點就是每個像素點,然后要求它們在圖像B上的對應位置(理解的不一定準確)粮彤。
關鍵詞:A single CNN plays a dual role; joint optimization; different train/test model structure
二根穷、方法
2.1 模型結構設計
??不同于SuperPoint或者SEKD姜骡,本文雖然也是dense prediction類型的結構,但并不同時預測kpt和description兩個圖屿良,而是只預測了一個形狀為HxWxd(d為特征描述的長度)的特征圖圈澈,然后既作描述結果又作檢測結果…從spatial維度來說,該特征圖的每個像素位置是一個描述子尘惧;從channel維度來說康栈,每一個通道代表一個特征檢測器的檢測結果,總共得到d個2D響應圖喷橙,這里可以用SIFT中的高斯差分金字塔響應來類比啥么。
??后續(xù)的興趣點提取需要對這個d通道的特征圖做進一步的后處理:
??按照上面對D2特征圖的定義,如果(i,j)位置是一個興趣點贰逾,則從通道維度來說該像素位置最終的檢測結果肯定要取檢測器響應值最大的通道對應數(shù)值悬荣,這樣就選出了通道;從空間維度來說又要滿足該位置在該通道的2D map必須為一個局部最大值疙剑。即本文中的"hard feature detection":
??首先對輸入圖像構建圖像金字塔氯迂,然后在每個scale上進行forward,得到D2特征圖言缤,再把多尺度特征圖逐scale上采樣并與同分辨率融合(見下式)囚戚,得到融合后的特征圖。預測階段根據(jù)融合特征圖進行上述后處理轧简,即可提取出特征點驰坊。
??由于上述特點,網(wǎng)絡結構本身發(fā)非常簡單哮独,直接用VGG16 conv4_3之前的部分拳芙,恢復ImageNet上的預訓練權重,然后除了最后一層conv4_3之外全部凍結皮璧,只對該層做微調舟扎。不過關于模型,有兩個值得注意的地方:
??1.使用VGG16的結果比ReseNet好很多
??2.訓練時和測試時的模型結構不同
??具體來說悴务,在測試階段為了提高特征的分辨率睹限,將pool3改成一個stride為1的avg pool,隨后的三層conv dilation ratio調整為2讯檐,以維持相同的感受野羡疗。作者解釋是說訓練時為了減小內存使用比較小的特征分辨率,測試時為了提高特征定位能力别洪,將分辨率提升到原圖的1/4叨恨,并加上了一個類似SIFT中使用的局部特征提煉,然后將特征插值上采樣到原分辨率挖垛。
??不過訓練過程不能用上面的hard feature detection痒钝,因為其不可微秉颗。故作者提出了一個soft的版本,其設計思想就是模仿hard方法的通道選擇和空間位置選擇(即通道內的局部最大值):
??對于空間位置選擇送矩,作者會對特征圖的每個像素求一個α(i,j)蚕甥,得到α map(shape為[h,w,d]):
??其中N(i,j)代表以(i,j)為中心的9-鄰域。因此可見這里的局部最大值其實是在3x3區(qū)域內的最大值栋荸,而不是式(3)中寫的那樣菇怀,整個通道只輸出一個最大值。
??對于通道選擇蒸其,直接計算一個ratio-to-max得到β圖(shape為[h,w,d]):
??根據(jù)kpt的定義,score map s就應該是α map和β map的乘積map在通道維度求最大值的結果库快。最后再做一個歸一化:(問題:這個歸一化讓score map的像素值之和為1是什么意思摸袁?score map不應該用sigmoid之類的轉為0-1之間的分布比較合理嗎?)
??關于這部分還要考慮一個問題义屏,為什么D2-Net需要在訓練中提取興趣點靠汁?(比如R2D2等結構,都是直接針對kpt score map做優(yōu)化闽铐,只有實際預測時才需要根據(jù)score map提取特征點這個步驟)
??答:這個問題的理解是不正確的蝶怔,訓練中并不是提取興趣點,而是在得到”single score map"兄墅。上面的hard feature detection相當于NMS的過程踢星,輸出的是稀疏的興趣點位置坐標;而訓練檢測模塊需要hxw的score map隙咸,故先要把hxwxd的特征圖經過一個可微的步驟沐悦,處理后得到該score map。
2.2 聯(lián)合優(yōu)化目標函數(shù)設計
①triplet margin ranking loss(只考慮描述子)
??訓練描述子其實沒有太多不一樣的地方五督,就是根據(jù)輸入pair的correspondences藏否,將每一個匹配對c視為正對,不匹配對為負對充包,對構成的三元組進行訓練副签。主要問題是如何根據(jù)當前匹配對c構建最有意義的負對。作者這里用了一個基于鄰域的困難樣本挖掘策略基矮,假如當前匹配為下圖的點A和點B淆储,那么分別在I1和I2扣去A\B鄰域的區(qū)域找負對,并分別與B的描述子dB、A的描述子dA進行比較粥脚,找到所有這種負對中相似度最小的逐纬,與c構建三元組。
??以下p(c)和n(c)分別代表正對距離和負對距離灌具。m(c)代表當前匹配c的triplet loss青团。
②加入描述子優(yōu)化的triplet margin ranking loss
??由于D2特征即代表興趣點score map也代表描述子,本文的優(yōu)化需要對檢測和描述進行聯(lián)合優(yōu)化咖楣。作者在triplet margin ranking loss基礎上加入了提升檢測結果可重復性這一優(yōu)化目標督笆,具體實現(xiàn)方法是:利用輸入兩圖像中所有correspondences的檢測得分來對當前匹配計算出的triplet loss進行加權平均,如果當前匹配triplet loss很低(即該對匹配的距離遠小于其各自的最難負對)诱贿,則為了最小化loss娃肿,這一對triplet loss小(即區(qū)分度高)的correspondence自然要給更大的權值珠十;其他triplet loss大的correspondence就給小點的權值料扰。
??感覺文中式(13)的符號有點confusing,m(p(c),n(c))直接寫成,m(c)可能更加簡潔焙蹭。
三晒杈、評價
- 本文核心idea是將特征提取延后,使用網(wǎng)絡提取的深層特征進行后處理孔厉,得到用于檢測kpt的score map拯钻。與此同時作者發(fā)現(xiàn)提取到的特征也可以順便作為描述子,故提出了這種“一圖兩用”撰豺,聯(lián)合優(yōu)化的結構
- 本文論文的比較簡單粪般,但是給出的代碼實現(xiàn)非常整齊。
- D2-Net測試階段為了獲得更高的分辨率污桦,將訓練的網(wǎng)絡結構進行修改(通過減小pool stride和增大conv dilate rate維持感受野)亩歹,使得測試時可以正常加載訓練的權重,且特征分辨率更高凡橱。這種操作感覺很有創(chuàng)意捆憎,之前沒有遇到過。
- 作者在實驗階段嘗試用預訓練好的resnet作為backbone梭纹,但是結果比vgg差不少躲惰,這個也比較奇怪。