目标检测论文阅读:Deformable Convolutional Networks

这篇论文其实读起来还是比较难懂的,主要是细节部分很需要推敲,尤其是deformable的卷积如何实现的一步上,在写这篇博客之前,我也查阅了很多其他人的分享或者去github找代码,当然也不敢说完全了解了这种特殊的卷积……仅仅做一点自己的阅读心得与体会吧。这是一篇很有意义的工作,但是和深度学习很多论文一样,在读完之后内心也不免有着种种疑云。

Deformable Convolutional Networks

论文链接:https://arxiv.org/abs/1703.06211
代码链接:https://github.com/msracver/Deformable-ConvNets(官方实现,但是release的版本是迁移到MXNet上的,速度和performance上有些出入)
MSRA的文章,严格意义上讲,deformable convolutional不仅仅只适用于object detection,作为对常见的卷积的一种改良,它可以广泛应用在各个网络中,和空洞卷积一样,是对传统卷积的改良,而且某种意义上也可以说是空洞卷积的进一步拓展。

1. Background

这篇文章的motivation其实比较简单,我们都知道,常规的卷积,包括池化这些操作,不管你怎么累加,基本得到的都是矩形框……这个其实非常不贴合实际,在对不规则的目标建模的时候有非常大的局限性。
作者认为克服建模形变困难主要是两种方法:

  1. 通过提供变化足够丰富的大量训练样本,让训练器强行记忆拟合
  2. 设计能够检测到形变的特征和算法,这方面主要还是以hand-crafted的特征为主,这种在对付没有考虑到的形变和过于复杂的形变的时候其实比较无力
    CNN其实不具有旋转不变性和尺度不变性的,所以本质上CNN是用的策略1,缺乏判断形变的策略依据。局限性比较多,比如固定的box对于灵活物体来说非常僵硬,比如同一层的特征图的不同位置可能对应的是不同形状的物体,但是都和同一个卷积做计算。(理解这一点比较重要,涉及到后面对deformable卷积的理解)
    作为对上述问题的解决方案,作者提出了一种新的卷积方式deformable convolution,在此基础上提出了一种新的RoI pooling方法deformable RoI pooling。主要思路就是卷积操作不是在规规矩矩的3x3的格子里做了,而是有了种种偏移,如下图所示:
    这里写图片描述
    至于这个位置偏移是怎么做的?看下个部分

2. Deformable Convolutional Networks

2.1 deformable卷积的计算公式

我们知道,一般的卷积是这种形式的:
这里写图片描述
留意到p0是中心点,pn是属于R的3x3的kernel的9个位置,因此这是在3x3方格内采样的一个规则卷积,而可形变的卷积就是在x(po+pn)之中再加上一个偏移量:
这里写图片描述
在实际当中,因为添加的这个偏移量往往是小数,导致比较难处理,作者采用的办法是双线性差值,根据相邻的点来进行计算具体公式如下,留意到这里的a-b如果差值大于1了,g就是0,所以只有比较接近的点才对线性差值的点有效果:
这里写图片描述
这里写图片描述
(以上是公式化的内容,关于差值内容如何求导可以到附录里面找)

2.2 偏置求法

重点来了,怎么得到这个偏移量?,可变卷积神经网络的示意图如下图所示:
这里写图片描述
deformable convolution在特征图的每个位置都生成一个偏移量,注意是特征图的每个位置而不是卷积核的每个位置,我之前也经常误解为后者……实际上这里的特征图经过conv得到一个2N的offset field,N就是通道数,field是和feature map相同的,这样HxWxN的feature map就得到了一个HxWx2N的offset filed,正好每个feature map位置有两个偏移量。
然后将偏移量对应到原来feature map的每个位置,就可以在原来的feature map上做deformable卷积了~还不理解的话可以看这篇博客https://blog.csdn.net/u011974639/article/details/79996353,是对照着代码讲的,很详细,不过这个只是帮助理解原理的,不能直接用,没有重写op,太慢。
还需要注意的一点是,如果input feature map到output feature map用的是空洞卷积之类的特殊结构的话,生成offset field的卷积也要使用相应的结构以保证一致。

