第三十六课.可变形卷积

背景

视觉识别的一个关键挑战是如何适应物体尺度、姿态、视点和零件变形的几何变化或模型几何变换。

但对于视觉识别的传统CNN模块,不可避免的都存在固定几何结构的缺陷:卷积单元在固定位置对输入特征图进行采样;池化层以固定比率降低空间分辨率;一个ROI(感兴趣区域)池化层将一个ROI分割成固定的空间单元;缺乏处理几何变换的内部机制等。

这些将会引起一些明显的问题。例如,同一CNN层中所有激活单元的感受野大小是相同的,这对于在空间位置上编码语义的高级CNN层是不需要的。而且,对于具有精细定位的视觉识别(例如,使用全卷积网络的语义分割)的实际问题,由于不同的位置可能对应于具有不同尺度或变形的对象,因此,尺度或感受野大小的自适应确定是可取的

为了解决以上所提到的局限性,一个自然地想法就诞生了:卷积核自适应调整自身的形状。这就产生了可变形卷积的方法。

DCN

可变形卷积顾名思义就是卷积的位置是可变形的,并非在传统的 N N N个采样点的网格上做卷积,这样的好处就是更准确地提取到我们想要的特征(传统的卷积仅仅只能提取到矩形框的特征),通过一张图我们可以更直观地了解:
fig1
在上面这张图里面,左边传统的卷积显然没有提取到完整绵羊的特征,而右边的可变形卷积则提取到了完整的不规则绵羊的特征。

那可变卷积实际上是怎么做的呢?其实就是在每一个卷积采样点加上了一个偏移量,如下图所示:
fig2
a 所示的正常卷积规律的采样 9 个点(绿点);b,c,d 为可变形卷积,在正常的采样坐标上加上一个位移量(蓝色箭头);其中 c和d 作为 b 的特殊情况,展示了可变形卷积可以处理尺度变换,比例变换和旋转变换等特殊情况。

普通的卷积,以 3 × 3 3\times 3 3×3卷积为例,对于每个输出 y ( p 0 ) , p 0 = ( 0 , 0 ) y(p_{0}),p_{0}=(0,0) y(p0),p0=(0,0),都要从 x x x上面采样9个位置,这9个位置都在中心位置 x ( p 0 ) x(p_{0}) x(p0)向四周扩散, ( − 1 , − 1 ) (-1,-1) (1,1)代表 x ( p 0 ) x(p_{0}) x(p0)的左上角, ( 1 , 1 ) (1,1) (1,1)代表 x ( p 0 ) x(p_{0}) x(p0)的右下角。采样区域包括: R = { ( − 1 , − 1 ) , ( − 1 , 0 ) , . . . , ( 1 , 1 ) } R=\left\{(-1,-1),(-1,0),...,(1,1)\right\} R={ (1,1),(1,0),...,(1,1)}所以传统卷积输出的就是: y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n ) y(p_{0})=\sum_{p_{n}\in R}w(p_{n})\cdot x(p_{0}+p_{n}) y(p0)=pnRw(pn)x(p0+pn)其中, p n p_{n} pn是采样网格中的第 n n n个点, w ( p n ) w(p_{n}) w(pn)为对应的卷积核权重系数。

正如上面阐述的可变形卷积,就是在传统的卷积操作上加入了一个偏移量 Δ p n \Delta p_{n} Δpn,正是这个偏移量才让卷积变形为不规则的卷积,这里要注意这个偏移量可以是小数,所以下面的式子的特征值需要通过双线性插值的方法来计算。 y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n + Δ p n ) y(p_{0})=\sum_{p_{n}\in R}w(p_{n})\cdot x(p_{0}+p_{n}+\Delta p_{n}) y(p0)=pnRw(pn)x(p0+pn+Δpn)这个偏移量的计算如下:
fig3
对于输入的input feature map,假设原来的卷积操作是 3 × 3 3×3 3×3的,那么为了学习偏移量offset,我们定义另外一个 3 × 3 3×3 3×3的卷积层(图中上面的那层),输出其实就是只用常规卷积输出的 output feature map大小,但是channel数等于 2 ∗ 3 2 2*3^{2} 232(分别表示x,y方向的偏移, 3 3 3为卷积核的size)。

实例效果

fig4
可以从上图看到,可以看到当绿色点在目标上时,红色点所在区域也集中在目标位置,并且基本能够覆盖不同尺寸的目标,因此经过可变形卷积,我们可以更好地提取出感兴趣物体的完整特征,效果是非常不错的。

