###### tags: `Paper Notes`
# DCNv2 (Deformable ConvNets v2)
* 原文:[Deformable ConvNets v2: More Deformable, Better Results](https://arxiv.org/abs/1811.11168)
* 機構:University of Science and Technology of China, Microsoft Research Asia
* 時間:2018 年
### Introduction
* 雖然 Deformable ConvNets v1 (DCNv1) 緩和了傳統 CNN 幾何轉換的問題,但仍可發現它參考了很多不重要的位置,簡單的說就是效能不夠好。因此,作者提出了 Deformable ConvNets v2 (DCNv2) 來提升效能。
### More Deformable ConvNets
* DCNv2 的改進方式主要有兩個:
* 將更多的 standard conv. 轉換成 deformable conv.。
* 提出 modulated deformable conv.。
* 更多的 deformable conv.:
* 在第一版時,作者只有將 ResNet-50 中的 conv5 改成 deformable conv.。現在則將 conv3、conv4、conv5 (共 12 層) 都改用 deformable conv. layer。
* modulated deformable conv.:
* modulated deformable conv. 作法:透過增加權重 $\Delta m_k \in [0, 1]$ 來調整該 grid 的重要性。
$$
y(p) = \sum_{k=1}^{K} w_k * x(p + p_k + \Delta p_k) * \Delta m_k
$$
* $K$:kernel size
* $w_k$:第 $k$ 個 grid 的 weight
* $p_k$:第 $k$ 個 grid 在 kernel 中的座標
範例:$K = 3 \times 3 = 9,\ p_k \in \{ (-1, -1), (-1, 0), ..., (1, 1) \}$
* $x(p)$:feature map 中,位置為 $p$ 的值
* $y(p)$:deformable conv. 對位置為 $p$ 的 grid 輸出結果
> 問題:不是已經有 $w_k$ 了嗎?加 $\Delta m_k$ 真的有用嗎?
* $\Delta m_k$ 與 $\Delta p_k$ 都是透過額外的 conv. layer 獲得的。該 conv. layer 的 filter 數為 $3K$。前面 $2K$ 表示各 grid 的 offset。剩下的 $K$ 則會被送進 sigmoid layer,才得到 $\Delta m_k$。該 conv. layer 的初始值為 0,learning rate 為 deformable conv. 的 0.1 倍。
> 原文:The kernel weights in this separate convolution layer are initialized to zero. Thus, the initial values of $\Delta p_k$ and $\Delta m_k$ are 0 and 0.5, respectively.
>
> 問題:$\Delta m_k$ 的初始值為啥是 0.5 不是 0?
* modulated deformable RoIpooling:
* 公式如下:
$$
y(k) = \sum_{j=1}^{n_k} x(p_{kj} + \Delta p_k) * \Delta m_k / n_k
$$
* $p_{kj}$:第 $k$ 個 bin 的第 $j$ 個 grid cell 的位置
* $n_k$:一個 bin 中的 grid cell 個數
* $\Delta p_k$:第 $k$ 個 bin 的 offset
* $\Delta m_k$:第 $k$ 個 bin 的 modulation
* 跟 modulated deformable conv. 的概念類似,只差在 $\Delta p_k、\Delta m_k$ 是用 fc layer 產生的。先將 feature map 經過 2 層 1024 維的 fc layer 後,再經過 1 層 $3K$ 維的 fc layer。($K$:bin 的個數)
* 與 Deformable ConvNets v1 相同,$\Delta \hat{p_k}$ 還要再乘以 $(w, h)$ 才是最終的 $\Delta p_k$。($(w, h)$:bin size)
* modulation 一樣要經過 1 層 sigmoid。
### Experiemnts & Results
* Table 4 為 DCNv2 實驗在 object detection 上的結果。DCNv1 只修改 ResNet 中 conv5 的部分,而 DCNv2 則修改了 conv3 ~ conv5。且 DCNv2 使用的是 modulated deformable conv.、modulated deformable ROIpooling,DCNv1 則是 deformable 版。
<center><img src="https://i.imgur.com/kXxtzww.png"></center>
### References
[8] Deformable convolutional networks