Cascade R-CNN的一些记录
Cascade R-CNN的一些记录
《Cascade R-CNN: Delving into High Quality Object Detection》CVPR2018的一篇文章
论文链接:https://arxiv.org/abs/1712.00726
代码链接:https://github.com/zhaoweicai/cascade-rcnn
参考链接:https://blog.csdn.net/qq_21949357/article/details/80046867
本文主要针对的是目标检测问题中的IoU阈值选取问题,众所周知,阈值选取越大就越容易得到高质量的样本,但是一味选取高的阈值会引发两个问题:
- 样本减少引发的过拟合
- 在train和inference使用不一样的阈值很容易导致mismatch。(只有输入的region proposal自身的IOU值和训练器训练用的设定IOU阈值较为接近的时候,训练器输出的IOU值才会高即性能才好)
为了解决上述两个问题就提出了一种基于Faster-RCNN的muti-stage的architecture,核心就是利用不断提高的阈值,在保证正例样本数不减少的情况下训练出高质量的检测器
Abstract
1 Introduction
2 Related Work
RetinaNet解决密集物体检测,前景和背景极端不平衡问题,并取得了比两步的目标检测更好的效果。
3、Object Detection
基于Faster-RCNN,第一步proposal subnetwork(RPN网络)生成候选框H0,第二步是ROI池化层H1,将不同大小候选框在特征图上的映射patch,把映射的patch采样成固定大小的特征,和SPP类似,但只是用一个尺度(一个patch不论大小就划分为4个部分)进行划分。分类器是C,边界框是B
3.1 Bounding box regression
边界框b=(bx,by,bw,bh),边界框回归f(x,b)的作用是从候选边界框中选出目标边界框,边界框的损失函数在faster-RCNN中是L1损失函数,并通常用均值和方差正则化处理。在FatserRCNN中一个单独的边界框回归器f不能解决精确定位的问题,所以使用Bbox,但是Bbox中IOU的值固定(单一阈值即使用的是完全相同的级联结构),所以IOU的值不一定一直是最优的,并且边界框的分布随每次迭代变化很大。
(C0的结果是anchor中有目标或者没有目标)
3.2 Classification
分类器的函数是h(x),h(x)是后验概率的M+1维估计,hk(x) = p(y = k|x),通过最小化交叉熵损失来学习,
3.3 Detection Quality
如果IOU的值大于给定阈值,则认为这个patch是这个类中的一个。
当给定的IOU阈值大时,正例中包含很少的背景,但是正例数量会很少;当小时,容易产生接近但不正确的判断(假阳率高)。解决方法:传统最容易想到的是使用分类器的集成,如图c,Iterative Loss实际上没有级联结构,从c图可以看出来,它只是使用了不同的阈值来进行分类,然后融合他们的结果进行分类推理,并没有同时进行BBox reg,因此没有解决 不同数量的正例数应对应不同的损失 的问题。
4、Cascade R-CNN
与Bbox不同的是,级联RCnn通过重采样改变了不同阶段的输入假设分布,并且通过重采样保证了每个阶段有足够固定数量的正例样本数。这就实现了没有过拟合和更深层的训练阶段可以有更高的IOU阈值.
- cascaded regression通过调整阈值的方式重采样,不断改变候选框region proposal的分布,而且cascaded重采样后的每个检测器,都对重采样后的样本proposals是最优的,没有mismatch问题。
- cascaded在train和inference时都会使用,因此并没有偏差问题。
其实像我这样的入门者有很多不懂之处,欢迎指正。
总结
以上是生活随笔为你收集整理的Cascade R-CNN的一些记录的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Faster-RCNN的一些记录。
- 下一篇: AUC、Precision、Recall