Revisiting RCNN: On Awakening the Classification Power of Faster RCNN

之前听过该文作者Yunchao Wei给的一个talk,当时仔细思考这篇论文,只是感觉加了参数肯定会变好呀,但是实际上该文在探索检测任务中分类和定位的关系。实际上,检测任务中有很多值得探讨的东西,比如之前博客讲过的一篇论文在探究训练和测试尺寸一致的问题,这些点看似都很小,但是我之前一直都是猜测得出结论,没有仔细探究过,分割也有这样的问题。还有就是Multi Task的好处与坏处,比如分割中前背景分割任务,是直接做前背景分割还是细分割再merge呢,都没有仔细严格地做过对比试验。而且本文再次强化了我之前认识到的一个经验就是你要想提升某一模型的性能,比如精度,首先就要看failure case,去分析,然后针对性地去解决,不是拍脑袋瞎想

Problems with Faster RCNN

首先本文先分析了Faster RCNN的failure case,得到如下一个发现:就是Faster RCNN的failure case有很多是False Positive也即是很多误警,如果手动把这些false positive全部去掉mAP可以得到很大的提升,即使仅仅去掉模型给出置信度很高的false positive都可以从79.8提升到82.5(红框处),这3个点的提升在检测中是很难的。

在这里插入图片描述

误警的具体体现,如图所示的3种情况(红色GT绿色误警)

  1. 仅仅框出一个头部,分类的置信度就很高了: 分类正确,IoU很低
  2. 由于物体太相似了导致分类错误,前面的太像狗了: IoU很高,分类错误
  3. 错把背景分成前景物体: 和所有GT IoU都为0,但是分类给出一个置信度很高的类别

Why

仔细分析下上述问题产生的原因

  1. 第一种情况,分类模型是具有变换不变形的,只看到最具判别力的一小部分就够了
  2. 第二种情况,物体太相似了,detector中的分类器能力不足以分辨,另一种可能是box没有对齐,包含了一些混淆部分
  3. 第三种情况,分类器太弱或者就是视野域是固定的且很大,某些box的视野域中引入了噪音即前景物体,错把背景识别成前景物体

在这里插入图片描述

深层原因:

  1. Feature Sharing 分类和定位有矛盾的,分类需要translation invariant,而定位需要translation covariant
  2. Optimization detection中分类和回归是Multi Task Learning,是联合优化的,很有可能最终优化到两者折中的次优,而对各自都不是最优。
  3. Receptive Field RCNN中每个proposal是从原图crop出来resize送入网络,视野域就是这个proposal的大小,而Faster RCNN中是用proposal去feature map上扣,而且由于backbone的增强feature map上的每个点视野域都很大,所以每个roi的视野域基本覆盖了整张图,这对于小物体是很可怕的引入了过多的context。
    关于Multi Task Learning作者还有个没有理论或实验验证的猜想就是之前MTL挺有效的,但是随着backbone的提升,MTL不能充分挖掘backbone的能力了。

Originally, such a MTL manner is found to be effective and observed improvement over state-wise learning in Fast(er) RCNN works. However, MTL for object detection is not studied under the recent powerful classification backbones, e.g. ResNets. Concretely, we hypothesize that MTL may work well based on a weak backbone (e.g. AlexNet or VGG16). As the backbone is getting stronger, the powerful classification capacity within the backbone may not be fully exploited and MTL becomes the bottleneck.

解决方案

RCNN天生的优势

  1. 动态视野域。不同大小的proposal都被crop resize成一样大小送入网络,视野域都刚好覆盖整个物体,context都是固定有限的。但context的引入多少对物体的识别有很大影响,对大小物体影响也不同,这一点还需要进一步探讨
  2. 对齐做得很好。RCNN是用proposal去原图扣,而Faster RCNN是在feature map上扣,而feature map的步长是16或者32,细小的偏差带来的偏移就很多
    因此本文的方法DCR(Decoupled Classification Refinement)又重新加了一路RCNN去做识别。

在这里插入图片描述

Experiment

(a)用哪些样本去训练RCNN部分,发现False Positive+FG+BG最好。(b)选择大于多少threshold的FP样本
在这里插入图片描述

这个实验证明本文不是简单地增加参数带来的效果提升,可以看到DCR+Res101和Faster Res151参数差不多,但是效果要更好一些的。
在这里插入图片描述

其他问题

由于加了一个RCNN,速度太慢了。
1.39 s (DCR V1) vs 0.09 s (Faster RCNN)
因此出了DCR V2,让RCNN部分网络变浅以及和Faster RCNN共享一些浅层特征
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 和Faster RCNN共享的特征越少精度越高
  2. RCNN由于去原图扣了,所以要加RoIpool,加的越靠前精度越高
  3. 采样训练的越多精度越高

虽然DCR提升了速度,但是还不是很完美,最近dai老师出来了Deformable CNN V2,里面有知识蒸馏的方法,省去了测试时RCNN的计算,之后我会再写博客具体介绍。

最后

个人感悟:检测中一般有两种错误:分类或定位错误、漏检。漏检一般是小物体容易漏,本文解决的事第一种错误。可以看到这些工作都是问题导向的,先发现问题再去解决而不是拍脑袋去创新。然后就是本文说的引入context的问题也是值得考虑的一件事,引入的过多或者过少都不太好,怎么引入合理的context呢,这是个问题。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值