@

0. 论文链接

Cascade R-CNN

1. 概述

  这是CVPR 2018的一篇文章,这篇文章也为我之前读R-CNN系列困扰的一个问题提供了一个解决方案:R-CNN在fine-tuning使用IOU threshold = 0.5来防止过拟合,而在分类阶段,使用softmax因为之前0.5的设定太过宽松(loose),而导致精度下降较多,因此单独训练了一个新的SVM分类器并且更改了IOU阈值(文章中对这样做进行大量的实验对比以及证据十分有力),而在Fast R-CNN中我看到也是用的0.5作为阈值,却通过实验证明softmax比SVM要好一些, 在R-CNN系列的总结我也提了一些可能的原因。而这片文章正好解决大多数分类器的问题,IOU阈值的设定难题。

  对于一个detector来说,如果IOU threshold太低,会学习到很多背景框,引入很多噪声,比如上图中a),可以发现很多噪声框。但如果IOU threshold太高则会导致两个问题:1.样本会以指数级的速度消失2.会在inference阶段出现detector最优的阈值与输入proposal的IOU值发生mismatch。这里解释一下为什么会mismatch:detector通常在proposal自身的IOU值与detector训练的IOU阈值较为接近的时候才会有更好的结果,如果一味的提高IOU阈值很容易出现mismatch导致性能很差,可以看下图关于RPN生成proposal的IOU值分布更好的理解一下(因为高IOU的proposal很少,大多数都是较低IOU的proposal):

  所以对于a single detector来说,很难抉择一个合适的IOU,无论高低都是有很大弊端的,这篇文章提出了一种级联检测器,他利用前一个检测器输出“a good data distribution“来作为下一个检测器的输入,同时相应的提高训练时的IOU阈值,使得IOU阈值与proposal的IOU值较为接近,这样训练3个检测器最后输出结果会好很多,在inference阶段使用同样的网络结构合理的提高了IOU的阈值而不会出现之前所说的问题。文章中通过大量的实验证明了这种网络结构的合理性。

2. 网络结构的合理性

  这样网络设计是需要有几个事实支持的,之所以说是事实支持而不是理论支持,因为这些结论大多数通过大量实验验证出的结果,很难用理论严格的证明。

  1. 一个检测器通常只在一个小范围的IOU阈值内(a single quality level)性能最好,从之前图片中c)可以发现,在0.55-0.6的范围内阈值为0.5的detector性能最好,在0.6~0.75阈值为0.6的detector性能最佳,而到了0.75之后就是阈值为0.7的detector了,比IOU阈值过高过低的proposal都会导致检测器性能下降,因此保证检测器训练时的IOU阈值与输入proposal 的IOU相近是十分重要并且有必要的。
  2. 通过观察图c可以发现,几乎所有检测器输出的检测框的IOU都好于输入proposal的IOU(曲线几乎都在灰色对角线之上),因此这保证了我们通过一个检测器输出的检测框整体IOU相对输入的proposal的IOU都会提高,可以作为下一个使用更高IOU阈值训练检测器一个很好的数据输入。因此每个检测器输出的检测框质量都会变高,阈值的提高其实也相当于一个resample的过程,一些异常值也可以去掉,提高了模型的鲁棒性。
  3. 读到这里最大困惑就是,一直提高阈值,那正样本会不会减少,导致过拟合呢? 作者通过详细的实验证明了每个阶段大于对应IOU阈值的proposal数量基本没有改变,甚至还有所提升,实验结果如下:

3. 网络结构

  网络结构其实真的比较简单,文章中也列举了其他3种结构,但是一般人首先想到的确实是本文这种结构,其他结构反而更难想到一些,其他结构通过结构图也很容易理解,关于其他模型的优劣文中也有提到,比如BBox 迭代训练2次以上几乎是没有作用的,这些原因我们通过文章几个实验结论以及结构图都是可以发现的,在此不多赘述,结构如下图:

  检测器文中使用了Faster R-CNN, R-FCN, FPN,具体实验细节与结果也不再赘述。

4. 参考链接

Cascade RCNN算法笔记
Cascade R-CNN 详细解读
目标检测论文阅读:Cascade R-CNN: Delving into High Quality Object Detection

