摘要

虽然低 IoU 阈值,如 0.5,会产生噪声检测(noisy detections),但是,随着 IoU 阈值的增加,检测性能往往会下降。造成这种情况的主要因素有两个:1)由于在训练过程中正样本呈指数下降,过少的正样本导致网络训练期间过拟合。2)dismatch:检测器在最优的 IoU 与输入预测的 IoU 之间会产生mismatch。由此,我们提出了多阶段的目标检测器结构:Cascade R-CNN 来解决 IoU 选择的问题。它由一系列不断增加 IoU 阈值的检测器组成,可以逐步的更接近目标的预测。。检测器是逐步训练的,前一个检测器输出一个良好的数据分布并作为输入,用于训练下一个更高质量的检测器。逐步改进的重采样保证了所有检测器都有一组相同大小的正样本,从而减少了过拟合问题。在 inference 阶段使用级联的检测器结构可以合理的提高了 IOU 的阈值而不会出现 mismatch 问题。

1,介绍

Cascade RCNN 是作者 Zhaowei Cai2018 年发表的论文 Cascade R-CNN: Delving into High Quality Object Detection.

目标检测是一个复杂的问题,需要解决两个主要任务。首先,检测器必须解决识别问题,区分前景目标和背景目标,并为其分配匹配的类别标签。其次,探测器必须解决定位问题,为不同的目标分配精确的 bounding box。许多目标探测器都是基于两阶段网络框架 Faster R-CNN 的。双阶段检测网络是一个多任务学习问题,包括目标的分类和边界回归。与物体识别不同的是,定义正/负样本需要一个 IoU 阈值。通常使用的 IOU 阈值 u=0.50.5IOU 的设置是相当低的。检测的目标经常包含很多噪声,如图 (a)所示。IOU 阈值取0.5,会有很多假的预测信息也都包含在内,从而会产生很多错误的预测信息。

1.1,Faster RCNN 回顾

先回顾下 Faster RCNN 的结构,下图是 Faster RCNN 的结构图。

training 阶段和 inference 阶段的不同在于,inference 阶段不能对 proposala 进行采样(因为不知道 gt,自然无法计算 IoU),所以 RPN 网络输出的 300 RoIs(Proposals)会直接输入到 RoI pooling 中,之后通过两个全连接层分别进行类别分类和 bbox 回归。

值得注意的是,Faster RCNN 网络在 RPNFast RCNN 阶段都需要计算 IoU,用于判定 positivenegative。前者是生成 256Proposal 用于 RPN 网络训练,后者是生成 128RoIs(可以理解为 RPN 网络优化后的 Proposals)用于 Fast RCNN 训练。

1.2,mismatch 问题

training 阶段和 inference 阶段,bbox 回归器的输入 proposals 分布是不一样的,training 阶段的输入proposals 质量更高(被采样过,IoU > threshold),inference 阶段的输入 proposals 质量相对较差(没有被采样过,可能包括很多 IoU < threshold 的),这就是论文中提到 mismatch 问题,这个问题是固有存在的,但通常 threshold0.5 时,mismatch 问题还不会很严重。

2,实验分析

2.1,改变IoU阈值对Detector性能的影响

从上图可以看出:

  • 同一个 detector 通常只会在一个小范围的 IoU 阈值 内性能最好,比如 IoU 阈值为 0.5 的 detector,在输入 proposalgt 的阈值为 0.55-0.6 范围内,其性能最好。阈值为 0.6 的 detector 则在 0.6~0.75 阈值范围内性能最佳。
  • 几乎所有的检测器输出框的 IoU 都好于输入 proposal 的 IoU(红绿蓝三条曲线都在灰色对角线上方)。

2.2,提高IoU阈值的影响

主要是分析对提高 IoU 阈值对 RPN 输出 Proposal 数量的影响,实验结果如下图所示。

上图纵坐标表示 RPN 输出 proposal 在各个 IoU 范围内的数量。

  • 第一张图表示级联结构的第一级,可以等同为没有级联结构的 RCNN 网络。从图中可以看出,随着 IoU 的增加,IoU 在 0.6,0.7 及以上范围内的 proposal 数量越来越少。虽然这样产生更高精度的 proposal,但是也带来了两个问题:

    • 过拟合
    • 更严重的 mismatch 问题RCNN 结构本身就存在这个问题,IoU 阈值的提高又加剧了这个问题。
  • 第二、三图表示有级联结构的 RCNN,从图中可以看出,随着 stage 的加深,相应区域的依然拥有大量的 proposal,因此不会出现严重的过拟合的现象。

2.3,和Iterative BBox比较

Iterative BBoxH 位置都是共享的,而且 3 个分支的 IoU 阈值都取 0.5Iterative BBox 存在两个问题:

  • 单一阈值 0.5 是无法对所有 proposal 取得良好效果。
  • 此外,detector 会改变样本的分布,使用同一个共享的 H 对检测是有影响的。作者做了下面的实验证明样本分布在各个stage 的变化。

红色表示离群点。

  • 从上图可以看出,没经过一次回归,样本都会更靠近 gt,即输出的样本分布会逐渐变化,使用同一个阈值 0.5 的条件下,后面两个 stage 就会有较多的离群点,使用共享的 Head 网络权重是无法满足输入的变化的。
  • 从上图还可以看出,每个阶段设置不同的 IoU 阈值,可以更好的去除离群点,从而适应不同的输入 proposal 分布。

3,网络结构

网络结构如下图(d)

上图中 (d) 和 (c) 很像,iterative bbox at inference 是在推断时候对回归框进行后处理,即模型输出预测结果后再多次处理,而 Cascade R-CNN 在训练的时候就进行重新采样,不同的 stage 的输入数据分布已经是不同的了。

