论文笔记:Deformable ConvNets v2: More Deformable, Better Results

概要

MSRA在目标检测方向Beyond Regular Grid的方向上越走越远,又一篇大做推出,相比前做DCN v1在COCO上直接涨了超过5个点,简直不要太疯狂。文章的主要内容可大体概括以下:网络

  • More dconv and Modulated donv:认为前做中卷积变形时容易采样到很差的位置,例如背景等无关信息,这对于检测是有伤害的,这一点从两个方面下手解决,一是堆叠更多的Deformable卷积(简称dconv),这个没必要多说;二是增长调制(modulated)功能,提出Modulated Deformabel卷积(简称mdconv),企图在采样到无关位置时,自适应地将这些位置的权重调低,以缓解其带来的伤害。这两下子一稿,AP从38.0提高到了41.7。
  • Feature Mimicking:因为Deformable ROI Pooling(简称dpool,加调制模块简称mdpool)会采样到ROI以外的内容,这些内容虽然说具备更多的上下文信息,但毕竟不属于ROI自己,可能对结果形成伤害。因此做者认为应该让dpool或mdpool获得的特征更“像”RCNN的特征,因而采用了知识蒸馏(这东西最近彷佛很屌)的方法,做者称之为R-CNN Feature Mimicking,实现了这一目标。我的对此很是惊讶,看上去是难以work的,真是没想到。。。AP从41.7又提到了43.1,简直不要太疯狂。
  • 模型分析:JiFeng老师还展现了一些分析模型表现的可视化方法,这一点对于我等炼丹师很是有教育意义。

模型分析

做者给出了三种可视化方法进行模型的分析,目的是从中发现DCN v1存在的问题,这几个方法虽然不是原创,但不得不说用得很是好,值得学习。性能

  • Effective receptive fields:感觉野的概念没必要多说,有效感觉野顾名思义就是感觉野中贡献突出的区域。经过计算网络中的节点对于图像中每一个像素的梯度,梯度值相对较大的地方就是了,具体的作法能够参阅此处的引文。
  • Effective sampling / bin locations:DCN v1中对dpool各个bin的采样做了可视化,但这些采样位置对于后续结果的相对贡献没有体现。一样地,做者也使用节点对于采样位置的梯度大小来讲明。
  • Error-bounded saliency regions:这个方法是借鉴显著性检测的思想。本文简称ESR,定义为:图像中一片最小的区域,这片区域对网络的响应与全图对网络的响应之差小于一个较小的bound。得到ESR的方法是逐步mask图像中的点,观察节点响应的变化,若是变化大于某个阈值,那么这个点就属于ESR。

如原文Figure 1,有朋友反映不太能get到这个图的点,这里简单分析一下。这个图是对conv5 stage的最后一层卷积运用上面三种方法分析的结果,第一列是个烧饼(小目标),第二列是人(大目标),第三列是背景,绿点是目标的中心,上面几种方法就是基于节点以这几个绿点为中心作卷积时的状况进行的(这句话真是绕)。能够看到,(a)的第一行,regular卷积的感觉野是regular的网格,感觉野内的权重中心高,四周低。而dconv和mdconv的感觉野理论上是全图,dconv比regular conv权重更集中于目标自己,而mdconv又比dconv更牛逼。其余两行要表达的东西其实相似。做者基于此概括出的结论参考原文,基本也就是这意思。学习

More Deformable ConvNets

为了更好地建模几何形变,固然要堆叠更多的dconv,前做中只在conv5阶段用了3层dconv,性能就饱和了,但那是在PASCAL上的结果,COCO比PASCAL要复杂得多(固然训练数据量多也是缘由之一),因此做者把conv3-conv5三个阶段12层conv都换成了dconv,妥妥的涨点。不过这不是主要的创新。spa

Modulated Deformable Modules

为了防止卷积变形时focus到无关位置,做者在dconv中加了一个调制项,
\[y(p) = \sum_{k=1}^{K} w_k \cdot x(p+p_k+\Delta p_k)\cdot \Delta m_k\]
符号就很少解释了,最后一项就是可学习的调制项,当采样点focus到无关位置时,这一项置0就能够挽回大局。调制项与前面的offset项用一样的方法得到,就是接一个旁支,以前输出2K个channel,如今输出3K个channel就是了。注意,看起来调制项和卷积核的参数w貌似是一回事,能够合写成一项,其实这是彻底不一样的,w是模型自己的参数,调制项是从输入特征中计算出来的,能够根据输入的不一样自适应地去完成本身的使命。
另外也将dpool改进成了mdpool,也是乘了一个调制项,同样的道理,在此再也不赘述。orm

R-CNN Feature Mimicking

对于这一点我我的的疑惑是比较大的,这种trick可以work我感到惊讶和佩服。操做的方法就是模型蒸馏那一套,这个东西最近挺火的,最近还有一篇投稿到CVPR2019作pose的也用了这东西去作模型的压缩,效果也比较惊艳,不过这里是用来作特征的模仿,不是压缩。要解决的问题其实仍是要筛除无关的上下文信息,做者认为加入调制项还不够,咱们知道,R-CNN的作法不考虑ROI以外的内容,也就不会引入无关的context,因此直接模仿R-CNN提的特征就行了。具体作法参见原文Figure3,获得ROI以后,在原图中抠出这个ROI,resize到224x224,再送到一个RCNN中进行分类,这个RCNN只分类,不回归。而后,主网络fc2的特征去模仿RCNN fc2的特征,实际上就是二者算一个余弦类似度,1减去类似度做为loss便可,见原文公式(3)。这个东西确实是work了,不过我的有个重大疑问,或许也是能够改进的点,欢迎各位看官一块儿讨论:blog

主网络fc2的特征要用来分类,也要用来回归bbox,而RCNN的fc2特征只用来分类,让主网络的fc2特征去模仿RCNN,是否是会丢失定位信息?也就是说,Mimic Loss会不会跟bbox回归Loss产生某种意义上的冲突?能不能试试拆分一下fc2特征,把用于分类和用于回归的特征分开,只模仿用于分类的部分?固然,这个想法不成熟,有待商榷,不过感受直接Mimic真的有一丢丢粗暴。
就这样吧,还要抓紧读JiFeng老师刚发的另外一篇paper。=_=get

相关文章
相关标签/搜索