MSRA在目标检测方向Beyond Regular Grid的方向上越走越远,又一篇大做推出,相比前做DCN v1在COCO上直接涨了超过5个点,简直不要太疯狂。文章的主要内容可大体概括以下:网络
做者给出了三种可视化方法进行模型的分析,目的是从中发现DCN v1存在的问题,这几个方法虽然不是原创,但不得不说用得很是好,值得学习。性能
如原文Figure 1,有朋友反映不太能get到这个图的点,这里简单分析一下。这个图是对conv5 stage的最后一层卷积运用上面三种方法分析的结果,第一列是个烧饼(小目标),第二列是人(大目标),第三列是背景,绿点是目标的中心,上面几种方法就是基于节点以这几个绿点为中心作卷积时的状况进行的(这句话真是绕)。能够看到,(a)的第一行,regular卷积的感觉野是regular的网格,感觉野内的权重中心高,四周低。而dconv和mdconv的感觉野理论上是全图,dconv比regular conv权重更集中于目标自己,而mdconv又比dconv更牛逼。其余两行要表达的东西其实相似。做者基于此概括出的结论参考原文,基本也就是这意思。学习
为了更好地建模几何形变,固然要堆叠更多的dconv,前做中只在conv5阶段用了3层dconv,性能就饱和了,但那是在PASCAL上的结果,COCO比PASCAL要复杂得多(固然训练数据量多也是缘由之一),因此做者把conv3-conv5三个阶段12层conv都换成了dconv,妥妥的涨点。不过这不是主要的创新。spa
为了防止卷积变形时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
对于这一点我我的的疑惑是比较大的,这种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