論文閱讀——R2D2: Repeatable and Reliable Detector and Descriptor

  • 2020 年 12 月 4 日
  • AI

一、概述

  本文由Naver Lab(Naver即社交軟體Line的母公司,也是韓國市值最高的互聯網公司)發表於2019 NIPS上。作者的核心觀點在於,近期的一些研究在提取興趣點時往往只考慮興趣點的可重複性(如一對匹配點在兩影像score map上的響應必須很接近),但是可重複的興趣點未必有較高的區分性,因為影像上某些區域對於匹配來說不夠可靠甚至是模稜兩可的,如一些重複紋理區域:摩天樓的窗戶、路面等。描述子的訓練應該只發生在那些對於匹配而言置信度高的區域(descriptors should be learned only in regions for which matching can be performed with high confifidence),因此要兼顧特徵檢測的可重複性以及特徵描述的可靠性。
  根據上面的觀點,本文提出的網路R2D2在對影像提取出backbone特徵之後,除了正常預測描述子和kpt score map(即可重複性)兩個分支之外,還加了一個額外的分支用於reliability map的預測,旨在表達每個像素的匹配置信度。最終提取興趣點時會將興趣點score map與reliability map每個位置的乘積作為當前位置是興趣點的概率。

二、方法

What is a good keypoint?

注意:這裡用到一個不太正式的reliabilty衡量方式:在descriptor space搜索與當前keypoint最接近的keypoint,取前者的最近鄰並對patch做比較。如果patch可分辨則認為是reliable

  在使用類似rand homograpy產生correspondence的方法時,一個常見的問題是變換後的影像中可能會出現空白區域,這種空白區域影響了影像的pixel關係,i.e., 如果想對變換前後的影像(或者對應dense pred結果)施加pixel-level監督,那這種位置上的不對應就會影響這種監督的效果。不同論文針對該問題,提出了不同的解決方法:

  本文提出了一個重要概念,descriptor reliability。

  通俗地講,描述子的reliability map類似一個mask,將某些不可靠區域(比如樹葉、海浪、摩天樓窗戶等區域)的描述子屏蔽掉。


關於這個網路的細節,我還有幾個疑問沒解決:
①在生成兩個概率圖之前,作者先將backbone特徵做了element-wise square操作,這是為了達到什麼目的?

②在生成reliability map和repeatability map時,作者的做法並不是直接回歸出HxWx1的dense map然後再送入sigmoid,而是先回歸到HxWx2的dense logits map然後再對該map求通道維度的softmax,然後取softmax後的第二個通道(第一個通道是unrepeatable/unreliable class,第二個通道反之)作為可重複/可靠性的概率。

問題:這種預測概率圖的方法相比前一種,有什麼好處?

③另外,程式碼中對reliability分支的預測實際上並不是按上圖,而是先將特徵回歸到1通道,然後送入softplus得到reliability map。

問題:為什麼?注意到repo作者貌似也不理解這種做法,認為是錯誤的寫法..

關於loss與訓練實現:

2.1 學習可重複性(其實就是預測kpt prob map)

  作者給了一個重要的觀點:預測興趣點時使用有監督學習,相當於在讓當前模型模仿另一個興趣點檢測器,這樣沒有辦法發現潛在的更佳興趣點。

  學習detector的可重複性:對於I變換得到的I',將I'預測的prob S'利用U warp回來得到S'_U,如果滿足可重複性,那麼S和S'_U的各個局部最大值出現的位置應該比較相似,即enforce all local maxima in S correspond to the ones in S'U。
  作者將這一優化目標簡化了下:使S和S'_U之間的相似度最高,那他們的局部極大值位置也會最大程度對應。
  但是實際操作時,將S' warp之後得到的S'_U可能和S並不完全對應(由於局部遮擋、warp造成的偽影和邊界效果等),作者將全局相似度評估改成了對重疊滑動窗口分別評估相似度再平均,以提高這一步的魯棒性。

另外,上面的優化目標還存在漏洞:網路可以通過預測將S和S』U map預測為相同的constant map來使得Lcosim最小。這樣其實兩個圖都提取不出局部最大值。為了避免這種情況,作者分別為I和I』加入約束L_peaky,對每個patch如果最大值與均值之差比較小,則給予較大懲罰:

最終的repeatability loss即用重疊鄰域計算的kpt 概率圖相似度加上I和I』各自的peaky約束。

image.png

注意:Lrep中的鄰域size N實際上決定了預測的關鍵點的空間頻率(進而決定了關鍵點的數目),因為該loss使得網路傾向於為每個鄰域只預測一個local maxima(為什麼?)。

答:因為peaky loss迫使每個patch都具有local maxima,這決定了當N很小時,興趣點會很密。但是當N很大時一個鄰域內出現多個local maxima好像並不會被loss懲罰?

