论文: Cascade R-CNN: Delving into High Quality Object Detection - CVPR2018
作者:Zhaowei Cai, Nuno Vasconcelos
团队:UC San Diego, UC San Diego
Github - zhaoweicai/cascade-rcnn(Caffe)
Github - zhaoweicai/Detectron-Cascade-RCNN
Cascade R-CNN 关于的是如何选择最佳 IoU.
目标检测任务中,IoU(intersection over union) 阈值往往被用于定义正样本和负样本的选取. 采用低 IoU 阈值训练的目标检测器,通常会产生很多冗余检测结果,如 IoU=0.5. 而增加 IoU 阈值,会导致检测器性能下降. 分析其原因在于:
[1] - 由于正样本的指数级衰减,导致训练的过拟合(正样本被过滤,导致样本数量过少).
[2] - 由于训练时采用的 IoU 和检测的最优 IoU 的不一致性,导致 mismatch.
Cascade R-CNN 方法是采用逐渐递增的 IoU 阈值训练的序列的检测器,其序列化地选择更优的正样本和负样本. 其训练是 stage-by-stage 的.
1. 问题描述
目标检测主要解决两个任务:
[1] - 目标检测器需要解决类别识别问题,以从背景中区分前景目标,并分配给目标物体以正确的类别标签.
[2] - 目标检测器需要解决物体定位问题,以分配给不同目标物体以精确的边界框.
由于目标检测面临着许多“很接近(close)” 的负样本,其对应着“接近但并不正确(close but not correct)” 边界框,导致目标检测器必须找到正确的正样本,同时过滤这些接近的负样本.
现阶段很多目标检测器是基于 two-stage R-CNN 框架的,其是一个 multi-task 问题,同时进行物体分类和边界框识别. 训练时,一般是首先提取 region proposals,然后再对 proposals 进行分类,同时将 proposals 回归到对应的 GT boxes. 其中,由于要对 proposals 进行分类以确定类别标签,首先就要确定对哪些 proposals 进行分类. 最普遍的做法是,利用 proposals 与 GT boxes 的 IoU 来选择,如 IoU=0.5. IoU 阈值是用于定义正样本和负样本选取的必要项.
关于 IoU 阈值的选择,如下图:
图(a)中,目标检测器常用 IoU 阈值为 0.5,其对于正样本是比较宽松的标准. 因此,结果中往往会包含很多冗余边界框. 普遍认为,接近假正样本(false positives) 一般都能通过 IoU >= 0.5 的测试. 虽然低于 IoU=0.5 阈值的样本也是丰富和多样化的,但它们会导致检测器难以有效的区分相似的假正样本(close false positives),难以进行训练.
图(b) 中,将 IoU 阈值设为 0.7,可以减少冗余检测框的数量,使检测器的输出中包含较少的接近假正样本(close false positives).
图(c) 中,横轴是 proposal boxes 与 GT boxes 的 IoU,纵轴为回归后所预测的 boxes 与 GT boxes 的 IoU,纵轴的值越大越好. 可以看出,相比于 baseline,其它的 IoU 表现都更好. IoU 越高,检测器的预测结果更好. 从该图可以看出,每个边界框回归器对于输入 IoU 与检测器训练时所采用的 IoU 阈值相接近时(设定IoU阈值的周围),性能表现最优. 目标检测器中回归器的输出 IoU 一般会优于输入 IoU,且随着 u 的增大,对于大于 IoU 阈值的 proposals 的优化效果有一定的提升作用.
图(d) 中,IoU 阈值设为 0.7 时,检测器的精度明显较低. 而在 0.5 和 0.6 时,精度相差不大,IoU=0.5 还有少许的提升. 也就是说,仅仅增大训练时所采用的 IoU 阈值是不可行的,并不能提升检测器的精度. 其原因在于:(1) IoU 阈值增大,导致正样本数量指数级减少,模型训练出现过拟合; (2) 在推断(inference)时,采用的 IoU 阈值与训练时采用的 IoU 阈值不匹配,也导致检测器精度下降.
Cascade R-CNN 的基本思想是,单一检测器只能是对单一 IoU 层次是最优的. Cascade R-CNN 考虑了对给定 IoU 阈值的优化. 即,采用级联的方式,首先利用 IoU=0.5 的网络,提升输入的 proposals;比如 IoU 提升到 0.6,再利用IoU=0.6的网络进一步的提升;比如 IoU 提升到 0.7,再利用IoU=0.7 的网络进行提升. 逐步的提升检测器的精度.
Cascade R-CNN is a multi-stage extension of the R-CNN, where detector stages deeper into the cascade are sequentially more selective against close false positives. The cascade of R-CNN stages are trained sequentially, using the output of one stage to train the next. This is motivated by the observation that the output IoU of a regressor is almost invariably better than the input IoU.
2. 目标检测
如下图:
图中,对于 Faster R-CNN,
[1] - first stage,H0 为 proposal sub-network,用于对整个输入图像进行处理,输出初步的检测结果,即:object proposals. 如 RPN.
[2] - second stage,H2 为 RoI 检测 sub-network,用于对 object proposals 进行处理,记为:detection head.
[3] - final stage,C 为 classification score;B 为 bounding box,分别对应到每个 RoI 的输出.
2.1. 边界框回归
边界框
边界框回归任务旨在,采用回归器
回归器
其中,
为了进一步增强回归器关于尺度和位置(scale vs. location)的不变性,
由于边界框回归往往是关于
2.2. 迭代边界框回归
在 Cascade R-CNN 之前,也有研究说明了,单一回归
这种方法被称为:迭代边界框回归(iterative bounding box regression),记为:iterative BBox. 如Figure3(b),其所有的 head 网络是相同的.
但是,迭代边界框回归忽略了两个问题:
[1] - 如图 Figure1 中所示,采用 IoU=0.5 训练的回归器
[2] - 如下图 Figure2 所示,每次迭代后边界框的分布变化比较大. 尽管对于初始分布而言,回归器是最优的,但后面迭代后的可能非最优.
2.3. 边界框分类
分类器函数
其中,
给定训练数据集
其中,
2.4. 检测质量
边界框往往包含目标物体和一些背景,其很难判断检测结果是正样本还是负样本.
这个问题一般是采用 IoU 度量来解决的. 如果 IoU 大于阈值
其中,
目标检测的挑战性在于,阈值等检测设置是高度对抗的. 当 IoU 阈值
推断阶段,由于采用 RPN 等 proposal detector 产生的大部分 proposals 都质量较低,检测器必须对于较低质量的 proposals 具有较好的判别能力.
一种直接的解决方案是,多个分类器的融合,如图 Figure3(c),在不同质量层级的优化损失函数:
其中,
这很类似于 integral loss,其
其难以处理的问题在于,公式(8) 中的不同损失函数对于不同数量正样本的处理.
如图 Figure4,随着 IoU 阈值
3. Cascade R-CNN
Cascade R-CNN 如图 Figure3(d).
3.1. Cascade R-CNN 的边界框回归
级联回归器:
其中,
在同一阶段,每个回归器
相比于 Figure3(b) 中的迭代边界框回归(iterative BBox) 结构,Cascade R-CNN 的区别在于:
[1] - iterative BBox 是用于提升边界框的后处理流程,而 Cascade R-CNN的回归是一种重采样流程,其会改变不同 stages 处理后的 proposals 的分布,训练时不同 stage 的输入数据分布是不同的.
[2] - Cascade R-CNN 在训练和推断是都要使用,因此不存在训练和推断间的差异性.
[3] - 回归器
3.2. Cascaded 检测
如图 Figure4 的左图所示,初始 proposals 的分布,如 RPN proposals,往往是低质量的,不可避免的会引入对于分类器的无效学习.
根据 Figure 1(c) 中所有曲线都在对角线之上的事实,如,采用特定 IoU 阈值
从样本集
对于每个 stage
其中,
## 4. Results
4.1. 实现细节
Cascade R-CNN 的所有 cascade detection stages 具有相同的结构,即 baseline detection network 的 head 网络.
Cascade R-CNn 包含 4 个 stages,第一个 stage 用于 RPN,其它三个 stages 采用的 IoU 阈值为
数据增强只有水平图片翻转.
推断阶段仅采用单一图片尺度.
4.2. 论文结果
5. 相关
[1] - 目标检测-Cascade R-CNN-论文笔记
[2] - Cascade R-CNN: Delving into High Quality Object Detection
[3] - Cascade R-CNN: Delving into High Quality Object Detection - 知乎