【目标检测】Cascade R-CNN 论文解析的更多相关文章

  1. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)

    CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)1. 目标检测:FCOS(CVPR 2019)目标检测算法FCOS(FCOS: ...

  2. 第三十六节,目标检测之yolo源码解析

    在一个月前,我就已经介绍了yolo目标检测的原理,后来也把tensorflow实现代码仔细看了一遍.但是由于这个暑假事情比较大,就一直搁浅了下来,趁今天有时间,就把源码解析一下.关于yolo目标检测的 ...

  3. 数据挖掘、目标检测中的cnn和cn---卷积网络和卷积神经网络

    content 概述 文字识别系统LeNet-5 简化的LeNet-5系统 卷积神经网络的实现问题 深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功.本人在多年之前也曾接触过神经网络.本系 ...

  4. 深度学习之目标检测:非极大值抑制源码解析(nms)

    目标检测:nms源码解析 原理:选定一个阈值,例如为0.3,然后将所有3个窗口(bounding box)按照得分由高到低排序.选中得分最高的窗口,遍历计算剩余的2窗口与该窗口的IOU,如果IOU大于 ...

  5. 目标检测之Faster-RCNN的pytorch代码详解(模型训练篇)

    本文所用代码gayhub的地址:https://github.com/chenyuntc/simple-faster-rcnn-pytorch  (非本人所写,博文只是解释代码) 好长时间没有发博客了 ...

  6. AI佳作解读系列(五) - 目标检测二十年技术综述

    计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶.视频监控.机器人视觉等,而被研究学者广泛关注.   上周四,arXiv新出一篇目标检测文献<Object Detection ...

  7. Spiking-YOLO : 前沿性研究,脉冲神经网络在目标检测的首次尝试 | AAAI 2020

    论文提出Spiking-YOLO,是脉冲神经网络在目标检测领域的首次成功尝试,实现了与卷积神经网络相当的性能,而能源消耗极低.论文内容新颖,比较前沿,推荐给大家阅读   来源:晓飞的算法工程笔记 公众 ...

  8. 增量学习不只有finetune,三星AI提出增量式少样本目标检测算法ONCE | CVPR 2020

    论文提出增量式少样本目标检测算法ONCE,与主流的少样本目标检测算法不太一样,目前很多性能高的方法大都基于比对的方式进行有目标的检测,并且需要大量的数据进行模型训练再应用到新类中,要检测所有的类别则需 ...

  9. 【目标检测】基于传统算法的目标检测方法总结概述 Viola-Jones | HOG+SVM | DPM | NMS

    "目标检测"是当前计算机视觉和机器学习领域的研究热点.从Viola-Jones Detector.DPM等冷兵器时代的智慧到当今RCNN.YOLO等深度学习土壤孕育下的GPU暴力美 ...

  10. 对抗网络之目标检测应用:A-Fast-RCNN

    对抗网络之目标检测应用:A-Fast-RCNN 论文:A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection ...

随机推荐

  1. Ubuntu 分区以及各个挂载目录的基本含义

    我磁盘大概还有70多G的空间吧,我全部拿来使用的.真实的双系统哦. 一般来讲,linux系统分区最少要包括/和/swap两个.这样据说会影响性能,没有这样安装过,就无从考证啦.其实就是重装系统的时候, ...

  2. git之merge和rebase的区别

    merge合并 # merge操作 第一步: # 先创建一个目录,在主分支提交3个txt文件 [root@luchuangao]# mkdir oldboy [root@luchuangao]# gi ...

  3. Go学习笔记一:解析toml配置文件

    本文系作者原创,转载请注明出处https://www.cnblogs.com/sonofelice/p/9085291.html . 一些mysql或者日志路径的信息需要放在配置文件中.那么本博文主要 ...

  4. golang几种post方式

    用golang进行http请求类型多了,总结备忘一下. 1.普通的post\get请求 var r http.Request r.ParseForm() r.Form.Add("uuid&q ...

  5. 为什么说”人生苦短,我用python“?

    本文不扯什么大道理,只是先介绍Python的背景,然后从实用的角度出发举一两个真实栗子. ​ 首先要想了解要一门语言的好坏,或者为什么招程序员喜欢(卧槽,原来程序员喜欢不是女朋友?)我们的先从语言的产 ...

  6. Mybatis框架学习总结-使用Mybatis对表执行CRUD操作

    使用MyBatis对表执行CRUD操作——基于XML的实现 1.创建(create)用户:在userMapper.xml文件中增加: <!-- 创建用户Create --> <ins ...

  7. 007-Hadoop Hive sql语法详解2-修改表结构

    一.表 更改表名:ALTER TABLE table_name RENAME TO new_table_name 增加表的元数据信息:ALTER TABLE table_name SET TBLPRO ...

  8. 使用jQuery创建节点、将节点插入到指定的位置

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  9. python 随机分类

    #encoding:utf-8import pandas as pdimport numpy as npfrom sklearn import datasets,linear_modelfrom sk ...

  10. 国内NLP的那些人那些会

    统计学和语言学专家都列在一起了,没有区分.1,黄昌宁,1937年生于广东,1955年考入清华大学电机系,1961年毕业并留校任教至博士生导师, 1983-1984年赴美国耶鲁大学进修,1986-198 ...