论文阅读|Cascade R-CNN

论文相关信息​

1.论文题目:Cascade R-CNN: Delving into High Quality Object Detection

​ 2.发表时间:2018 CVPR

​ 3.文献地址:http://openaccess.thecvf.com/content_cvpr_2018/html/Cai_Cascade_R-CNN_Delving_CVPR_2018_paper.html
​ 4.论文源码: https://github.com/zhaoweicai/cascade-rcnn

摘要

目标检测中,通常以IoU值作为候选框等正负样本的判断依据,IoU设置低了,则训练出来的检测器会产生噪声,设置高了,则会降低效果,这是因为:
1)IoU提高则训练时正样本指数性的减少,导致模型过拟合。
2)以某个IoU阈值训练得到的单一模型,只对这个IoU阈值的优化最佳。训练时IoU设置过高,得到的正样本都很严格,从而训练得到的模型也比较严格,严格的模型对于低IoU的proposal的优化效果不好,而测试会将RPN等这样一阶段网络产生的所有建议框当作正样本,但是这些正样本中大部分的都是IoU很低的建议框,这就与训练好的模型不匹配了。即mismatch问题(测试时网络将产生的所有的候选框作为正样本送入分类网络)。

论文中将那些接近ground truth,但是又不属于正样本的称作“close” false positives,这里同一叫做假正样本。同时,论文中把object proposal叫做 detection hypotheses。

这里将质量(quality)定义为建议框和ground truth的IoU值,将检测器质量(quality of detector)定义为检测器使用的IoU阈值 u u u的大小, u u u越大,则检测器质量越高。

本文的核心目的,就是要训练处这样一个高质量的检测器,只输出少量的噪声。

而要训练这样一个高质量检测器,仅仅提高IoU阈值 u u u是不行的,原因就是开头提到的那两点。

  1. u u u过高导致训练时正样本过少,从而模型过拟合。
  2. u u u过高使得训练出来的高质量的模型,在测试时面对大量低质量的建议框,其效果变差,也就是上面提到的mismatch,高质量的检测器不适应大量低质量的建议框输入。
    下图就是对这两点的解释。

在这里插入图片描述
图中a和b是用不同IoU阈值训练得到的模型检测同一张图片的结果。可以发现,a使用的是我们通常设置的值u=0.5,而b的IoU则更高为0.7,对比发现低IoU阈值导致得到的模型在预测时会产生更多“噪声”,如图中有些不是人的被标记为了人;而较高IoU的b图中则避免的这种现象。
图c是三个不同 u u u训练得到的三个回归器作用于不同IoU的输入上的回归表现,可以发现每个回归器在输入样本IoU接近其训练时的IoU阈值 u u u时,其对样本的优化效果越好(增加输入样本IoU越多)。这也说明,单一阈值训练出的检测器效果非常有限,单一阈值不能对所有的Proposals都有很好的优化作用。
但是,对于大部分的样本,回归器总能提升其IoU值(输入样本IoU很大时例外)。

(d)图中横轴表示inference阶段,判定box为正样本的IoU阈值,纵轴为mAP。当检测时的IoU阈值设置的小时,IoU阈值较小训练得到的模型在检测时效果好些,但是当检测的IoU阈值提高,则IoU阈值较大训练得到的模型表现更好。

作者观察到将Faster R-CNN的第一阶段RPN生成的proposal传入我们的head network后,经过回归分支的作用,会使传入的proposal与ground truth 的IoU普遍增加,于是想到使用级联的回归器,即将检测器输出的box作为下一个检测器的输入,这样下一个检测器输入的所有正样本的IoU相比第一个检测器输入的样本的IoU就大很多,以此类推,最后proposal的IoU会随着级联深度变深而普遍增加,这样,就使得即使我们的IoU阈值 u u u逐层增加,每层检测器得到的正样本数量也能保持相同的大小,从而实现即使将训练时的IoU阈值 u u u设置较高,也不会出现文章开始说的两个问题(过拟合和mismatch)。进而能够训练一个高质量网络。

因此,本文提出了一个在Faster R-CNN上延展得到的多阶段的目标检测架构,如下图d,该网络由一系列的以逐渐增长的IoU设置训练得到的检测器组成,能够更好的减少生成错误样本的情况。

在这里插入图片描述
图中,I是输入图片,conv是卷积骨干网,pooling则是特征提取器,H表示网络头部,B是bounding box,C分类器。所有架构中的B0都表示的是Proposal。
除非特别声明,Cascade R-CNN一般由四个stage组成,第一个stafe是RPN,生成proposals,接着三个stage分别对应三个IoU阈值U= { 0.5, 0.6, 0.7}训练得到的检测器。

Cascade R-CNN

这一节就介绍本文提出的Cascade R-CNN,即上图中的d。

Cascaded Bounding Box Regression

回归器回归器 f ( x , b ) f(x, b) f(x,b)的任务就是将一个bounding box b= ( b x , b y , b w , b h ) (b_x,b_y,b_w,b_h) (bx,by,bw,bh)回归到ground truth g,为了实现尺度位置变换不变性,使用 Δ = ( δ x , δ y , δ w , δ h ) Δ=(\delta_x, \delta_y,\delta_w,\delta_h) Δ=(δx,δy,δw,δh)作为边框预测值,其中:
δ x = ( g x − b x ) / b w , δ y = ( g y − b y ) / b h \delta_x=(g_x -b_x)/b_w, \delta_y=(g_y-b_y)/b_h δx=(gxbx)/bw,δy=(gyby)/bh
δ w = log ⁡ ( g w / b w ) , δ h = log ⁡ ( g h / b h ) \delta_w = \log{(g_w/b_w)},\delta_h = \log{(g_h/b_h)} δw=log(gw/bw),δh=log(gh/bh)

