論文筆記:Deformable ConvNets v2: More Deformable, Better Results

概要

MSRA在目標檢測方向Beyond Regular Grid的方向上越走越遠,又一篇大做推出,相比前做DCN v1在COCO上直接漲了超過5個點,簡直不要太瘋狂。文章的主要內容可大體概括以下:網絡

  • More dconv and Modulated donv:認爲前做中卷積變形時容易採樣到很差的位置,例如背景等無關信息,這對於檢測是有傷害的,這一點從兩個方面下手解決,一是堆疊更多的Deformable卷積(簡稱dconv),這個沒必要多說;二是增長調製(modulated)功能,提出Modulated Deformabel卷積(簡稱mdconv),企圖在採樣到無關位置時,自適應地將這些位置的權重調低,以緩解其帶來的傷害。這兩下子一稿,AP從38.0提高到了41.7。
  • Feature Mimicking:因爲Deformable ROI Pooling(簡稱dpool,加調製模塊簡稱mdpool)會採樣到ROI以外的內容,這些內容雖然說具備更多的上下文信息,但畢竟不屬於ROI自己,可能對結果形成傷害。因此做者認爲應該讓dpool或mdpool獲得的特徵更「像」RCNN的特徵,因而採用了知識蒸餾(這東西最近彷佛很屌)的方法,做者稱之爲R-CNN Feature Mimicking,實現了這一目標。我的對此很是驚訝,看上去是難以work的,真是沒想到。。。AP從41.7又提到了43.1,簡直不要太瘋狂。
  • 模型分析:JiFeng老師還展現了一些分析模型表現的可視化方法,這一點對於我等煉丹師很是有教育意義。

模型分析

做者給出了三種可視化方法進行模型的分析,目的是從中發現DCN v1存在的問題,這幾個方法雖然不是原創,但不得不說用得很是好,值得學習。性能

  • Effective receptive fields:感覺野的概念沒必要多說,有效感覺野顧名思義就是感覺野中貢獻突出的區域。經過計算網絡中的節點對於圖像中每一個像素的梯度,梯度值相對較大的地方就是了,具體的作法能夠參閱此處的引文。
  • Effective sampling / bin locations:DCN v1中對dpool各個bin的採樣做了可視化,但這些採樣位置對於後續結果的相對貢獻沒有體現。一樣地,做者也使用節點對於採樣位置的梯度大小來講明。
  • Error-bounded saliency regions:這個方法是借鑑顯著性檢測的思想。本文簡稱ESR,定義爲:圖像中一片最小的區域,這片區域對網絡的響應與全圖對網絡的響應之差小於一個較小的bound。得到ESR的方法是逐步mask圖像中的點,觀察節點響應的變化,若是變化大於某個閾值,那麼這個點就屬於ESR。

如原文Figure 1,有朋友反映不太能get到這個圖的點,這裏簡單分析一下。這個圖是對conv5 stage的最後一層卷積運用上面三種方法分析的結果,第一列是個燒餅(小目標),第二列是人(大目標),第三列是背景,綠點是目標的中心,上面幾種方法就是基於節點以這幾個綠點爲中心作卷積時的狀況進行的(這句話真是繞)。能夠看到,(a)的第一行,regular卷積的感覺野是regular的網格,感覺野內的權重中心高,四周低。而dconv和mdconv的感覺野理論上是全圖,dconv比regular conv權重更集中於目標自己,而mdconv又比dconv更牛逼。其餘兩行要表達的東西其實相似。做者基於此概括出的結論參考原文,基本也就是這意思。學習

More Deformable ConvNets

爲了更好地建模幾何形變,固然要堆疊更多的dconv,前做中只在conv5階段用了3層dconv,性能就飽和了,但那是在PASCAL上的結果,COCO比PASCAL要複雜得多(固然訓練數據量多也是緣由之一),因此做者把conv3-conv5三個階段12層conv都換成了dconv,妥妥的漲點。不過這不是主要的創新。spa

Modulated Deformable Modules

爲了防止卷積變形時focus到無關位置,做者在dconv中加了一個調製項,
\[y(p) = \sum_{k=1}^{K} w_k \cdot x(p+p_k+\Delta p_k)\cdot \Delta m_k\]
符號就很少解釋了,最後一項就是可學習的調製項,當採樣點focus到無關位置時,這一項置0就能夠挽回大局。調製項與前面的offset項用一樣的方法得到,就是接一個旁支,以前輸出2K個channel,如今輸出3K個channel就是了。注意,看起來調製項和卷積核的參數w貌似是一回事,能夠合寫成一項,其實這是徹底不一樣的,w是模型自己的參數,調製項是從輸入特徵中計算出來的,能夠根據輸入的不一樣自適應地去完成本身的使命。
另外也將dpool改進成了mdpool,也是乘了一個調製項,同樣的道理,在此再也不贅述。orm

R-CNN Feature Mimicking

對於這一點我我的的疑惑是比較大的,這種trick可以work我感到驚訝和佩服。操做的方法就是模型蒸餾那一套,這個東西最近挺火的,最近還有一篇投稿到CVPR2019作pose的也用了這東西去作模型的壓縮,效果也比較驚豔,不過這裏是用來作特徵的模仿,不是壓縮。要解決的問題其實仍是要篩除無關的上下文信息,做者認爲加入調製項還不夠,咱們知道,R-CNN的作法不考慮ROI以外的內容,也就不會引入無關的context,因此直接模仿R-CNN提的特徵就行了。具體作法參見原文Figure3,獲得ROI以後,在原圖中摳出這個ROI,resize到224x224,再送到一個RCNN中進行分類,這個RCNN只分類,不迴歸。而後,主網絡fc2的特徵去模仿RCNN fc2的特徵,實際上就是二者算一個餘弦類似度,1減去類似度做爲loss便可,見原文公式(3)。這個東西確實是work了,不過我的有個重大疑問,或許也是能夠改進的點,歡迎各位看官一塊兒討論:blog

主網絡fc2的特徵要用來分類,也要用來回歸bbox,而RCNN的fc2特徵只用來分類,讓主網絡的fc2特徵去模仿RCNN,是否是會丟失定位信息?也就是說,Mimic Loss會不會跟bbox迴歸Loss產生某種意義上的衝突?能不能試試拆分一下fc2特徵,把用於分類和用於迴歸的特徵分開,只模仿用於分類的部分?固然,這個想法不成熟,有待商榷,不過感受直接Mimic真的有一丟丟粗暴。
就這樣吧,還要抓緊讀JiFeng老師剛發的另外一篇paper。=_=get

相關文章
相關標籤/搜索