代码地址:DCNv2
导读:可变形卷积(Deformable Convolution)的特性使得其拥有适应目标几何形状的能力。在可变形卷积v1版本中,引入了Deformable conv和Deformable RoIPooling,它们对卷积和RoIPooling的分布入来offset(可学习)来使得神经网络关注真实的物体形状。通过对引入offset后的感受野进行可视化(下面要介绍的三个可视化分析),作者发现卷积以及Pooling的采样点,采样框,在特定的物体上进行了聚集,但是这些感受野覆盖的地方并不是特别的精确,这可能导致引入了一些无关信息,作者发现这种问题在一些困难的任务中更加明显。
对此,文章给出了原有Deformable ConvNets的升级版本Deformable ConvNets v2(DCNv2),增强了学习可变形卷积的建模能力。其能力的增强来源于两个互补的部分,使得网络模块能够改变空间分布及其样本之间的相对影响:
除了了上述在在模型上进行改进,但是尽管有上述的改进可视化之后还是包含一些对于检测有影响的信息进来,因而文章还在网络的训练阶段引入了 RCNN feature mimicking,这部分受论文Revisiting rcnn: On awakening the classification power of faster rcnn的启发,不过实现方式不一样,这篇文章通过联合训练RCNN网络提供有效的监督信息,发挥modulation的权重作用,使得提取到的特征更加集中于有效区域。
为了能够更高理解Deformable卷积,这里使用了三种可视化方法: effective receptive fields、effective sampling locations以及error-bounded saliency regions,这里对网络节点(也就是对应的输出“点”)响应使用这三个方法进行分析。
作者在卷积层conv5的角度上进行观察三种方法可视化之后的结果对比,从左到右分别是小目标、大目标和背景,从上往下分别是effective sampling locations、effective receptive field和error-bounded saliency regions。
对于普通的卷积层:
对于DCNv1:
对于DCNv2:
从中得出的结论:
图2中的(a)(b)图是在是ROIPooling之后的bin中使用文章之前的提到的可视化方法进行可视化得到的结果,effective bin location指出目标的前景很大一步分来自于分类的分支,这个现象在aligned RoIPooling与Deformable RoIPooling中同样存在。自然由于学些了卷积的偏移使得Deformable RoIPooling在获得的bin中有更大的比例覆盖到了目标前景。但是文章指出了在往回倒推到输入图像的像素的时候可以看到effective bin location并没有全部落在目标区域中,这些未落在目标区域中的区域是可能会干扰检测的,这也是这篇文章中需要处理的。
对此的处理首先是使用调制的Deformable卷积,得到的结果为:
在此基础上使用RCNN Feature mimicking:
单独验证RCNN Feature mimicking的作用:
为了提高网络适应几何变化的能力,文章提出了一些变化来增强其建模能力。
Deformable卷积对几何信息能够建模,自然堆叠更多这样的卷积可以使得网络表达能力更强。作者之前在Pascal VOC数据集上将conv5中的卷积替换为了Deformable卷积就出现了性能饱和章指出这可能是数据集复杂度的问题,因而在COCO数据集上将ResNet-50中的conv3、conv4与conv5全部替换为了变形卷积。
在之前的Deformable卷积中会去学习每个卷积位置处的偏移,这里更近一步对其添加了权重(文章中说为“调制”),这样就给了Deformable卷积除了偏移之外额外的特征处理自由度,也因而加强了网络的表达能力,同理这里也对Deformable卷积与Deformable RoIPooling进行了改进。
首先对于Deformable卷积,使用如下形式进行计算,其中加权的因子也就是下面公式中的参数 Δ m k ∈ [ 0 , 1 ] \Delta m_k \in [0,1] Δmk∈[0,1]。
y ( p ) = ∑ k = 1 K w k ⋅ x ( p + p k + Δ p k ) ⋅ Δ m k y(p)=\sum_{k=1}^{K}w_k\cdot x(p+p_k+\Delta_{p_k})\cdot \Delta_{m_k} y(p)=k=1∑Kwk⋅x(p+pk+Δpk)⋅Δmk
对于Deformable RoIPooling使用如下的方式进行改进:
y ( p ) = ∑ j = 1 n k x ( p k j + Δ p k ) ⋅ Δ m k / n k y(p)=\sum_{j=1}^{n_k}x(p_{kj}+\Delta_{p_k})\cdot \Delta_{m_k}/n_k y(p)=j=1∑nkx(pkj+Δpk)⋅Δmk/nk
文章中说到的RCNN feature mimicking其实现示意图如Figure3所示,姑且称左边的网络为主网络(Faster RCNN),右边的网络为子网络(RCNN)。实现上大致是用主网络训练过程中得到的RoI去裁剪原图,然后将裁剪到的图resize到224×224大小作为子网络的输入,子网络通过RCNN算法提取特征,最终提取到14×14大小的特征图,此时再结合IoU(此时的IoU就是一整个输入图区域,也就是224×224)作为modulated deformable RoI pooling层的输入得到IoU特征,最后通过2个fc层得到1024维特征,这部分特征和主网络输出的1024维特征作为feature mimicking loss的输入,用来约束这2个特征的差异,同时子网络通过一个分类损失进行监督学习,因为并不需要回归坐标,所以没有回归损失。在inference阶段仅有主网络部分,因此这个操作不会在inference阶段增加计算成本。
那么为什么R-CNN Feature Mimicking方法有效?因为RCNN这个子网络的输入就是RoI在原输入图像上裁剪出来的图像,因此不存在RoI以外区域信息的干扰,这就使得RCNN这个网络训练得到的分类结果更加可靠,以此通过一个损失函数监督主网络Faster RCNN的分类支路训练就能够迫使网络提取到更多RoI内部特征,而这个迫使的过程主要就是通过添加的modulation机制和原有的offset实现。
期间引入的损失函数:
L m i m i c = ∑ b ∈ Ω [ 1 − c o s ( f R C N N ( b ) , f F R C N N ( b ) ) ] L_{mimic}=\sum_{b\in \Omega}[1-cos(f_{RCNN}(b),f_{FRCNN}(b))] Lmimic=b∈Ω∑[1−cos(fRCNN(b),fFRCNN(b))]
其中的实验结果也表明了论文中说的选用正样本去特征相似学习才是有效的。