2.3 Deformable RoI Pooling

为RoI pooling添加deformable机制其实和卷积的非常类似。因为本身RoI pooling的时候和卷积一样,选取的也是方形区域,我们要做的也是增加偏移量。原来的RoI pooling过程可以表示为如下:
这里写图片描述
那么新的RoI pooling计算公式则如下:
这里写图片描述
而它的偏移量的网络结构和计算过程如下图所示:
这里写图片描述
这里写图片描述
其中,要注意的有两点:

  1. feature map此处是用fc来学习的,而且也不是直接学习最终偏移量,而是学习头上带三角号的那个变量……
  2. 这个变量会和(w, h)做点乘,然后再乘以一个尺度因子,其中w,h是RoI的宽和高,而伽马是一个0.1的常数因子……个人理解,前者是为了让deformable能和RoI的尺度结合起来,更好地估计偏移位置;而后者是为了防止偏移量太大甚至超出RoI和整个图像……之前也看到有人认为,DNN网络最后几层经常会出现感受野不足的情况,所以空洞卷积才会效果比一般卷积好,如果不加约束,deformable的RoI可能无限制地扩大,这个观念我还不是很理解,日后如果有了新发现再更新吧
    另外就是作者还搞出了一个和R-FCN的位置敏感比较类似的另一种RoI方法,同样是考虑deformable因素的,叫Position-Sensitive (PS) RoI Pooling,这里就不详细介绍了

2.4 deformable networks

这个部分没什么太多内容要介绍的,因为deformable卷积使用前后feature map是不变化的,因此大致上就是将卷积和Pooling方法直接替换到一些主流方法里就好……一些网络设置就不谈了,说两个我感觉比较重要的点:

  1. 学习offset的那些参数怎么初始化和学习:作者采用的是0初始化,然后按照网络其它参数学习率的 β \beta β倍来学习,这个KaTeX parse error: Undefined control sequence: \beata at position 1: \̲b̲e̲a̲t̲a̲默认是1,但在某些情况下,比如faster rcnn中的fc的那些,是0.01
  2. 并不是所有的卷积都一股脑地换成可行变卷积就是好的,在提取到一些语义特征后使用形变卷积效果会更好一点,一般来说是网络靠后的几层

3. 网络理解和实验结果

3.1 对deformable卷积的理解

作者绘制了一些图来方便我们理解deformable卷积,例如常规卷积和可形变卷积的一些对比:
这里写图片描述
最上面的top feature map的activation units,中间层和最下层是上一层和上上层的卷积,可以看到它们产生的过程。这张图应该会更清晰一点的:
这里写图片描述
绿色的点是activation units,而红色的点是激活点在3个level的deformable filters采样位置(一共9的三次方700多个点),左中右分别是背景类,小目标和中等目标的采样点分布,和传统的卷积还是产生了很大差异的。
另外也有关于RoI pooling中的9个Bin和gt的图,可以看到和传统的方法的差别,RoI pooling也会根据物体产生形变:
这里写图片描述
作者认为可形变卷积的优势还是很大的,包括:

  1. 对物体的形变和尺度建模的能力比较强
  2. 感受野比一般卷积大很多,因为有偏移的原因,实际上相关实验已经表明了DNN网络很多时候受感受野不足的条件制约;但是一般的空洞卷积空洞是固定的,对不同的数据集不同情况可能最适合的空洞大小是不同的,但是可形变卷积的偏移是可以根据具体数据的情况进行学习的
    另外值得一提的是,作者发现可形变卷积可以适应物体的尺度,而背景类的尺度一般在medium和large尺寸的物体之间,作者认为这说明large的目标可以更有效帮助我们识别干扰,也算是无心插柳吧。

