目錄
-
DCN v1 -
DCN v2 -
參考
DCN v1
背景
在計算機視覺領域,同一物體在不一樣場景,角度中未知的幾何變換是檢測/識別的一大挑戰,一般來講咱們有兩種作法:node
(1)經過充足的數據加強,擴充足夠多的樣本去加強模型適應尺度變換的能力。算法
(2)設置一些針對幾何變換不變的特徵或者算法,好比SIFT和sliding windows。windows
兩種方法都有缺陷,第一種方法由於樣本的侷限性顯然模型的泛化能力比較低,沒法泛化到通常場景中,第二種方法則由於手工設計的不變特徵和算法對於過於複雜的變換是很難的而沒法設計。因此做者提出了Deformable Conv(可變形卷積)和 Deformable Pooling(可變形池化)來解決這個問題。微信
可變形卷積
可變形卷積顧名思義就是卷積的位置是可變形的,並不是在傳統的N × N的網格上作卷積,這樣的好處就是更準確地提取到咱們想要的特徵(傳統的卷積僅僅只能提取到矩形框的特徵),經過一張圖咱們能夠更直觀地瞭解:在上面這張圖裏面,左邊傳統的卷積顯然沒有提取到完整綿羊的特徵,而右邊的可變形卷積則提取到了完整的不規則綿羊的特徵。網絡
那可變卷積其實是怎麼作的呢?其實就是在每個卷積採樣點加上了一個偏移量,以下圖所示:(a) 所示的正常卷積規律的採樣 9 個點(綠點),(b)(c)(d) 爲可變形卷積,在正常的採樣座標上加上一個位移量(藍色箭頭),其中 (c)(d) 做爲 (b) 的特殊狀況,展現了可變形卷積能夠做爲尺度變換,比例變換和旋轉變換等特殊狀況。編輯器
咱們先看普通的卷積,以3x3卷積爲例對於每一個輸出y(p0),都要從x上採樣9個位置,這9個位置都在中心位置x(p0)向四周擴散,(-1,-1)表明x(p0)的左上角,(1,1)表明x(p0)的右下角。因此傳統的卷積輸出就是(其中 就是網格中的n個點):正如咱們上面闡述的可變形卷積,他就是在傳統的卷積操做上加入了一個偏移量,正是這個偏移量才讓卷積變形爲不規則的卷積,這裏要注意這個偏移量能夠是小數,因此下面的式子的特徵值須要經過雙線性插值的方法來計算。:svg
那這個偏移量如何算呢?咱們來看:函數
對於輸入的一張feature map,假設原來的卷積操做是3×3的,那麼爲了學習偏移量offset,咱們定義另一個3×3的卷積層(圖中上面的那層),輸出的維度其實就是原來feature map大小,channel數等於2N(分別表示x,y方向的偏移)。下面的可變形卷積能夠看做先基於上面那部分生成的offset作了一個插值操做,而後再執行普通的卷積。學習
可變形卷積的可視化
咱們能夠從上圖看到,能夠看到當綠色點在目標上時,紅色點所在區域也集中在目標位置,而且基本可以覆蓋不一樣尺寸的目標,所以通過可變形卷積,咱們能夠更好地提取出感興趣物體的完整特徵,效果是很是不錯的。flex
可變形池化
理解了可變形卷積以後,Deformable RoIPooling(可變形池化)就比較好理解了。原始的RoIPooling在操做過程當中是將RoI劃分爲k×k個子區域。而可變形池化的偏移量其實就是子區域的偏移。同理每個子區域都有一個偏移,偏移量對應子區域有k×k個。與可變形卷積不一樣的是,可變形池化的偏移量是經過全鏈接層獲得的。由於和可變形卷積相似,這裏就很少講了。
DCN v2
背景
DCN v1聽起來不錯,但其實也有問題:咱們的可變形卷積有可能引入了無用的上下文(區域)來干擾咱們的特徵提取,這顯然會下降算法的表現。做者也作了一個實驗進行對比說明:咱們能夠看到雖然DCN v1更能覆蓋整個物體,可是同時也會引入一些無關的背景,這形成了干擾,因此做者提出了三個解決方法:
(1)More Deformable Conv Layers(使用更多的可變形卷積)。
(2)Modulated Deformable Modules(在DCNv1基礎(添加offset)上添加每一個採樣點的權重)
(3)R-CNN Feature Mimicking(模擬R-CNN的feature)。
使用更多的可變形卷積
在DCN v1中只在conv 5中使用了三個可變形卷積,在DCN v2中把conv3到conv5都換成了可變形卷積,提升算法對幾何形變的建模能力。
在DCNv1基礎(添加offset)上添加每一個採樣點的權重
咱們知道在DCN v1中的卷積是添加了一個offset :爲了解決引入了一些無關區域的問題,在DCN v2中咱們不僅添加每個採樣點的偏移,還添加了一個權重係數 ,來區分咱們引入的區域是否爲咱們感興趣的區域,假如這個採樣點的區域咱們不感興趣,則把權重學習爲0便可:總的來講,DCN v1中引入的offset是要尋找有效信息的區域位置,DCN v2中引入權重係數是要給找到的這個位置賦予權重,這兩方面保證了有效信息的準確提取。
R-CNN Feature Mimicking
做者發現把R-CNN和Faster RCNN的classification score結合起來能夠提高performance,說明R-CNN學到的focus在物體上的feature能夠解決無關上下文的問題。可是增長額外的R-CNN會使inference速度變慢不少。DCNV2裏的解決方法是把R-CNN當作teacher network,讓DCN V2的ROIPooling以後的feature去模擬R-CNN的feature,相似知識蒸餾的作法,下面會具體展開:左邊的網絡爲主網絡(Faster RCNN),右邊的網絡爲子網絡(RCNN)。實現上大體是用主網絡訓練過程當中獲得的RoI去裁剪原圖,而後將裁剪到的圖resize到224×224大小做爲子網絡的輸入,這部分最後提取的特徵和主網絡輸出的1024維特徵做爲feature mimicking loss的輸入,用來約束這2個特徵的差別(經過一個餘弦類似度計算,以下圖所示),同時子網絡經過一個分類損失進行監督學習,由於並不須要迴歸座標,因此沒有迴歸損失。在inference階段僅有主網絡部分,所以這個操做不會在inference階段增長計算成本。再用直白一點的話說,由於RCNN這個子網絡的輸入就是RoI在原輸入圖像上裁剪出來的圖像,所以不存在RoI之外區域信息的干擾,這就使得RCNN這個網絡訓練獲得的分類結果更加可靠,以此經過一個損失函數監督主網絡Faster RCNN的分類支路訓練就可以使網絡提取到更多RoI內部特徵,而不是本身引入的外部特徵。
總的loss由三部分組成:mimic loss + R-CNN classification loss + Faster-RCNN loss.
DCN v2可視化
經過實驗結果咱們也能夠看到DCN v2更能集中在物體的完整有效的區域:
參考
-
DCN v1論文https://arxiv.org/pdf/1703.06211.pdf -
DCN v2論文https://arxiv.org/pdf/1811.11168.pdf -
https://www.zhihu.com/question/303900394/answer/540818451
本文分享自微信公衆號 - 計算機視覺漫談(gh_41e38694bc19)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。