由于在回归过程中,每次只对b作微小的调整, Δ Δ Δ 往往非常小,从而回归损失函数通常小于分类损失。为了提高回归效率,通常会对 Δ Δ Δ使用均值和方差做归一化,如让 δ x \delta_x δx δ x ′ = ( δ x − u x ) / σ x \delta_x'=(\delta_x -u_x)/\sigma_x δx=(δxux)/σx替换。

Cascade R-CNN的回归器如下:

f ( x , b ) = f T ∘ f T − 1 ∘ ⋅ ⋅ ⋅ ∘ f 1 ( x , b ) , f(x, b) = f_T ∘f_{T-1} ∘⋅⋅⋅∘ f_1(x, b), f(x,b)=fTfT1f1(x,b),T代表总的stage数量。
单一IoU阈值 u u u训练得到的回归器只对某一种分布的 Δ Δ Δ 起到最佳优化作用,而这里的多stage优化器,则能让 Δ Δ Δ 在每个stage都能得到很好优化。

在这里插入图片描述
上图是 Δ Δ Δ 经过不同stage回归器回归后的一个分布,可以看到每经过一次回归,样本都更靠近gt一些,质量也就更高一些,样本的分布也在逐渐变化。如果还是用0.5的阈值,在后面两个stage就会有较多离群点,使用共享的H也无法满足detector的输入的变化。
从上面这个图也可以看出,每个阶段cascade都有不同的IoU阈值,可以更好地去除离群点,适应新的proposal分布。

Cascaded Detection

在这里插入图片描述
如上图所示,第一阶段的RPN产生的proposal(hypothesis)分布严重倾斜向低质量的一边,这就导致学习高质量的模型很困难。
Cascade R-CNN通过一种再采用机制,将上一stage的输出结果作为输入,每经过一个stage,proposal的分布都会朝向高质量一边倾斜些,这就是使得随着stage越高,能够训练出越高质量的模型。其原因有两点:1),每阶段都有足够的正样本;2)每越深层的检测器对越高的IoU proposal有更好的优化作用,随着检测器IoU阈值不端提高,IoU较小的proposal逐渐被剥离,正如上节回归器的图所示。

损失:

每个阶段t,包括一个分类器 h t h_t ht和一个回归器 f t f_t ft,他们由IoU阈值 u t u^t ut训练得到, u t > u t − 1 u^t>u^{t-1} ut>ut1,因此对这个阈值的IoU proposal优化效果最好。
模型的学习通过优化下面损失得到:
L ( x t , g ) = L c l s ( H t ( x t ) , y t ) + λ [ y t ≥ 1 ] L l o c ( f t ( x t , b t ) , g t ) , L(x^t,g)=L_{cls}(H_t(x^t),y^t)+\lambda[y^t \ge1 ]L_{loc}(f_t(x^t,b^t),g^t), L(xt,g)=Lcls(Ht(xt),yt)+λ[yt1]Lloc(ft(xt,bt),gt),
其中 b t = f t − 1 ( x t − 1 , b t − 1 ) b^t=f_{t-1}(x^{t-1},b^{t-1}) bt=ft1(xt1,bt1).
测试时,proposal的质量也通过这样的级联流优化,从而确保了高质量的模型输入的是高质量的proposal,避免了mismatch问题,最终生成高质量的检测。

在这里插入图片描述

Experimental Results

Comparison with the state-of-the-art

在这里插入图片描述

Generalization Capacity

将级联结构应用到其他的网络上。
在这里插入图片描述

总结:

RPN提出的proposals大部分质量不高,导致没办法直接使用高阈值的detector,Cascade R-CNN使用cascade回归作为一种重采样的机制,逐stage提高proposal的IoU值,从而使得前一个stage重新采样过的proposals能够适应下一个有更高阈值的stage。

  • 每一个stage的detector都不会过拟合,都有足够满足阈值条件的样本。
  • 更深层的detector也就可以优化更大阈值的proposals。
  • 每个stage的H不相同,意味着可以适应多级的分布。
  • 在inference时,虽然最开始RPN提出的proposals质量依然不高,但在每经过一个stage后质量都会提高,从而和有更高IoU阈值的detector之间不会有很严重的mismatch。
In object detection, an intersection over union (IoU) threshold is required to define positives and negatives. An object detector, trained with low IoU threshold, e.g. 0.5, usually produces noisy detections. However, detection per- formance tends to degrade with increasing the IoU thresh- olds. Two main factors are responsible for this: 1) over- fitting during training, due to exponentially vanishing pos- itive samples, and 2) inference-time mismatch between the IoUs for which the detector is optimal and those of the in- put hypotheses. A multi-stage object detection architecture, the Cascade R-CNN, is proposed to address these prob- lems. It consists of a sequence of detectors trained with increasing IoU thresholds, to be sequentially more selec- tive against close false positives. The detectors are trained stage by stage, leveraging the observation that the out- put of a detector is a good distribution for training the next higher quality detector. The resampling of progres- sively improved hypotheses guarantees that all detectors have a positive set of examples of equivalent size, reduc- ing the overfitting problem. The same cascade procedure is applied at inference, enabling a closer match between the hypotheses and the detector quality of each stage. A simple implementation of the Cascade R-CNN is shown to surpass all single-model object detectors on the challeng- ing COCO dataset. Experiments also show that the Cas- cade R-CNN is widely applicable across detector architec- tures, achieving consistent gains independently of the base- line detector strength. The code will be made available at https://github.com/zhaoweicai/cascade-rcnn.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值