目标检测总结:Deformable Convolutional Networks

目标检测总结:Deformable Convolutional Networks

    • Deformable Convolution
    • Deformable RoIPooling
    • DCN的效果

  文章的出发点是几何形变和几何变化的建模一种是卷积神经网络的难点,之前常见的解决方法有两个:1运用数据增强的方法构建包含各种变化的数据集,2使用具有形变不变性的特征和算法(比如SIFT等)。但这两个方法对未知的形变无法处理,并且如果已知的形变过于复杂,SIFT也是无法应付的,为了解决这个问题,作者提出了 可变形卷积可变形roipooling。这两种方法都是基于一个平行网络学习一个偏移量,使卷积核在采样点发生偏移,集中于我们感兴趣的区域和目标。

Deformable Convolution

CNN中卷积和特征映射都是3D的,但可变形卷积和RoIPooling都是在2D的空间域上进行的,通道维度上的操作保持不变。如下图所示,a为传统卷积操作的时候一个卷积核大小,b、c、d为加入了偏移量的可变形卷积。
目标检测总结:Deformable Convolutional Networks_第1张图片
首先介绍一下可变形卷积是怎么操作的。对于传统的卷积,下式中的R定义了1个3×3的卷积核。
在这里插入图片描述
那么传统的卷积的映射可以由下式表示:
目标检测总结:Deformable Convolutional Networks_第2张图片
其中Pn枚举了R中的位置。
在可变形卷积中,卷积的映射是由下式表示的:
在这里插入图片描述
也就是说可变形卷积在原本卷积的基础上加了一个偏移量,需要注意的是,这个偏移量是位置的偏移量,通俗一点讲,某个点位于原图的(0,0)位置,有了偏移量之后,可能位于(1.1,2.3)的位置。注意偏移量可能是浮点的小数。由于偏移得到的位置可能是小数,所以上式的特征值需要通过双线性插值的方法来计算。
刚才解释了可变形卷积的计算时通过对位置的偏移得到的,那么偏移量是怎么得到的呢?
目标检测总结:Deformable Convolutional Networks_第3张图片
如上图所示,偏移量是通过对原始特征层进行卷积得到的。比如输入特征层是w×h×c,先对输入的特征层进行卷积操作,得到w×h×2c的offset field。这里的w和h和原始特征层的w和h是一致的,offset field里面的值是输入特征层对应位置的偏移量,偏移量有x和y两个方向,所以offset field的channel数是2c。offset field里的偏移量是卷积得到的,可能是浮点数,所以接下来需要通过双向性插值计算偏移位置的特征值。在偏移量的学习中,梯度是通过双线性插值来进行反向传播的。

Deformable RoIPooling

目标检测总结:Deformable Convolutional Networks_第4张图片
理解了可变形卷积之后,Deformable RoIPooling就比较好理解了。原始的RoIPooling在操作过程中是将RoI划分为k×k个子区域。而Deformable RoIPooling的偏移量其实就是子区域的偏移,也就是说k×k个子区域不在紧挨在一起,而是每一个都有一个偏移,偏移量有k×k个。与可变形卷积不同的是,Deformable RoIPooling的偏移量是通过全连接层得到的。
目标检测总结:Deformable Convolutional Networks_第5张图片
目标检测总结:Deformable Convolutional Networks_第6张图片
另外,论文中还提到了Deformable position-sensitive RoIPooling,这个结构主要是针对R-FCN网络。论文中这一部分我没有细看,感兴趣的可以参考这篇博客

DCN的效果

目标检测总结:Deformable Convolutional Networks_第7张图片
上图表明DCN可以根据目标自适应的调整感受野尺度和形状
目标检测总结:Deformable Convolutional Networks_第8张图片
目标检测总结:Deformable Convolutional Networks_第9张图片
上图表明Deformable RoIPooling也会根据目标的形状调整子区域的位置
目标检测总结:Deformable Convolutional Networks_第10张图片
另外作者表明,加入可变形卷积和池化的目标检测算法结果都有提升。算法好不好,主要还是看疗效。
另外作者在论文中将deformable convolutional networks和之前很多相关的工作做了对比,有时间再补这一部分内容。感兴趣的话可以参考博客

你可能感兴趣的:(深度学习)