论文笔记: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,妥妥的涨点。不过这不是主要的创新。
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,也是乘了一个调制项,一样的道理,在此不再赘述。
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了,不过个人有个重大疑问,或许也是可以改进的点,欢迎各位看官一起讨论:
主网络fc2的特征要用来分类,也要用来回归bbox,而RCNN的fc2特征只用来分类,让主网络的fc2特征去模仿RCNN,是不是会丢失定位信息?也就是说,Mimic Loss会不会跟bbox回归Loss产生某种意义上的冲突?能不能试试拆分一下fc2特征,把用于分类和用于回归的特征分开,只模仿用于分类的部分?当然,这个想法不成熟,有待商榷,不过感觉直接Mimic真的有一丢丢粗暴。
就这样吧,还要抓紧读JiFeng老师刚发的另一篇paper。=_=
论文笔记:Deformable ConvNets v2: More Deformable, Better Results的更多相关文章
- 论文阅读笔记四十:Deformable ConvNets v2: More Deformable, Better Results(CVPR2018)
论文源址:https://arxiv.org/abs/1811.11168 摘要 可变形卷积的一个亮点是对于不同几何变化的物体具有适应性.但也存在一些问题,虽然相比传统的卷积网络,其神经网络的空间形状 ...
- 论文阅读:Deformable ConvNets v2
论文地址:http://arxiv.org/abs/1811.11168 作者:pprp 时间:2019年5月11日 0. 摘要 DCNv1引入了可变形卷积,能更好的适应目标的几何变换.但是v1可视化 ...
- 论文阅读笔记三十八:Deformable Convolutional Networks(ECCV2017)
论文源址:https://arxiv.org/abs/1703.06211 开源项目:https://github.com/msracver/Deformable-ConvNets 摘要 卷积神经网络 ...
- Deformable ConvNets
Deformable ConvNets 论文 Deformable Convolutional Networks(arXiv:1703.06211) CNN受限于空间结构,具有较差的旋转不变性,较弱的 ...
- 论文笔记:CNN经典结构1(AlexNet,ZFNet,OverFeat,VGG,GoogleNet,ResNet)
前言 本文主要介绍2012-2015年的一些经典CNN结构,从AlexNet,ZFNet,OverFeat到VGG,GoogleNetv1-v4,ResNetv1-v2. 在论文笔记:CNN经典结构2 ...
- 【论文笔记系列】AutoML:A Survey of State-of-the-art (下)
[论文笔记系列]AutoML:A Survey of State-of-the-art (上) 上一篇文章介绍了Data preparation,Feature Engineering,Model S ...
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- Deep Learning论文笔记之(八)Deep Learning最新综述
Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...
随机推荐
- 使用 ServiceStack.Text 序列化 json
相信做 .net 开发的朋友经常会遇到 json 序列化这样的需要,今天发篇文章总结下自己使用 ServiceStack.Text 来序列化 json.它的速度比 Newtonsoft.Json 快很 ...
- python面向对象之初步认识
面向对象 类,用来描述一类事物的相同的特征或者属性.比如说,狗,狗属于一种统称,狗还分有不同的种类,比如,牧羊犬,蝴蝶犬,京巴等等,他们都有相同的特征,一个头,两个耳朵,四条腿,会跑,会吃东西,会汪汪 ...
- 如何创建一个线程安全的Map?
1,使用普通的旧的Hashtable HashMap允许null作为key,而Hashtable不可以 2,使用Collections中同步化的包装方法synchronizedMap 3,使用conc ...
- java如何获取当前日期和时间
System.currentTimeMillis() 获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响,得到的结果是时间戳格式的.例如: 15431 ...
- VBA来实现已存在的数据库,取得所有表的结构
问题描述 用VBA来取出MySQL数据库中的所有表的结构后生成一个Excel的文档 首先创建MySQL的数据源,如何创建数据源在前章已经写过,之后把下面的信息填写上即可 在window7 64位系统上 ...
- Java 日期格式工具类
Java 日期格式工具类 方法如下 DateUtil 类 import java.text.DateFormat; import java.text.ParseException; import ja ...
- (十一)El表达式详细介绍
看之前,最好先看下 el表达式快速入门 本来将重点讲下 el表达式 能干嘛 : 目录 执行计算 获得 web 开发常用对象 关于 param 与 paramValues 的用法: 关于 header ...
- 关闭iTunes自动同步
方法步骤: 仅对iTunes安装在默认路径的生效. 在「运行」里边先后输入以下两条命令: "C:\Program Files\Common Files\Apple\Apple Applica ...
- Python学习5——抽象,涉及抽象和结构、函数的自定义、参数、作用域、递归
此处将抽象和结构.自定义函数.参数的使用.作用域.递归放在一起学习,看起来很怪是不是? 但实际上这几者之间是有紧密联系的,不然Python基础教程(第三版)的作者为什么会把它们放在一起哪?手动滑稽 好 ...
- 1262: 谁不爱打牌(Java)
WUSTOJ 1262: 谁不爱打牌 转自 断-肠-人的博客 Java代码在文末 Description BobLee最近在复习考研,但是他也喜欢打牌(有谁不爱玩牌呢?).但是作为一名ACMER,斗地 ...