day13-可变形卷积
Deformable Convolution可变形卷积,由微软亚洲研究院提出
DCNv1:[1703.06211] Deformable Convolutional Networks
DCNv2:[1811.11168] Deformable ConvNets v2: More Deformable, Better Results
1 标准卷积
传统卷积是对输入特征图的每一个位置施加相同的权重,并在固定的感受野上进行计算。这种固定的几何结构对空间上存在复杂变形(如旋转、缩放、非刚性变形等)的目标存在局限性。
2 Deformable Convolution可变形卷积
可变形卷积的核心思想是引入自适应的空间位移(offsets),灵活应对几何变形,从而更好的捕捉和建模物体细节。
它通过两个步骤来实现:
-
学习偏移量:通过额外的卷积层来学习卷积核在每个位置的偏移量(offsets)。
-
采样和卷积:根据学习到的偏移量对输入特征图进行采样,进而完成卷积操作。
2.1图解可变形卷积
图解:
-
Conv: 用于生成特征图和偏移量的卷积层。
-
Offset Field: 通过卷积生成的偏移量,用于指导后续的可变形卷积如何“变形”。
-
2N:对于 N 大小的卷积核(如 3×3 的核 N=9),需要生成 N 个偏移向量。
偏移向量包含 x 和 y 两个方向,因此偏移量的维度是 2× N。
-
Deformable Convolution: 最终结合偏移量后,在输入特征图上进行自适应采样的卷积操作。
-
偏移量共享,权重独立;
2.2数解可变形卷积
2.2.1采样点集合
卷积核的采样点集合 R 公式如下表示:k 是卷积核大小
$$
\mathcal{R}=\{(i,j)|i,j\in[-\frac{k-1}{2},\frac{k-1}{2}]\}
$$
如果考虑膨胀卷积:d 是膨胀率, d = 1 就是不膨胀
$$
\mathcal{R}=\{(i\cdot d,j\cdot d)|i,j\in[-\frac{k-1}{2},\frac{k-1}{2}]\}
$$
于是就有了上面的R: 3×3,且 d = 1:
$$
\mathcal{R}=\{(-1,-1),(-1,0),(-1,1),(0,-1),(0,0),(0,1),(1,-1),(1,0),(1,1)\}
$$
2.2.2标准卷积
$$
y(\mathbf{p}_0)=\sum_{\mathbf{p}_n\in\mathcal{R}}w(\mathbf{p}_n)\cdot x(\mathbf{p}_0+\mathbf{p}_n)
$$
$$
p_0:中心位置坐标
$$
$$
\mathcal{R}:卷积核的采样点集合。
$$
$$
\mathbf{p}_n:相对于中心点 \mathbf{p}_0 的第 n 个采样点的位置。
$$
$$
w(\mathbf{p}_n):卷积核在第 n 个位置的权重。
$$
$$
x(\mathbf{p}_0 + \mathbf{p}_n):输入特征图 x 在位置 \mathbf{p}_0 + \mathbf{p}_n 处的像素值。
$$
2.2.3可变形卷积
$$
\mathbf{y}(\mathbf{p}_0)=\sum_{\mathbf{p}_n\in\mathcal{R}}\mathbf{w}(\mathbf{p}_n)\cdot\mathbf{x}(\mathbf{p}_0+\mathbf{p}_n+\Delta\mathbf{p}_n)
$$
$$
p_0表示中心位置坐标
$$
$$
\Delta \mathbf{p}_n:卷积核第 n 个位置的偏移量,它通过额外的卷积层动态学习得到。
$$
非整数位置:学习到的偏移位置并非整数,那如何定位采样位置?通过双线性插值计算得到。
3 实验效果
可变形卷积通过将采样位置与感兴趣的实例对齐来帮助更好地进行特征采样,并更好地处理比例、旋转和纵横比的变化。