全面解析可变形卷积家族(Deformable Convolutional Networks v1+ v2)

目录

  • DCN v1
  • DCN v2
  • 参考

DCN v1

背景

在计算机视觉领域,同一物体在不一样场景,角度中未知的几何变换是检测/识别的一大挑战,一般来讲咱们有两种作法:node

(1)经过充足的数据加强,扩充足够多的样本去加强模型适应尺度变换的能力。算法

(2)设置一些针对几何变换不变的特征或者算法,好比SIFT和sliding windows。windows

两种方法都有缺陷,第一种方法由于样本的局限性显然模型的泛化能力比较低,没法泛化到通常场景中,第二种方法则由于手工设计的不变特征和算法对于过于复杂的变换是很难的而没法设计。因此做者提出了Deformable Conv(可变形卷积)和 Deformable Pooling(可变形池化)来解决这个问题。微信

可变形卷积

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

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

咱们先看普通的卷积,以3x3卷积为例对于每一个输出y(p0),都要从x上采样9个位置,这9个位置都在中心位置x(p0)向四周扩散,(-1,-1)表明x(p0)的左上角,(1,1)表明x(p0)的右下角。因此传统的卷积输出就是(其中 就是网格中的n个点):正如咱们上面阐述的可变形卷积,他就是在传统的卷积操做上加入了一个偏移量,正是这个偏移量才让卷积变形为不规则的卷积,这里要注意这个偏移量能够是小数,因此下面的式子的特征值须要经过双线性插值的方法来计算。:svg

那这个偏移量如何算呢?咱们来看:函数

对于输入的一张feature map,假设原来的卷积操做是3×3的,那么为了学习偏移量offset,咱们定义另一个3×3的卷积层(图中上面的那层),输出的维度其实就是原来feature map大小,channel数等于2N(分别表示x,y方向的偏移)。下面的可变形卷积能够看做先基于上面那部分生成的offset作了一个插值操做,而后再执行普通的卷积。学习

可变形卷积的可视化

咱们能够从上图看到,能够看到当绿色点在目标上时,红色点所在区域也集中在目标位置,而且基本可以覆盖不一样尺寸的目标,所以通过可变形卷积,咱们能够更好地提取出感兴趣物体的完整特征,效果是很是不错的。flex

可变形池化

理解了可变形卷积以后,Deformable RoIPooling(可变形池化)就比较好理解了。原始的RoIPooling在操做过程当中是将RoI划分为k×k个子区域。而可变形池化的偏移量其实就是子区域的偏移。同理每个子区域都有一个偏移,偏移量对应子区域有k×k个。与可变形卷积不一样的是,可变形池化的偏移量是经过全链接层获得的。由于和可变形卷积相似,这里就很少讲了。

DCN v2

背景

DCN v1听起来不错,但其实也有问题:咱们的可变形卷积有可能引入了无用的上下文(区域)来干扰咱们的特征提取,这显然会下降算法的表现。做者也作了一个实验进行对比说明:咱们能够看到虽然DCN v1更能覆盖整个物体,可是同时也会引入一些无关的背景,这形成了干扰,因此做者提出了三个解决方法:

(1)More Deformable Conv Layers(使用更多的可变形卷积)

(2)Modulated Deformable Modules(在DCNv1基础(添加offset)上添加每一个采样点的权重)

(3)R-CNN Feature Mimicking(模拟R-CNN的feature)。

使用更多的可变形卷积

在DCN v1中只在conv 5中使用了三个可变形卷积,在DCN v2中把conv3到conv5都换成了可变形卷积,提升算法对几何形变的建模能力。

在DCNv1基础(添加offset)上添加每一个采样点的权重

咱们知道在DCN v1中的卷积是添加了一个offset :为了解决引入了一些无关区域的问题,在DCN v2中咱们不仅添加每个采样点的偏移,还添加了一个权重系数 ,来区分咱们引入的区域是否为咱们感兴趣的区域,假如这个采样点的区域咱们不感兴趣,则把权重学习为0便可:总的来讲,DCN v1中引入的offset是要寻找有效信息的区域位置,DCN v2中引入权重系数是要给找到的这个位置赋予权重,这两方面保证了有效信息的准确提取

R-CNN Feature Mimicking

做者发现把R-CNN和Faster RCNN的classification score结合起来能够提高performance,说明R-CNN学到的focus在物体上的feature能够解决无关上下文的问题。可是增长额外的R-CNN会使inference速度变慢不少。DCNV2里的解决方法是把R-CNN当作teacher network,让DCN V2的ROIPooling以后的feature去模拟R-CNN的feature,相似知识蒸馏的作法,下面会具体展开:左边的网络为主网络(Faster RCNN),右边的网络为子网络(RCNN)。实现上大体是用主网络训练过程当中获得的RoI去裁剪原图,而后将裁剪到的图resize到224×224大小做为子网络的输入,这部分最后提取的特征和主网络输出的1024维特征做为feature mimicking loss的输入,用来约束这2个特征的差别(经过一个余弦类似度计算,以下图所示),同时子网络经过一个分类损失进行监督学习,由于并不须要回归坐标,因此没有回归损失。在inference阶段仅有主网络部分,所以这个操做不会在inference阶段增长计算成本。再用直白一点的话说,由于RCNN这个子网络的输入就是RoI在原输入图像上裁剪出来的图像,所以不存在RoI之外区域信息的干扰,这就使得RCNN这个网络训练获得的分类结果更加可靠,以此经过一个损失函数监督主网络Faster RCNN的分类支路训练就可以使网络提取到更多RoI内部特征,而不是本身引入的外部特征。

总的loss由三部分组成:mimic loss + R-CNN classification loss + Faster-RCNN loss.

DCN v2可视化

经过实验结果咱们也能够看到DCN v2更能集中在物体的完整有效的区域:

参考

  • DCN v1论文https://arxiv.org/pdf/1703.06211.pdf
  • DCN v2论文https://arxiv.org/pdf/1811.11168.pdf
  • https://www.zhihu.com/question/303900394/answer/540818451


本文分享自微信公众号 - 计算机视觉漫谈(gh_41e38694bc19)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索