目录

  • 论文相关信息​
  • 摘要
  • Cascade R-CNN
    • Cascaded Bounding Box Regression
    • Cascaded Detection
    • 损失:
  • Experimental Results
    • Comparison with the state-of-the-art
    • Generalization Capacity
  • 总结:

论文相关信息​

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阈值uuu的大小,uuu越大,则检测器质量越高。

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

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

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


图中a和b是用不同IoU阈值训练得到的模型检测同一张图片的结果。可以发现,a使用的是我们通常设置的值u=0.5,而b的IoU则更高为0.7,对比发现低IoU阈值导致得到的模型在预测时会产生更多“噪声”,如图中有些不是人的被标记为了人;而较高IoU的b图中则避免的这种现象。
图c是三个不同uuu训练得到的三个回归器作用于不同IoU的输入上的回归表现,可以发现每个回归器在输入样本IoU接近其训练时的IoU阈值uuu时,其对样本的优化效果越好(增加输入样本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阈值uuu逐层增加,每层检测器得到的正样本数量也能保持相同的大小,从而实现即使将训练时的IoU阈值uuu设置较高,也不会出现文章开始说的两个问题(过拟合和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=(bx,by,bw,bh)(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=(gx−bx)/bw,δy=(gy−by)/bh\delta_x=(g_x -b_x)/b_w, \delta_y=(g_y-b_y)/b_hδx​=(gx​−bx​)/bw​,δy​=(gy​−by​)/bh​
δw=log⁡(gw/bw),δh=log⁡(gh/bh)\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−ux)/σx\delta_x'=(\delta_x -u_x)/\sigma_xδx′​=(δx​−ux​)/σx​替换。

Cascade R-CNN的回归器如下:

f(x,b)=fT∘fT−1∘⋅⋅⋅∘f1(x,b),f(x, b) = f_T ∘f_{T-1} ∘⋅⋅⋅∘ f_1(x, b),f(x,b)=fT​∘fT−1​∘⋅⋅⋅∘f1​(x,b),T代表总的stage数量。
单一IoU阈值uuu训练得到的回归器只对某一种分布的ΔΔΔ 起到最佳优化作用,而这里的多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,包括一个分类器hth_tht​和一个回归器ftf_tft​,他们由IoU阈值utu^tut训练得到,ut>ut−1u^t>u^{t-1}ut>ut−1,因此对这个阈值的IoU proposal优化效果最好。
模型的学习通过优化下面损失得到:
L(xt,g)=Lcls(Ht(xt),yt)+λ[yt≥1]Lloc(ft(xt,bt),gt),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)+λ[yt≥1]Lloc​(ft​(xt,bt),gt),
其中bt=ft−1(xt−1,bt−1)b^t=f_{t-1}(x^{t-1},b^{t-1})bt=ft−1​(xt−1,bt−1).
测试时,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。

论文阅读|Cascade R-CNN相关推荐

  1. 论文阅读:Multi-Scale Triplet CNN for Person Re-Identification

    中国科技大学的Jiawei Liu等发表在Acm on Multimedia Conference上的论文.作者提出一个多尺度的triplet CNN,在一个数据集Market1501上表现出好的性能 ...

  2. 论文阅读(4)--Part-Stacked CNN for Fine-Grained Visual Categorization

    这篇文章是来自悉尼科技大学Shaoli Huang等人的工作,与前两篇文章的出发点类似,本篇文章也是在Parts上寻找Fine-Grained的线索,但与前两篇文章相比,在框架中人工的参与更少.同其它 ...

  3. rep论文阅读2:ResRep_Lossless CNN Pruning via Decoupling Remembering and Forgetting

    ACNet:通过去耦记忆和遗忘的无损CNN剪枝 paper:https://openaccess.thecvf.com/content/ICCV2021/papers/Ding_ResRep_Loss ...

  4. 论文阅读-Learning Deep CNN Denoiser Prior for Image Restoration

    Zhang K, Zuo W, Gu S, et al. Learning Deep CNN Denoiser Prior for Image Restoration[J]. 2017. 1.引言 图 ...

  5. 论文阅读|训练过程中动态改变训练方案的Dynamic R-CNN

    目录 论文相关信息 Abstract. 1 Introduction 2 Related Work 3 Dynamic Quality in the Training Procedure 3.1 Pr ...

  6. 论文阅读 ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks

    论文阅读 ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks 前言 ...

  7. keras cnn注意力机制_2019 SSA-CNN(自注意力机制)目标检测算法论文阅读笔记

    背景 <SSA-CNN Semantic Self-Attention CNN for Pedestrian Detection>是2019 的工作,其作者来自于南洋理工.这篇文章主要是做 ...

  8. 论文阅读:Saliency-Guided Region Proposal Network for CNN Based Object Detection

    论文阅读:Saliency-Guided Region Proposal Network for CNN Based Object Detection (1)Author (2)Abstract (3 ...

  9. 语音论文阅读(用于SOTA语音识别的多流CNN和自专注SRU)

    论文: ASAPP-ASR: Multistream CNN and Self-Attentive SRU  for SOTA Speech Recognition 摘要: 两种新颖的神经网络架构Mu ...

  10. 【论文阅读】 Object Detection in 20 Years: A Survey

    [论文阅读]Object Detection in 20 Years: A Survey 摘要 论文介绍 1.目标检测 2.目标检测的里程碑 3.数据集 4.性能度量 摘要 本篇博客参考Object ...

最新文章

  1. iOS基础篇非运行状态——应用启动场景介绍
  2. linux neo4j 服务器,如何在linux服务器上配置Neo4j · Digital World
  3. [技术分享]利用MSBuild制作msf免杀的后门
  4. ai去除水印_ai全自动视频剪辑软件,每天批量制作800条原创视频!
  5. 二十九、电子商务服务推荐项目基本描述
  6. html标签 对word2vec,自然语言学习——使用word2vec对文本进行情感分析
  7. python3[进阶]8.对象引用、可变性和垃圾回收
  8. SX1268与SX1278、SX1276对比分析以及选型南
  9. tf.app.flags和tf.app.run的使用
  10. 声速的测量的实验原理和应用_声速的测定实验报告心得体会
  11. iOS中XML解析 (二) libxml2(实例:打印xml内容及存储到数组)
  12. ip申请 web应用_网络协议端口TCP/IP概览
  13. innodb doublewrite
  14. go中的goroutine协程
  15. 通过JAVA获取优酷视频
  16. windows linux jdk8 jdk11下载
  17. ubuntu设置成中文详细贴图教程
  18. 性能指标TP99介绍
  19. 两个均匀分布的随机变量求和的分布
  20. OpenCV基于dlib进行人脸关键点检测(摄像头)

热门文章

  1. 华为交换机console口密码配置
  2. 清除计算机垃圾cmd命令,dos命令清理垃圾,教你dos命令清理垃圾的方法
  3. HDUOJ---携程员工运动会场地问题
  4. 狂神说SpringMVC
  5. RAW、YUV、RGB、JPEG格式简介
  6. 电驴服务器搜索文件排序,电驴怎么连接服务器 电驴eMule怎么搜索文件
  7. 七夕送什么礼物最实用?送人绝对不会出错的礼物值得买
  8. 大数据简介、Hadoop 起源以及 Google 三大论文介绍
  9. Keras入门(2)——麻雀虽小,五脏俱全
  10. C语言中access的使用