DCN听起来不错,但其实也有问题:我们的可变形卷积有可能引入了无用的上下文(区域)来干扰我们的特征提取,这显然会降低算法的表现。通过上图的对比实验结果(多边形区域框,第三行)我们也可以看到DCN会引入无关信息,比如墙面引入了过多的猫的信息。

也许我们应该放弃使用卷积学习偏移量,而考虑使用自注意力机制去学习更全局的偏移量以去除无关上下文信息的干扰。

DCNv2

为了解决无关区域的问题,在DCNv2中,引入权重系数 Δ m k ∈ [ 0 , 1 ] \Delta m_{k}\in [0,1] Δmk[0,1],如果这个采样点的区域不感兴趣,权重系数的值会很小,DCNv2为: y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n + Δ p n ) ⋅ Δ m k y(p_{0})=\sum_{p_{n}\in R}w(p_{n})\cdot x(p_{0}+p_{n}+\Delta p_{n})\cdot\Delta m_{k} y(p0)=pnRw(pn)x(p0+pn+Δpn)Δmk同样的, Δ m k \Delta m_{k} Δmk也是由单独的卷积层输出的。

DCN范式

DCN期望的规范操作接口可以按照paddle api来定义:

paddle.vision.ops.deform_conv2d(*x*, *offset*, *weight*, 
                                *bias=None*, *stride=1*, *padding=0*, *dilation=1*, 
                                *deformable_groups=1*, *groups=1*, *mask=None*, *name=None*);
  • 参数x为输入:形状为 ( N , C i n , H i n , W i n ) (N,C_{in},H_{in},W_{in}) (N,Cin,Hin,Win)
  • offset为可变形卷积的输入坐标偏移:形状为 ( N , 2 ∗ H f ∗ W f , H o u t , W o u t ) (N,2*H_{f}*W_{f},H_{out},W_{out}) (N,2HfWf,Hout,Wout)
  • weight为卷积核参数:形状为 ( C o u t , C i n , H f , W f ) (C_{out},C_{in},H_{f},W_{f}) (Cout,Cin,Hf,Wf)
  • mask为可变形卷积的输入掩码:形状为 ( N , H f ∗ W f , H o u t , W o u t ) (N,H_{f}*W_{f},H_{out},W_{out}) (N,HfWf,Hout,Wout),当使用DCN v1时,mask设置为None

输出张量的形状为 ( N , C o u t , H o u t , W o u t ) (N,C_{out},H_{out},W_{out}) (N,Cout,Hout,Wout)

其中: H o u t = ( H i n + 2 ∗ p a d d i n g s [ 0 ] − ( d i l a t i o n s [ 0 ] ∗ ( H f − 1 ) + 1 ) ) s t r i d e s [ 0 ] + 1 H_{out}=\frac{(H_{in}+2*paddings[0]-(dilations[0]*(H_{f}-1)+1))}{strides[0]}+1 Hout=strides[0](Hin+2paddings[0](dilations[0](Hf1)+1))+1 W o u t = ( W i n + 2 ∗ p a d d i n g s [ 1 ] − ( d i l a t i o n s [ 1 ] ∗ ( W f − 1 ) + 1 ) ) s t r i d e s [ 1 ] + 1 W_{out}=\frac{(W_{in}+2*paddings[1]-(dilations[1]*(W_{f}-1)+1))}{strides[1]}+1 Wout=strides[1](Win+2paddings[1](dilations[1](Wf1)+1))+1

关于api内部操作的细节

每个input图片数据对应的输出feature map中的每个pixel位置都有一个大小为 2 ∗ H f ∗ W f 2*H_{f}*W_{f} 2HfWf的偏移项和 H f ∗ W f H_{f}*W_{f} HfWf的掩膜。这样的大小设置是因为在每个输出pixel位置上我们有 H f ∗ W f H_{f}*W_{f} HfWf个采样点,每个点都有对应的两个偏移方向和一个重要程度。前者就对应了我们的偏移项,后者就对应了掩膜项。

Reference

[1] Dai J , Qi H , Xiong Y , et al. Deformable Convolutional Networks[J]. IEEE, 2017.

[2] Zhu X , Hu H , Lin S , et al. Deformable ConvNets V2: More Deformable, Better Results[C]// 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2019.

猜你喜欢

转载自blog.csdn.net/qq_40943760/article/details/124984314
今日推荐