3. 2 实验结果

这是作者给出的最终结果,class-aware RPN是指分类别的RPN,可以视作一个简易版本的SSD,而对DeepLab的方法笔者也不是很了解。
这里写图片描述
总的来说,这个工作亮点是很多,包括对卷积的改良,知乎上对这个工作有一些讨论包括评论我觉得还是很不错的:
https://www.zhihu.com/question/57493889/answer/153369805 (包括评论),卷积改变为类似采样的思路都是很有意义的。但是看完之后总感觉也有一些疑问,比如怀疑是否一层网络真的能有效学习偏置,不同图片的大量不同物体在offset优化上会不会引发竞争什么的,不过都属于很难量化和考察的内容了,最后还是要靠实验结果说话,大概是目前炼丹的通病吧,有兴趣的也可以留言讨论下~

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可变形卷积网络(Deformable Convolutional Networks, DCN)是一种卷积神经网络,其允许卷积核的形状在运行时发生变化。这使得网络能够适应不同形状的目标,并在识别对象时获得更高的精度。DCN通过在普通卷积层上加入一个可变形控制层来实现可变形卷积。 ### 回答2: 可变形卷积网络(Deformable Convolutional Networks,DCN)是一种基于卷积神经网络(CNN)的改进技术。它是由微软亚洲研究院提出的一种新型的卷积实现。相比于传统的卷积操作,可变形卷积更加适合于图像中存在的错位、形变等问题。 可变形卷积网络使用了可变形卷积操作代替了普通的卷积操作。其主要思想是在空间结构中引入可变形卷积核,并利用其根据突出区域自适应进行偏移,从而获得更准确的分割结果。具体来说,可变形卷积使用了两个并行的转换网络,它们的输出结果被用来控制卷积核的偏移。一个转换网络用于生成偏移量,而另一个用于生成系数。 对于一个输入图像的像素点而言,传统的卷积操作使用的卷积核是在固定位置上的局部像素数据去学习特征的权重。而可变形卷积则引入了可变形卷积核,并增加了一个偏移量的学习过程。即可变形卷积核首先会根据突出区域自适应调整,形成具有方向性和形变性质的卷积核,再用这个卷积核去识别图像的特征。 总之,相比较于使用固定的卷积核来进行卷积操作,可变形卷积网络可以更加准确地提取图像的特征,消除像素错位的问题,并获得更加可靠和精准的预测结果。近年来,可变形卷积网络已经被广泛应用到目标检测、语义分割等领域,取得了不俗的成效。 ### 回答3: Deformable Convolutional Networks(可变形卷积网络)是一种基于卷积神经网络(CNN)的创新结构,能够自适应感受野来适应不同尺度的特征提取。传统CNN的卷积核是固定的,无法区分不同位置像素的重要性,而DCN则引入了可变形卷积来实现自适应调整卷积核,从而获得更好的特征提取能力。 DCN最大的特点就是在卷积操作中引入了可变形卷积,即使卷积核不断变形,也能够对图像中不同成分进行区分。具体来说,可变形卷积将每个卷积核拆分成两部分,一部分是原始卷积核,一部分则是从特征图中自适应生成的偏移量。通过调整偏移量,可变形卷积核能够自适应调整,以适应不同的图像区域,从而提高了准确率。 相对于传统CNN,DCN在许多领域都有了极大的优势。比如在目标检测中,DCN能够对于不同尺度的物体进行更好的特征提取,因此在各种目标检测任务中都取得了很不错的成果。在语义分割领域,DCN能够真正意义上地较好地适应于不规则的语义区域,能够更加准确地分割出更加复杂的物体。 总之,Deformable Convolutional Network 是一种创新结构,能够通过引入可变形卷积来提高图像特征提取的准确性,并在目标检测和分类、语义分割等领域中取得了良好的表现。未来,这种创新性结构还会不断地被应用于更加丰富多彩的图像识别场景中,带来更加优秀的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值