參考資料:
原paper地址:https://arxiv.org/abs/1703.06211
知乎討論地址:https://www.zhihu.com/question/57493889
csdn blog地址:http://blog.csdn.net/yaoqi_isee/article/details/65963253
Notes地址:https://medium.com/@phelixlau/notes-on-deformable-convolutional-networks-baaabbc11cf3
Abstract
? ? 由于構(gòu)造卷積神經(jīng)網(wǎng)絡(luò) (CNN) 所用的模塊中幾何結(jié)構(gòu)是固定的召廷,其幾何變換建模的能力本質(zhì)上是有限的。在我們的工作中灌灾,我們引入了兩種新的模塊來(lái)提高卷積神經(jīng)網(wǎng)絡(luò) (CNN) 對(duì)變換的建模能力熔恢,即可變形卷積 (deformable convolution) 和可變形興趣區(qū)域池化 (deformable ROI pooling)埃篓。它們都是基于在模塊中對(duì)空間采樣的位置信息作進(jìn)一步位移調(diào)整的想法,該位移可在目標(biāo)任務(wù)中學(xué)習(xí)得到,并不需要額外的監(jiān)督信號(hào)柳恐。新的模塊可以很方便在現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò) (CNN) 中取代它們的一般版本,并能很容易進(jìn)行標(biāo)準(zhǔn)反向傳播端到端的訓(xùn)練热幔,從而得到可變形卷積網(wǎng)絡(luò) (deformable convolutional network)乐设。大量的實(shí)驗(yàn)驗(yàn)證了我們的方法在目標(biāo)檢測(cè)和語(yǔ)義分割這些復(fù)雜視覺(jué)任務(wù)上的有效性。代碼地址:這里
1.Introduction
?? 在這項(xiàng)工作中绎巨,我們引進(jìn)了新的模塊伤提,大大增強(qiáng)了CNN的幾何變換建模能力。首先是可變形卷積认烁。它在標(biāo)準(zhǔn)卷積中向常規(guī)采樣網(wǎng)格添加了2D偏移肿男。
? ? 二是deformable RoI pooling如庭。它在以前的RoI pooling中的常規(guī)bin partition中為每個(gè)bin添加了一個(gè)offset。類似地撼港,從先前的特征圖和RoI學(xué)習(xí)偏移坪它,使得能夠?qū)哂胁煌螤畹膶?duì)象進(jìn)行自適應(yīng)部分定位。
? ? 兩個(gè)模塊的權(quán)值都不多帝牡。它們因?yàn)榧尤肓似频膶W(xué)習(xí)添加了少量參數(shù)和計(jì)算往毡。它們可以輕松集成到深CNN架構(gòu)中,并通過(guò)反向傳播進(jìn)行端到端的訓(xùn)練靶溜。這種結(jié)構(gòu)叫做deformable convolutional networks或deformable ConvNets.
? ? 兩者原理是一樣的开瞭,就是在這些卷積或者ROI采樣層上,添加了位移變量罩息,這個(gè)變量根據(jù)數(shù)據(jù)的情況學(xué)習(xí)嗤详,偏移后,相當(dāng)于卷積核每個(gè)方塊可伸縮的變化瓷炮,從而改變了感受野的范圍葱色,感受野成了一個(gè)多邊形。
2.Deformable Convolutional Networks
? ? 雖然CNN中的特征映射圖和卷積核是3D tensor娘香,但可變卷積和RoI池都在2D空間域上運(yùn)行的苍狰,并且在通道維度上保持不變办龄。
2.1Deformable Convolution
一個(gè)2D的卷積由兩步組成:
1)使用框架R在輸入的特征圖上采樣
2)將采樣值與對(duì)應(yīng)的權(quán)重相乘,再求和
R定義了感受野的大小和dilation舞痰。例如:
R = {(?1, ?1),(?1, 0), . . . ,(0, 1),(1, 1)}? 定義了3×3的內(nèi)核土榴,dilation為1
對(duì)于輸出特征圖y上的每個(gè)位置p0,我們有
Deformable Conv操作并沒(méi)有改變卷積的計(jì)算操作响牛,而是在卷積操作的作用區(qū)域上玷禽,加入了一個(gè)可學(xué)習(xí)的參數(shù)?pn。對(duì)于變形的卷積呀打,增加了一個(gè)參數(shù)矢赁,即偏移量 {?pn|n = 1, ..., N}, where N = |R|.
然而,這樣的操作引入了一個(gè)問(wèn)題贬丛,即需要對(duì)不連續(xù)的位置變量求導(dǎo)撩银。作者在這里借鑒了之前Spatial Transformer Network和若干Optical Flow中warp操作的想法,使用了bilinear插值將任何一個(gè)位置的輸出豺憔,轉(zhuǎn)換成對(duì)于feature map的插值操作额获。
上式中的g(a, b) = max(0, 1 ? |a ? b|),等式3是很容易計(jì)算的恭应,大多數(shù)的q位置G為0抄邀。
總結(jié)一下上面四個(gè)公式就是,公式1是正常的卷積計(jì)算公式昼榛,公式2是添加了偏移后的公式境肾,然后對(duì)這個(gè)公式做線性插值變化就成了3,3的左邊是原始圖的位置,x(q)是卷積后的特征圖胆屿,G就是需要學(xué)習(xí)的變換核奥喻。這樣就可以求偏導(dǎo)進(jìn)行梯度下降學(xué)習(xí)了。4就是這個(gè)需要學(xué)習(xí)的核的表示非迹。
對(duì)于輸入的一張feature map楔绞,假設(shè)原來(lái)的卷積操作是3*3的,那么為了學(xué)習(xí)offset唇兑,我們定義另外一個(gè)3*3的卷積層,輸出的offset field其實(shí)就是原來(lái)feature map大小桦锄,channel數(shù)等于2(分別表示x,y方向的偏移)扎附。這樣的話,有了輸入的feature map结耀,有了和feature map一樣大小的offset field留夜,我們就可以進(jìn)行deformable卷積運(yùn)算匙铡。所有的參數(shù)都可以通過(guò)反向傳播學(xué)習(xí)得到。
2.2 Deformable ROI Pooling
? ? RoI池模塊將任意大小的輸入矩形區(qū)域轉(zhuǎn)換為固定大小的特征碍粥。給定一個(gè)ROI鳖眼,大小為w*h,它最后會(huì)被均勻分為K*K塊嚼摩,k是個(gè)自由參數(shù)钦讳。標(biāo)準(zhǔn)的ROI pooling是從輸入的特征圖x中生成k*k個(gè)輸出特征圖y.第(i,j)個(gè)塊的pooling操作可以被定義為:
p0是左上方的角落塊枕面,nij是這個(gè)塊內(nèi)的像素值愿卒。類似的定義變形的ROI pooling,增加一個(gè)偏移量?pij,如下定義
2.3. Deformable ConvNets
? ? 可變卷積和RoI池模塊都具有與其簡(jiǎn)單的額版本有著相同的輸入和輸出潮秘。因此琼开,他們可以取代在現(xiàn)有的CNNs中原有的模塊的位置。在訓(xùn)練的時(shí)候枕荞,用于偏移學(xué)習(xí)的附加conv / fc層初始化為0柜候,他們的學(xué)習(xí)速率是現(xiàn)有l(wèi)ayers的β倍(默認(rèn)為β= 1)。他們的值是通過(guò)bp訓(xùn)練躏精,由雙線性插值運(yùn)算渣刷,見公式 (3)和(4)。所得到的CNN稱為deformable ConvNets玉控。
? ? 我們可以把deformable ConvNets分成兩步飞主,一是用一個(gè)深度全卷積網(wǎng)絡(luò)從輸入的圖上得到特征圖,二是高诺,用一層具有特定功能的網(wǎng)絡(luò)從特征圖中產(chǎn)生結(jié)果碌识。
3. Understanding Deformable ConvNets
? ? 這是建立在一個(gè)簡(jiǎn)單的想法之上的。卷積和RoI合并中的空間采樣位置增加了額外的偏移量剔蹋。這些偏移量是從數(shù)據(jù)中學(xué)習(xí)的旅薄,被目標(biāo)驅(qū)動(dòng)的。當(dāng)可變形模塊堆疊成多層時(shí)泣崩,復(fù)合變形的影響是深刻的少梁。
4. Experiments
作者在不同網(wǎng)絡(luò)結(jié)構(gòu)上的實(shí)驗(yàn)結(jié)果在文章中描述的很清楚洛口,下面是我自己跑的作者的代碼(這里):
下面是網(wǎng)絡(luò)結(jié)構(gòu),deformable CNN 比Normal CNN多了Convoffset2D層凯沪。
增加Convoffset2D層并不會(huì)改變層與層之間輸入與輸出的shape第焰,因此可以很容易的在現(xiàn)有的網(wǎng)絡(luò)中增加offset,從而變成deformable ConvoNets,但毫無(wú)疑問(wèn)會(huì)增加訓(xùn)練參數(shù)的數(shù)量,因?yàn)槎嗔薿ffset.
這是conv內(nèi)部結(jié)構(gòu)的代碼描述(keras keras.backend=tensorflow)
Normal CNN測(cè)試mnist image和scaled mnist image的準(zhǔn)確率:
Deformable CNN測(cè)試mnist image和scaled mnist image的準(zhǔn)確率:
可以看到妨马,Deformable CNN對(duì)scaled image有著非常大的優(yōu)勢(shì)
分別打印出三個(gè)deformable convnet layer
結(jié)果如下
水平有限挺举,歡迎大佬指教~ ? ?^_^ ?