简单来说 cascade R-CNN 是由一系列的检测模型组成,每个检测模型都基于不同 IOU 阈值的正负样本训练得到,前一个检测模型的输出作为后一个检测模型的输入,因此是 stage by stage 的训练方式,而且越往后的检测模型,其界定正负样本的 IOU 阈值是不断上升的。

Cascade R-CNN 的几个检测网络(Head 网络)是基于不同的 IOU 阈值确定的正负样本上训练得到的。

作者在 COCO 数据集上做了对比实验,达到了 state-of-the-art 精度。其中 backboneRsNet-101Cascade RCNNAP 达到了 42.8

参考资料

二阶段目标检测网络-Cascade RCNN 详解的更多相关文章

  1. 【目标检测】Cascade R-CNN 论文解析

    目录 0. 论文链接 1. 概述 2. 网络结构的合理性 3. 网络结构 4. 参考链接 @ 0. 论文链接 Cascade R-CNN 1. 概述   这是CVPR 2018的一篇文章,这篇文章也为 ...

  2. (二)目标检测算法之R-CNN

    系列博客链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html 概述: 1.目标检测-Overfeat模型 2.目标检测-R-C ...

  3. 第三十五节,目标检测之YOLO算法详解

    Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object de ...

  4. 【转】目标检测之YOLO系列详解

    本文逐步介绍YOLO v1~v3的设计历程. YOLOv1基本思想 YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这 ...

  5. 物体检测丨Faster R-CNN详解

    这篇文章把Faster R-CNN的原理和实现阐述得非常清楚,于是我在读的时候顺便把他翻译成了中文,如果有错误的地方请大家指出. 原文:http://www.telesens.co/2018/03/1 ...

  6. 目标检测 1 : 目标检测中的Anchor详解

    咸鱼了半年,年底了,把这半年做的关于目标的检测的内容总结下. 本文主要有两部分: 目标检测中的边框表示 Anchor相关的问题,R-CNN,SSD,YOLO 中的anchor 目标检测中的边框表示 目 ...

  7. 目标检测:SSD算法详解

    一些概念   True    Predict  True postive False postive  预测为正类 False negivate True negivate  预测为负类    真实为 ...

  8. 第二十九节,目标检测算法之R-CNN算法详解

    Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmenta ...

  9. 目标检测(三) Fast R-CNN

    引言 之前学习了 R-CNN 和 SPPNet,这里做一下回顾和补充. 问题 R-CNN 需要对输入进行resize变换,在对大量 ROI 进行特征提取时,需要进行卷积计算,而且由于 ROI 存在重复 ...

  10. 目标检测算法Faster R-CNN

    一:Faster-R-CNN算法组成: 1.PRN候选框提取模块: 2.Fast R-CNN检测模块. 二:Faster-R-CNN框架介绍 三:RPN介绍 3.1训练步骤:1.将图片输入到VGG或Z ...

随机推荐

  1. JSP实现登录功能(页面带样式)

    功能要求 1.完成两个页面 2.第一个登陆页面login. jsp 3.第二个用户管理页面useManage. jsp 4.有登录功能(能进行用户名密码的校验,用户名若为自己的学号密码为班级号,允许登 ...

  2. 聊聊Vim的工作原理

    聊聊Vim的工作原理 日常里一直在用Vim这个编辑器,前阵子学习关于Linux中的fd(文件描述符)时,发现vim的进程描述符会比上一个自动加一,后续了解到vim的工作原理后,解开了这个疑问,所以记录 ...

  3. P1600 [NOIP2016 提高组] 天天爱跑步 (树上差分)

    对于一条路径,s-t,位于该路径上的观察员能观察到运动员当且仅当以下两种情况成立:(d[ ]表示节点深度) 1.观察员x在s-lca(s,t)上时,满足d[s]=d[x]+w[x]就能观察到,所以我们 ...

  4. 痞子衡嵌入式:RT-MFB - 一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案. 对于以 i.MXRT 这类没有内部 NVM (Non-Volati ...

  5. <一>关于进程虚拟地址空间区域内存划分和布局

    C++代码在编译完成后会生产.exe程序(windows平台), .EXE以文件的形式存储在磁盘上,当运行.exe程序的时候 操作系统会将磁盘上的.exe文件加载到内存中,那么在加载到内存中的时候,操 ...

  6. 13.MongoDB系列之分片简介

    1. 分片概念 分片是指跨机器拆分数据的过程,有时也会用术语分区.MongoDB既可以手工分片,也支持自动分片 2. 理解集群组件 分片的目标之一是由多个分片组成的集群对应用程序来说就像是一台服务器. ...

  7. 路由组件构建方案(分库分表)V1

    路由组件构建方案V1 实现效果:通过注解实现数据分散到不同库不同表的操作. 实现主要以下几部分: 数据源的配置和加载 数据源的动态切换 切点设置以及数据拦截 数据的插入 涉及的知识点: 分库分表相关概 ...

  8. 创建第一个springboot项目、用springboot实现页面跳转、@Controller和@RestController的区别

    文章目录 一.第一个spring boot项目 二.spring boot跳转到指定页面 三.怎样将后台的信息传递到前台 四. @Controller和@RestController的区别? 一.第一 ...

  9. Droplet——一款轻量的Golang应用层框架

    Github地址 如标题所描述的,Droplet 是一个 轻量 的 中间层框架,何为中间层呢? 通常来说,我们的程序(注意这里我们仅仅讨论程序的范围,而非作为一个系统,因此这里不设计如 LB.Gate ...

  10. element-ui el-table 高度自适应

    element-ui  el-table 高度自适应 <div ref="searchHeader" class="div_search search_title& ...