目标检测-Cascade R-CNN-论文笔记

论文:Cascade R-CNN: Delving into High Quality Object Detection
代码:https://github.com/zhaoweicai/cascade-rcnn

这是一篇针对R-CNN系列的两步检测模型 提出的改进方法。主要是针对匹配策略提出了 multi-level 的方式。

1 问题提出

检测=分类+定位,对于分类来说,标签就是标签,直接计算损失。但是对于定位问题来说,它的标签处理稍微麻烦一点。现在的目标检测模型对于定位问题的解决方法主要是回归。我们来看一下在Faster R-CNN中是如何进行回归的:

1522384572177

现在的问题是生成的 anchor box是有很多的,那么势必会导致只有少部分是包含目标或者是与目标重叠关系比较大的,那当然只有这以少部分才是我们的重点观察对象,我们才能把他用到上述提到的回归过程中去。因为越靠近标签的default box回归的时候越容易,如果二者一个在最上边,一个在最下边,那么回归的时候难度会相当大,而且也会更耗时间。

确定这少部分重点观察对象的过程就是匹配策略。换句话说其实就是为了确定一部分对象作为正样本。

所以对于回归问题来说,需要把ground truth box转换一下,也就是这里的正样本。

确定正样本的过程普遍的做法是:计算anchor box与ground truth 之间的IOU,大于某一个阈值就认为这是一个正样本,这个阈值一般是0.5。

但是实际上严格来说使用0.5的阈值偏低,造成的结果就如 Figure 1(a)那样会有很多,“close” false positives ,通俗的说就是有很多重复的没用的框,可以称为噪声,而我们期望的是输出像 Figure 1(b)那样。

1522384170019

但是提高IOU阈值是会出问题的,因为提高 IOU阈值会使效果变差,主要有两个原因:

  • 提高IOU会导致正样本数量过少,然而模型比较大,会导致过拟合。
  • detector肯定是在某一个IOU阈值上训练的,但是inference时,生成anchor box之后,这些anchor box跟ground truth box会有各种各样的IOU,对于这些IOU来说detector是次优化的。

文章解决的也是这个问题。

2 Cascade 结构的提出

1522385396569

首先看一下目标检测中广泛使用的定位损失:

1522385344734

1522385355636

分类损失

1522385427734

2.1 两种可能的解决方法

1522385444196

iterative bounding box regression, denoted as iterative BBox.

如 Figure 3(b).

1522385396569

1522385555965

存在的问题:

  • 三个head部分是一样的,也就是说都是针对某一个IOU阈值,比如0.5,是最优化的,但是当inference时,真正的IOU大于0.5以后他是次优化suboptimal 的。
  • 很明显级联之后,每个输出的box的分布是会变化的如上图 Figure (2),所以相同的head对于后面的结构来说是次优化的suboptimal 。

第二种方法:

1522385815311

也就是Figure 3(c).

1522385396569

1522385855790

存在的问题:不同IOU阈值的分布是不均衡的,如上图左。所以上面的损失是不均衡的。

2.2 Cascade R-CNN

1522385969795

如图 Figure 3(d):

1522385396569

损失函数:

1522386038734

1522386050127

3 试验结果

1522386102411

1522386109548

1522386141133

1522386148566

本文标题:目标检测-Cascade R-CNN-论文笔记

本文作者:arleyzhang

发布时间:2018年06月06日 - 02:06

最后更新:2018年11月16日 - 13:11

本文链接:https://arleyzhang.github.io/articles/1c9cf9be/

版权声明: 本文由 arleyzhang 原创,采用 保留署名-非商业性使用-禁止演绎 4.0-国际许可协议,转载请保留原文链接及作者!