目錄
- DCN v1
- DCN v2
- 參考
DCN v1
背景
在計算機視覺領域,同一物體在不同場景蕾盯,角度中未知的幾何變換是檢測/識別的一大挑戰(zhàn),通常來說我們有兩種做法:
(1)通過充足的數(shù)據(jù)增強蓝丙,擴充足夠多的樣本去增強模型適應尺度變換的能力级遭。
(2)設置一些針對幾何變換不變的特征或者算法望拖,比如SIFT和sliding windows。
兩種方法都有缺陷挫鸽,第一種方法因為樣本的局限性顯然模型的泛化能力比較低说敏,無法泛化到一般場景中,第二種方法則因為手工設計的不變特征和算法對于過于復雜的變換是很難的而無法設計丢郊。所以作者提出了Deformable Conv(可變形卷積)和 Deformable Pooling(可變形池化)來解決這個問題盔沫。
可變形卷積
可變形卷積顧名思義就是卷積的位置是可變形的,并非在傳統(tǒng)的N × N的網(wǎng)格上做卷積枫匾,這樣的好處就是更準確地提取到我們想要的特征(傳統(tǒng)的卷積僅僅只能提取到矩形框的特征)架诞,通過一張圖我們可以更直觀地了解:
在上面這張圖里面,左邊傳統(tǒng)的卷積顯然沒有提取到完整綿羊的特征婿牍,而右邊的可變形卷積則提取到了完整的不規(guī)則綿羊的特征侈贷。
那可變卷積實際上是怎么做的呢?其實就是在每一個卷積采樣點加上了一個偏移量等脂,如下圖所示:
(a) 所示的正常卷積規(guī)律的采樣 9 個點(綠點)俏蛮,(b)(c)(d) 為可變形卷積,在正常的采樣坐標上加上一個位移量(藍色箭頭)上遥,其中 (c)(d) 作為 (b) 的特殊情況搏屑,展示了可變形卷積可以作為尺度變換,比例變換和旋轉變換等特殊情況粉楚。
我們先看普通的卷積辣恋,以3x3卷積為例對于每個輸出y(p0),都要從x上采樣9個位置模软,這9個位置都在中心位置x(p0)向四周擴散伟骨,(-1,-1)代表x(p0)的左上角,(1,1)代表x(p0)的右下角燃异。
所以傳統(tǒng)的卷積輸出就是(其中就是網(wǎng)格中的n個點):
正如我們上面闡述的可變形卷積携狭,他就是在傳統(tǒng)的卷積操作上加入了一個偏移量,正是這個偏移量才讓卷積變形為不規(guī)則的卷積回俐,這里要注意這個偏移量可以是小數(shù)逛腿,所以下面的式子的特征值需要通過雙線性插值的方法來計算。:
那這個偏移量如何算呢仅颇?我們來看:
對于輸入的一張feature map单默,假設原來的卷積操作是3×3的,那么為了學習偏移量offset忘瓦,我們定義另外一個3×3的卷積層(圖中上面的那層)搁廓,輸出的維度其實就是原來feature map大小,channel數(shù)等于2N(分別表示x,y方向的偏移)。下面的可變形卷積可以看作先基于上面那部分生成的offset做了一個插值操作枚抵,然后再執(zhí)行普通的卷積线欲。
可變形卷積的可視化
我們可以從上圖看到,可以看到當綠色點在目標上時汽摹,紅色點所在區(qū)域也集中在目標位置李丰,并且基本能夠覆蓋不同尺寸的目標,因此經(jīng)過可變形卷積逼泣,我們可以更好地提取出感興趣物體的完整特征趴泌,效果是非常不錯的。
可變形池化
理解了可變形卷積之后拉庶,Deformable RoIPooling(可變形池化)就比較好理解了嗜憔。原始的RoIPooling在操作過程中是將RoI劃分為k×k個子區(qū)域。而可變形池化的偏移量其實就是子區(qū)域的偏移氏仗。同理每一個子區(qū)域都有一個偏移吉捶,偏移量對應子區(qū)域有k×k個。與可變形卷積不同的是皆尔,可變形池化的偏移量是通過全連接層得到的呐舔。因為和可變形卷積類似,這里就不多講了慷蠕。
DCN v2
背景
DCN v1聽起來不錯珊拼,但其實也有問題:我們的可變形卷積有可能引入了無用的上下文(區(qū)域)來干擾我們的特征提取,這顯然會降低算法的表現(xiàn)流炕。作者也做了一個實驗進行對比說明:
我們可以看到雖然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:
為了解決引入了一些無關區(qū)域的問題峻堰,在DCN v2中我們不只添加每一個采樣點的偏移,還添加了一個權重系數(shù)盅视,來區(qū)分我們引入的區(qū)域是否為我們感興趣的區(qū)域捐名,假如這個采樣點的區(qū)域我們不感興趣,則把權重學習為0即可:
總的來說闹击,DCN v1中引入的offset是要尋找有效信息的區(qū)域位置镶蹋,DCN v2中引入權重系數(shù)是要給找到的這個位置賦予權重,這兩方面保證了有效信息的準確提取。
R-CNN Feature Mimicking
作者發(fā)現(xiàn)把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秋冰,類似知識蒸餾的做法,下面會具體展開:
左邊的網(wǎng)絡為主網(wǎng)絡(Faster RCNN)婶熬,右邊的網(wǎng)絡為子網(wǎng)絡(RCNN)剑勾。實現(xiàn)上大致是用主網(wǎng)絡訓練過程中得到的RoI去裁剪原圖,然后將裁剪到的圖resize到224×224大小作為子網(wǎng)絡的輸入赵颅,這部分最后提取的特征和主網(wǎng)絡輸出的1024維特征作為feature mimicking loss的輸入虽另,用來約束這2個特征的差異(通過一個余弦相似度計算,如下圖所示)饺谬,同時子網(wǎng)絡通過一個分類損失進行監(jiān)督學習捂刺,因為并不需要回歸坐標,所以沒有回歸損失募寨。在inference階段僅有主網(wǎng)絡部分族展,因此這個操作不會在inference階段增加計算成本。
再用直白一點的話說绪商,因為RCNN這個子網(wǎng)絡的輸入就是RoI在原輸入圖像上裁剪出來的圖像苛谷,因此不存在RoI以外區(qū)域信息的干擾,這就使得RCNN這個網(wǎng)絡訓練得到的分類結果更加可靠格郁,以此通過一個損失函數(shù)監(jiān)督主網(wǎng)絡Faster RCNN的分類支路訓練就能夠使網(wǎng)絡提取到更多RoI內部特征腹殿,而不是自己引入的外部特征。
總的loss由三部分組成:mimic loss + R-CNN classification loss + Faster-RCNN loss.
DCN v2可視化
通過實驗結果我們也可以看到DCN v2更能集中在物體的完整有效的區(qū)域: