论文阅读笔记 | 目标检测算法——Cascade R-CNN算法

简介: 论文阅读笔记 | 目标检测算法——Cascade R-CNN算法

paper:Cascade R-CNN: Delving into High Quality Object Detection

摘要:

曾经,在目标检测领域中,IoU阈值的设定非常重要。如果设置一个比较低的阈值,会出现比较多的噪声对象;而如果设置的比较高,检测器的性能也会下降。这主要是两个原因:

1)阈值设置过高,会导致在训练期间由于正样本指数消失而过度拟合。

2)在推断过程中,检测器最适合的IoU与输入假设不匹配。

为此,作者提出了Cascade R-CNN来解决这两个问题。Cascade R-CNN由一系列经过IoU阈值递增训练的检测器组成,检测器被逐级训练,利用上一层检测器的输出作为下一级检测器的输入。


1. Introduction


目标检测的两个问题:

1)提议检测器的假设分布通常严重不平衡,质量很低。一般来说,强制较大的IoU阈值会导致正训练样本的数量呈指数级减少。

2)测器的质量和推断时测试假设的质量不匹配。

Cascade R-CNN解决问题的基本思想是单个检测器只能针对单个质量水平进行优化。这是因为,高质量的检测器只对高质量的假设是最佳的。当他们被要求研究其他质量水平的假设时,检测可能是次优的。如图c所示:

image.png

作者提出的Cascade R-CNN是R-CNN的多级扩展,其级联是顺序训练的,使用一级的输出来训练下一级。这是因为观察到回归器的输出IoU几乎总是优于输入IoU,说明用某个IoU阈值训练的检测器的输出是训练下一个更高IoU阈值的检测器的良好分布。

级联的重采样程序并不是为了挖掘困难样本,而是通过调整边界框,每个阶段都旨在为下一阶段的训练找到一组良好的接近假阳性。当以这种方式操作时,一系列适用于越来越高的IoUs的检测器可以克服过拟合问题,从而得到有效的训练。推断时,应用相同的级联过程。逐步改进的假设与每个阶段不断提高的检测器质量更匹配。

Cascade R-CNN超过了那时所有以前最先进的单模型探测器。


2 Related Work


2.1 iterative bounding box regression

在Cascade R-CNN提出之前,有一些研究认为,f单一的回归步骤可能不足以精确定位,所以打算将回归网络f迭代使用,作为一个后处理步骤,如图所示:

image.png

其中,可以定义为:

image.png

但是这个方法忽视了两个问题:

1)在u = 0.5下训练的回归函数对于更高的阈值限制来说是次优的,会限制高质量回归网络的性能,所以保持同一个阈值优化是不可取的。

2)边界框的分布在每次迭代后都会发生显著变化。虽然回归器对于初始分布是最优的,但是在那之后可能是次优的。也就是,重复迭代同一个回归器是性能不一定是好的。


2.2 Integral Loss

一般来说,很难要求单个分类器在所有IoU级别上表现一致。在推断时,由于由提议的检测器产生的大多数假设,质量较低,检测器必须对质量较低的假设更具鉴别能力。在这些相互冲突的要求之间,一个标准的折衷方案是将u = 0.5。然而,这是一个相对较低的阈值,导致低质量的检测,具有比较多的假阳性样本。

对此,一个简单的解决方案是开发一组分类器,针对不同质量水平的损耗进行优化。也就是采取多个IoU阈值对其进行优化。具体结构如图所示:

image.png

其中,损失函数定义为:

image.png

其中U 是一组IoU阈值,U = { 0.5 , 0.55 , … , 0.75 }

在推断的过程中,分类区需要进行集合优化。但是这个方法也同样的无法解决问题。这是因为,正样本集随着阈值u增加而快速减少,对于高质量的分类器在推断过程中提供的proposals不会太多。此外,那些高质量的分类器需要处理推断时质量极低的proposals,而它们并没有针对这些proposals进行优化。


