原論文:《J. Dai et al., Deformable Convolutional Networks[C]. 2017 IEEE International Conference on Computer Vision (ICCV), Venice, 2017, pp. 764-773.》
代碼:https://github.com/msracver/Deformable-ConvNets
論文將固定形狀的卷積過程改造成了 能適應物體形狀 的可變的卷積過程,從而提升了特徵提取模塊對物體形變的適應能力。
它對感受野上的每一個點加一個偏移量,而調整後的感受野不再是個正方形,而是與物體的實際形狀相匹配。通過這種方式,無論物體怎麼形變,卷積的區域始終都會覆蓋在物體形狀的周圍。
論文中主要介紹了兩個模塊:可形變卷積(Deformable Convolution) 與 可形變RoI池化(Deformable RoI Pooling)。
1. 可形變卷積
1.1 結構圖
使用一個卷積神經網絡提取特徵圖上每個像素點的 偏移量,然後根據偏移量對特徵圖上每個像素點的位置座標進行 調整,再將調整之後的結果進行 加權。
對於 W×H×N 的特徵圖,這個卷積結構得到的特徵爲:W×H×2N。其中,2 代表在寬與高兩個方向上的偏移。
1.2 計算公式
y(ppp0)=pppn∈R∑www(pppn)⋅x^x^x^(ppp0+pppn+Δpppn)=pppn∈R∑www(pppn)⋅qqq∑G(qqq,ppp0+pppn+Δpppn)⋅xxx(qqq)
其中,ppp 與 qqq 是特徵圖上像素點的座標;Δpppn 是 pppn 的偏移量;www(pppn) 是 pppn 對應的權重;G(qqq,ppp) 是雙線性差值公式:
G(qqq,ppp)=g(qx,px)⋅g(qy,qy)=max(0,1−∣qx,px∣)⋅max(0,1−∣qy,py∣)
2. 可形變RoI池化
RoI 池化用於將任意尺寸的矩形區域轉換爲一個固定尺寸的區域。
對於一個特徵圖 xxx,記其左上角位置爲 ppp0,經過 RoI 池化後將得到一個 k×k 的特徵圖 yyy:
y(i,j)=ppp∈bin(i,j)∑xxx(ppp0+ppp)/nij
此式表明:RoI 需要將 xxx 劃分爲 k×k 個 bin,再在每個 bin 上取均值。nij 表示每個bin上的像素點的數量。
2.1 結構圖
- 利用一般的 RoI 對一個特徵層進行池化;
- 使用全連接網絡對上面的結果進行處理,得到歸一化的偏移量 Δppp^ij;
- 在每個元素上進行計算:Δppp=0.1Δppp^ij∘(w,h)(其實就是將歸一化的量在實際尺寸上進行放縮);
- 根據得到的 ppp 對特徵層進行調整。
2.2 計算公式
y(i,j)=ppp∈bin(i,j)∑x^x^x^(ppp0+ppp+Δpppij)/nij=ppp∈bin(i,j)∑q∑G(qqq,ppp0+pppn+Δpppn)⋅xxx(qqq)/nij
3. 使用方法
直接替換候選骨幹網絡中某個卷積層及 RoI 池化層。
參考材料