Cascade R-CNN: Delving into High Quality Object Detection【Object Detection番外】
0. 摘要
总结目标检测模型的典型问题,训练中使用小的IOU阈值会产生大量的噪声,使用大的IOU阈值则会导致模型性能大幅下降。两个原因:
(1)指数级丢失正样本导致模型过拟合(大IOU阈值)
(2)propose的IOU阈值与prediction detector的阈值不一致(搭配不一致,并不是值相等)导致性能下降
对以上两点,知乎有作者给出了较为详细的解释:
https://zhuanlan.zhihu.com/p/160815386
由此提出多阶段检测器Cascade R-CNN,使用序列detectors,训练使用递增的IOU阈值。所有detectors使用相同的证样本集合,减少了过拟合;推理使用级联检测器,增加假设和每个阶段的检测器质量的匹配性。
1. 介绍
通过实验介绍propose IOU阈值和detector IOU阈值对目标检测的影响,不同阈值对模型欠拟合与过拟合都有较大的影响。
介绍本文提出的级联模型,通过调整bounding box(设置不同的IOU阈值),训练每个阶段,使得每个阶段都学出一个良好的闭负样本集,用于训练下一个阶段。最终级联的检测器同时可以避免过拟合,其性能也优于其他检测器。
2. 相关工作
两阶段目标检测:R-CNN、Fast RCNN、SPP-Net、Faster R-CNN(RPN)、R-FCN、MS-CNN、RetinaNet
一阶段目标检测:YOLO、SSD
多阶段目标检测:CRAFT、AttractioNet
3. 目标检测
目标检测构成最终结果的两个方面:检测框和分类类别。前人针对这两个方面的改进可以进行概括:
框回归
Fast RCNN对与目标框的回归损失函数,detection只使用1个输出头H1:
改进成迭代的BBox回归,detection使用相同的输出头H1(分类和回归):
存在两个问题:
(1)所有头使用同一个IOU的时候,还是避免不了IOU大小对结果的影响:小则产生噪声,大则过拟合
(2)每次训练迭代后bounding box的分布都会有明显的变化,位于序列靠后的H1对靠前H1的输出
B
i
B_i
Bi不敏感,非优解,相当于每次都重新训练靠后的H1。
分类
使用交叉熵损失:
检测质量
IOU阈值的设置对检测模型的拟合程度具有较大的影响:阈值越大,训练中更趋向于选取前景较多背景较少的正样本作为训练样本,模型无法学习更多的正样本特征,形成过拟合;阈值越小,则容易产生大量噪声,模型更难排除负样本。
一个解决方式如下:
集合不同IOU阈值,做一个由不同阈值分支构成的损失函数:
这种模型存在的一个问题是,使用较大阈值训练出来的H3对简单正样本产生过拟合,在推理阶段对困难样本不敏感(训练过程中没有学习到困难样本的低质量特征),会对最终网络的输出造成较大的影响。
4. Cascade R-CNN
级联回归与分类模型Cascade R-CNN。
Cascade 框回归 框回归的级联设计为:
与迭代的BBOX的不同之处在于:
(1)迭代的BBOX类似于后处理,用于提高框的准确性;Cascade R-CNN则在每个stage重采样训练数据,改变了每个stage的数据分布(泛化能力强)
(2)训练与推理保持一致
(3)多样的回归器
{
f
T
,
F
T
−
1
,
.
.
.
,
f
1
}
\{f_T,F_{T-1},...,f_1\}
{fT,FT−1,...,f1},不需要过多的人工干预
Cascade 检测
stage
t
t
t的损失,即分类损失加框损失。这里框损失只要正确分类的框的损失值。