3. Cascade R-CNN


综上所述,问题的关键在于低阈值的proposals需要用低质量的分类器处理;而高阈值的proposals需要用高质量的分类器处理。所以,Cascade R-CNN中,级联训练的思想理所当然的提出了。

image.png

3.1 Cascaded Bounding Box Regression

很难要求单个回归器在所有质量级别上完美一致地执行,为此,作者将困难的回归任务可以分解为一系列更简单的步骤,也就是变成一个级联回归问题。具体结构如图所示:

image.png

Cascade R-CNN中的级联回归器可以被定义为:

image.png

其中,T是级联级的总数。级联中的每个回归器都经过优化,样本分布{ b t } \{bt\}{bt}到达相应的阶段,而不是{ b 1 } \{b1\}{b1}的初始分布。这个级联逐步改进阈值。


  • Cascade R-CNN与iterative BBox的区别:

1)Iterative BBox是用于改进包围盒的后处理过程,而级联回归是一个重采样过程,它改变了要由不同阶段处理的假设的分布。

2)Cascade R-CNN的级联模块用于训练和推理,所以训练和推理分布之间没有差异。

3)Cascade R-CNN针对不同阶段的重采样分布,优化了多个专用回归器{ f T , f T − 1 , … , f 1 } 。这与Iterative BBox的单个回归器f ff相反,它只对初始分布是最优的。


3.2 Cascaded Detection

对于初始的假设分布,是严重倾向于低质量的,这不可避免地导致高质量分类器的无效学习。Cascade R-CNN依靠级联回归作为重采样机制来解决这个问题。由于某个u训练的边界框回归器倾向于产生更高IoU的边界框,如图所示:

image.png

所以一开始设置的IoU阈值可以设置得不需要太大,而后通过前级的低质量回归器训练出一些质量越来越高的proposals,作为一些高质量回归器(阈值高)的输入,从而获得比较好的结果。

image.png

这保证了一系列经过有效训练的检测器的质量不断提高。在推断时,通过应用相同的级联过程,提议框的质量被顺序提高,并且仅需要更高质量的检测器来对更高质量的提议框进行操作。这使得高质量的目标检测成为可能。


4. Result


  • 与iterative BBox及integral loss的结果对比:

image.png

  • 级联训练的效果:

image.png

  • 与那时的SOTA的对比:

image.png

ps:这里可以看见,Cascade R-CNN算法是优于One-step检测的retinanet的。

目录
相关文章
|
3天前
|
算法
计算机算法设计与分析(1-6章 复习笔记)
计算机算法设计与分析(1-6章 复习笔记)
|
4天前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
3天前
|
算法 Java 索引
12.12_黑马数据结构与算法笔记Java
12.12_黑马数据结构与算法笔记Java
12 1
|
4天前
|
人工智能 算法
计算机算法设计与分析 第3章 动态规划 (笔记)
计算机算法设计与分析 第3章 动态规划 (笔记)
|
4天前
|
算法 C++
计算机算法设计与分析 第2章 递归与分治策略 (笔记)
计算机算法设计与分析 第2章 递归与分治策略 (笔记)
|
4天前
|
算法
计算机算法设计与分析 第1章 算法概述 (笔记)
计算机算法设计与分析 第1章 算法概述 (笔记)
|
24天前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(6) 常用集合算法
黑马c++ STL常用算法 笔记(6) 常用集合算法
|
24天前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(5) 常用算术生成算法
黑马c++ STL常用算法 笔记(5) 常用算术生成算法
|
24天前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(4) 常用拷贝和替换算法
黑马c++ STL常用算法 笔记(4) 常用拷贝和替换算法
|
24天前
|
存储 算法 搜索推荐
黑马c++ STL常用算法 笔记(3) 排序算法
黑马c++ STL常用算法 笔记(3) 排序算法

热门文章

最新文章