@

0. 论文链接

Cascade R-CNN

1. 概述

  这是CVPR 2018的一篇文章,这篇文章也为我之前读R-CNN系列困扰的一个问题提供了一个解决方案:R-CNN在fine-tuning使用IOU threshold = 0.5来防止过拟合,而在分类阶段,使用softmax因为之前0.5的设定太过宽松(loose),而导致精度下降较多,因此单独训练了一个新的SVM分类器并且更改了IOU阈值(文章中对这样做进行大量的实验对比以及证据十分有力),而在Fast R-CNN中我看到也是用的0.5作为阈值,却通过实验证明softmax比SVM要好一些, 在R-CNN系列的总结我也提了一些可能的原因。而这片文章正好解决大多数分类器的问题,IOU阈值的设定难题。
【目标检测】Cascade R-CNN 论文解析

  对于一个detector来说,如果IOU threshold太低,会学习到很多背景框,引入很多噪声,比如上图中a),可以发现很多噪声框。但如果IOU threshold太高则会导致两个问题:1.样本会以指数级的速度消失2.会在inference阶段出现detector最优的阈值与输入proposal的IOU值发生mismatch。这里解释一下为什么会mismatch:detector通常在proposal自身的IOU值与detector训练的IOU阈值较为接近的时候才会有更好的结果,如果一味的提高IOU阈值很容易出现mismatch导致性能很差,可以看下图关于RPN生成proposal的IOU值分布更好的理解一下(因为高IOU的proposal很少,大多数都是较低IOU的proposal):
【目标检测】Cascade R-CNN 论文解析
  所以对于a single detector来说,很难抉择一个合适的IOU,无论高低都是有很大弊端的,这篇文章提出了一种级联检测器,他利用前一个检测器输出“a good data distribution“来作为下一个检测器的输入,同时相应的提高训练时的IOU阈值,使得IOU阈值与proposal的IOU值较为接近,这样训练3个检测器最后输出结果会好很多,在inference阶段使用同样的网络结构合理的提高了IOU的阈值而不会出现之前所说的问题。文章中通过大量的实验证明了这种网络结构的合理性。

2. 网络结构的合理性

  这样网络设计是需要有几个事实支持的,之所以说是事实支持而不是理论支持,因为这些结论大多数通过大量实验验证出的结果,很难用理论严格的证明。

  1. 一个检测器通常只在一个小范围的IOU阈值内(a single quality level)性能最好,从之前图片中c)可以发现,在0.55-0.6的范围内阈值为0.5的detector性能最好,在0.6~0.75阈值为0.6的detector性能最佳,而到了0.75之后就是阈值为0.7的detector了,比IOU阈值过高过低的proposal都会导致检测器性能下降,因此保证检测器训练时的IOU阈值与输入proposal 的IOU相近是十分重要并且有必要的。
  2. 通过观察图c可以发现,几乎所有检测器输出的检测框的IOU都好于输入proposal的IOU(曲线几乎都在灰色对角线之上),因此这保证了我们通过一个检测器输出的检测框整体IOU相对输入的proposal的IOU都会提高,可以作为下一个使用更高IOU阈值训练检测器一个很好的数据输入。因此每个检测器输出的检测框质量都会变高,阈值的提高其实也相当于一个resample的过程,一些异常值也可以去掉,提高了模型的鲁棒性。
  3. 读到这里最大困惑就是,一直提高阈值,那正样本会不会减少,导致过拟合呢? 作者通过详细的实验证明了每个阶段大于对应IOU阈值的proposal数量基本没有改变,甚至还有所提升,实验结果如下:
    【目标检测】Cascade R-CNN 论文解析

3. 网络结构

  网络结构其实真的比较简单,文章中也列举了其他3种结构,但是一般人首先想到的确实是本文这种结构,其他结构反而更难想到一些,其他结构通过结构图也很容易理解,关于其他模型的优劣文中也有提到,比如BBox 迭代训练2次以上几乎是没有作用的,这些原因我们通过文章几个实验结论以及结构图都是可以发现的,在此不多赘述,结构如下图:
【目标检测】Cascade R-CNN 论文解析
  检测器文中使用了Faster R-CNN, R-FCN, FPN,具体实验细节与结果也不再赘述。

4. 参考链接

Cascade RCNN算法笔记
Cascade R-CNN 详细解读
目标检测论文阅读:Cascade R-CNN: Delving into High Quality Object Detection