@

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. Enables DNS lookups on client IP addresses

    w虚拟域名访问,路由可以到达,但无输出. http://httpd.apache.org/docs/2.2/mod/core.html#hostnamelookups

  2. Logstash之时区问题的建议和修改---filter---and duplicate resolution.

    2. logstash es duplicate https://logstash.jira.com/browse/LOGSTASH-1875 https://logstash.jira.com/br ...

  3. Purpose of ContextLoaderListener in Spring

    The ApplicationContext is where your Spring beans live. The purpose of the ContextLoaderListener is ...

  4. Mybatis框架学习总结-优化Mybatis配置文件中的配置

    连接数据库的配置单独放在一个properties文件中 之前,是直接将数据库的连接配置信息卸载了Mybatis的conf.xml文件中,如下: <?xml version="1.0&q ...

  5. 『HTML5挑战经典』是英雄就下100层-开源讲座(一)从天而降的英雄

    是英雄就下100层是一款经典的手机小游戏,以前是在诺基亚手机上十分有名.今天我们就用HTML5和lufylegend一步步地实现它. 一,准备工作 首先,你需要下载lufylegend,下载地址如下: ...

  6. Spark2.0机器学习系列之6:GBDT(梯度提升决策树)、GBDT与随机森林差异、参数调试及Scikit代码分析

    概念梳理 GBDT的别称 GBDT(Gradient Boost Decision Tree),梯度提升决策树.     GBDT这个算法还有一些其他的名字,比如说MART(Multiple Addi ...

  7. windows 2003 iis php

    我的环境 是   windows server200 ee   iis6.0  程序是php 1.一台安装好的 Windows 2003 服务器,并且已经安装了 IIS 6. 2.下载 windows ...

  8. VS和IE或者360兼容模式简单调试js方法

    首先IE(8.0版本以上)将脚本调试去掉,如下图 之后在vs里面的js要调试的地方添加代码debugger ,如下图所示 当程序运行到debugger处时,就会提示要调试,选择vs版本即可 之后会出现 ...

  9. 2017浙江省赛 H - Binary Tree Restoring ZOJ - 3965

    地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3965 题目: iven two depth-first-search ...

  10. Ubuntu server 安装的mysql数据库忘记密码的解决方法

    客户端连接时报错MySQL数据库出现:Error 1045错误时,就表明输入的用户名或密码错误被拒绝访问了. 解决办法可以分为以下几步: 1.修改mysql配置文件,使得可以无密码登录mysql su ...