可形變卷積網絡 Deformable ConvNet 論文學習筆記

原論文:《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×NW \times H \times N 的特徵圖,這個卷積結構得到的特徵爲:W×H×2NW \times H \times 2N。其中,2 代表在寬與高兩個方向上的偏移。

1.2 計算公式

y(p0)=pnRw(pn)x^(p0+pn+Δpn)=pnRw(pn)qG(q,p0+pn+Δpn)x(q)\begin{aligned}\\ y(\pmb{p}_0)&=\sum_{\pmb{p}_n\in \mathcal{R}}\pmb{w}(\pmb{p}_n)\cdot \pmb{\hat{x}}(\pmb{p}_0+\pmb{p}_n+\Delta\pmb{p}_n)\\ &=\sum_{\pmb{p}_n\in \mathcal{R}}\pmb{w}(\pmb{p}_n)\cdot \sum_{\pmb{q}}G(\pmb{q},\pmb{p}_0+\pmb{p}_n+\Delta\pmb{p}_n)\cdot \pmb{x}(\pmb{q})\\ \end{aligned}
其中,p\pmb{p}q\pmb{q} 是特徵圖上像素點的座標;Δpn\Delta \pmb{p}_npn\pmb{p}_n 的偏移量;w(pn)\pmb{w}(\pmb{p}_n)pn\pmb{p}_n 對應的權重;G(q,p)G(\pmb{q},\pmb{p}) 是雙線性差值公式:
G(q,p)=g(qx,px)g(qy,qy)=max(0,1qx,px)max(0,1qy,py)\begin{aligned}\\ G(\pmb{q},\pmb{p})&=g(q_x,p_x) \cdot g(q_y,q_y)\\ &=max(0,1-|q_x,p_x|) \cdot max(0,1-|q_y,p_y|)\\ \end{aligned}

2. 可形變RoI池化

RoI 池化用於將任意尺寸的矩形區域轉換爲一個固定尺寸的區域。
對於一個特徵圖 x\pmb{x},記其左上角位置爲 p0\pmb{p}_0,經過 RoI 池化後將得到一個 k×kk \times k 的特徵圖 y\pmb{y}
y(i,j)=pbin(i,j)x(p0+p)/nijy(i,j)=\sum_{\pmb{p}\in bin(i,j)}\pmb{x}(\pmb{p}_0+\pmb{p})/n_{ij}

此式表明:RoI 需要將 x\pmb{x} 劃分爲 k×kk\times k 個 bin,再在每個 bin 上取均值。nijn_{ij} 表示每個bin上的像素點的數量。

2.1 結構圖

在這裏插入圖片描述

  1. 利用一般的 RoI 對一個特徵層進行池化;
  2. 使用全連接網絡對上面的結果進行處理,得到歸一化的偏移量 Δp^ij\Delta \hat{\pmb{p}}_{ij}
  3. 在每個元素上進行計算:Δp=0.1Δp^ij(w,h)\Delta \pmb{p}=0.1\Delta \hat{\pmb{p}}_{ij}\circ(w,h)(其實就是將歸一化的量在實際尺寸上進行放縮);
  4. 根據得到的 p\pmb{p} 對特徵層進行調整。

2.2 計算公式

y(i,j)=pbin(i,j)x^(p0+p+Δpij)/nij=pbin(i,j)qG(q,p0+pn+Δpn)x(q)/nij\begin{aligned}\\ y(i,j)&=\sum_{\pmb{p}\in bin(i,j)}\pmb{\hat{x}}(\pmb{p}_0+\pmb{p}+\Delta \pmb{p}_{ij})/n_{ij}\\ &=\sum_{\pmb{p}\in bin(i,j)}\sum_{q} G(\pmb{q},\pmb{p}_0+\pmb{p}_n+\Delta\pmb{p}_n) \cdot \pmb{x}(\pmb{q})/n_{ij}\\ \end{aligned}

3. 使用方法

直接替換候選骨幹網絡中某個卷積層及 RoI 池化層。


參考材料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章