2.2 學習reliability

  reliability是和repeatability聯合訓練的。如前文所述,reliability是利用最近鄰patch和當前patch之間的相似度衡量的,不過這是一種非正式的方式。本文使用一種更正式的方式來衡量描述子的reliability,或者distinctivity:對於影像I上的某個patch pij,其reliability定義為:pij對應的描述子Xij與影像I'上所有patch的描述子逐一比較並計算出的Average Precision。

  網路的一個優化目標應該是希望每個描述子都足夠可靠,因此reliability loss大體應該為:

  然而實際上影像每個像素並不是同等重要的。對一些不重要的區域(比如平坦的路面、海浪、樹葉紋理等重複區域)優化上述LAP可能會做無用功,甚至影響優化的效果。故作者提出可以預測一個distinctive map(文中的Rij)來表達各個像素位置的重要程度,並將該map的優化和LA,P聯合進行:

  註上面高亮的加號寫錯了,應該改成減號。式中的k代表AP閾值,即當前patch的AP大於k則認為patch是可靠的。作者對於這個損失函數的解釋為:對於AP>k的可靠patch,該loss會push AP最大化;相反AP<k時,loss會push該patch的可靠性儘可能小。

![](//upload-images.jianshu.io/upload_images/14755769-90af82df4ceb8c29.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 

  感覺這裡的符號有點混亂,比如AP(p_{ij})代表p_{ij}的reliability,R_{ij}也代表p_{ij}的reliability,上面的loss還寫錯了。

  問題:本文提出學習描述子的可靠性,是僅僅為了提高描述子學習的效率(不可靠區域不需要傳太多梯度)還是有實質性的區別?

  另外該公式,即論文中的(5)是錯誤的,最後那個加號應該改成減號。當時看這裡產生了很大疑惑,最終還是通過查看程式碼發現了這個錯誤:

image.png

  問題:從L_rep來看,reliability和repeatability好像是完全獨立進行優化的,看不出兩者有什麼關聯?這樣優化能否確保學出來的興趣點有好的匹配效果(good for matching)?

  答:對於像本文這種,同時預測dense kpt prob map和dense descriptors的結構,興趣點和描述子的預測其實是相對獨立的。興趣點檢測部分的優化目標在於,在HxW影像上預測出稀疏的局部最大值位置,且這些位置能夠對視角、光照等條件的變化具有不變性(repeatability)。而描述子部分的優化目標是,讓HxW的每一個像素所在鄰域對應的特徵描述都足夠有區分性(即本文暫不考慮reliability map時L_AP的優化目標)。

  與此形成對比的是諸如LIFT、LFNet等patch-based方法,其特徵描述部分網路只對前面的檢測器檢測到的興趣點提取描述子,非興趣點的描述子並不需要考慮。這種優化方法可以認為是將detector和descriptor兩部分網路聯合訓練。

2.3.Inference

  測試時,首先輸入影像構建金字塔,然後在各個尺度分別預測、提取local maxima(利用NMS,見下面code)得到關鍵點,並收集關鍵點對應的描述子。然後計算每個描述子Xij的得分SijRij,根據得分保留top-K最佳描述子。

  注意:這樣得到的關鍵點和描述子是來自多個尺度的,最後需要把不同尺度的興趣點坐標映射回原始尺度。否則得到的興趣點和描述子對原圖沒有意義。(右下圖,詳見extract.py中的extract_multiscale函數)

其他idea:

在dense prediction任務的backbone中,可以利用dilated conv代替下取樣模組,維持空間解析度避免特徵圖變得coarse。

reliability map訓練之後的作用:(綠色十字代表得分最高的興趣點)

問題:對於一些重複結構,如建築的窗戶,R2D2是不是會完全清除掉這些區域的關鍵點?

  作者對該問題的回有點不清晰:這類結構雖然重複,但是整體來說還是有一些區分性的。實際上我們發現,如果不是像天空、路面那樣完全重複的結構,網路對一般重複性結構預測的reliability還是「quite high」。另外作者提到其中有一個以建築為主的benchmark就包含了很多這類情況。

  另外,有兩位觀眾提到關於多模態數據的匹配問題,可能更偏向實際應用一些。比如R2D2是否可以對RGB-IR或者熱成像等更具挑戰的場景進行匹配,作者簡單回答說喂成對的數據,應該可以..

三.實驗結果

  首先可以看出R2D2在效率和指標上都達到最佳。

  本文核心在於將reliability和repeatability獨立進行優化。下面是消融實驗,作者想表達的時,repeatability與reliability並非高度關聯的,預測額外的reliability對結果提升有很大幫助。

presentation:
//www.bilibili.com/video/av84172526/

Tags: