概要
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,妥妥的漲點。不過這不是主要的創新。
Modulated Deformable Modules
為了防止卷積變形時focus到無關位置,作者在dconv中加了一個調制項,
符號就不多解釋了,最后一項就是可學習的調制項,當采樣點focus到無關位置時,這一項置0就可以挽回大局。調制項與前面的offset項用同樣的方法獲得,就是接一個旁支,之前輸出2K個channel,現在輸出3K個channel就是了。注意,看起來調制項和卷積核的參數w貌似是一回事,可以合寫成一項,其實這是完全不同的,w是模型本身的參數,調制項是從輸入特征中計算出來的,可以根據輸入的不同自適應地去完成自己的使命。
另外也將dpool改進成了mdpool,也是乘了一個調制項,一樣的道理,在此不再贅述。
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了,不過個人有個重大疑問,或許也是可以改進的點,歡迎各位看官一起討論:
主網絡fc2的特征要用來分類,也要用來回歸bbox,而RCNN的fc2特征只用來分類,讓主網絡的fc2特征去模仿RCNN,是不是會丟失定位信息?也就是說,Mimic Loss會不會跟bbox回歸Loss產生某種意義上的沖突?能不能試試拆分一下fc2特征,把用於分類和用於回歸的特征分開,只模仿用於分類的部分?當然,這個想法不成熟,有待商榷,不過感覺直接Mimic真的有一丟丟粗暴。
就這樣吧,還要抓緊讀JiFeng老師剛發的另一篇paper。=_=