ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Cascade R-CNN解析

2021-08-03 15:34:09  阅读:293  来源: 互联网

标签:阈值 检测 IOU Cascade CNN 解析 检测器


目录

Introduction

相关研究进展

目标检测

Bounding Box 回归

 Detection Quality

 Cascade R-CNN

 Cascaded Bounding Box 回归

 Cascaded Detection

 实验结果

 实现细节

Baseline Networks

Comparison with the state-of-the-art

 结论


        在目标检测中,需要通过IoU (intersection over union)阈值来定义正负。用低IoU阈值(例如0.5)训练的目标检测器通常会产生噪声检测,如图a所示,并且,随着IoU阈值的增加,检测性能趋于下降。这个问题有两个主要的原因导致:

1、由于在训练过程中正样本呈指数下降,过少的正样本导致网络训练期间过拟合;

2、检测器在最优的iou与输入预测的iou之间会产生mismatch。

        多阶段目标检测体系结构Cascade R-CNN就是用来解决这些问题的。Cascade R-CNN由一组IOU不断增加的检测器组成,可以逐步的提高更接近目标的预测。检测器是一个阶段一个阶段地训练,后一个检测器利用前一个检测器的输出作为输入,这样就可以得到更高质量的预测。通过不断的提升IOU的信息可以保证所有的检测器都有一组等效尺寸的正样本,从而减少过拟合问题。同样的级联过程也可以应用于网络的推理阶段,使每个阶段的预测和检测器的信息更接近。在COCO数据集上,Cascade R-CNN的一个简单实现超越了所有单模型目标探测器。实验表明,级联R-CNN广泛适用于双阶段的检测器架构。原文代码

Introduction

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

        在Cascade R-CNN中,我们定义一个假设的阈值的IOU=u,并训练它,目的是尽可能的减少错误的目标框,如图(b)所示,其目的在是单个检测器的质量上保持最优结果。

        根据图(c)和(d)代表定位和检测性能展示,蓝、绿、红三条线分别表示IOU阈值u=0.5、0.6、0.7。

        在图(c)中,每个bounding box对于接近阈值的IoU的例子表现最好(原文这么说的,其实我并没有看出来,欢迎大家留言给予解释)。如果两个阈值相距比较远,就会存在mismatch问题。单一阈值训练出的检测器效果非常有限,单一阈值不能对所有的Proposals都有很好的优化作用。

        图(d)展示,当RPN输出的proposal的IOU较小时,阈值u=0.5的RCNN检测器的效果要优于阈值u=0.6的RCNN检测器,当RPN输出的proposal的IOU较大时(接近0.7左右),效果相反。所以,在单个IOU级别上优化的检测器不一定在其他级别上是最优的。

       这些观察表明,更好的检测结果需要探测器和预测之间更紧密的匹配。就是说,更好的检测结果是需要在预测框和真实框之间需要更大的IOU的阈值。然而,要生产一个好的检测结果,仅仅在训练期间提高IOU的阈值是不够的。事实上,就像图(d)中发现的u= 0.7的检测器那样,随着IOU的提升,更高的IOU阈值的网络得到的AP值更低,明显的看出来降低了检测性能。一般来说,增大IOU阈值会导致正训练样本的数量呈指数级减少。少量的正样本数据对于神经网络来说尤其成问题,非常少量的正样本容易导致过拟合问题。

        本文提出的Cascade R-CNN网络架构,目的就是为了解决IOU阈值引起的上述问题。这是R-CNN双阶段网络系列的扩展,检测器级联更深入,对那么低IOU阈值的正样本信息有着更好的选择性。Cascade R-CNN是序列化排列的,逐次递进的训练,就是说当前的训练是以来上一阶段的训练结果的。这个想法的提出也是基于经验和观察提出的,因为我们在训练R-CNN网络时候发现,经过回归输出的IOU信息总是比输入到proposal之前的IOU要高。这表明,以一定的IoU阈值训练的检测器输出是一个良好的分布,以训练下一个较高的IoU阈值的检测器。就是说当训练R-CNN时候,有一个之前训练过的IOU结果会对我们本次训练结果有着更好的效果。通过调整每个阶段的bounding box,每个阶段的目标是找到一组IOU更高的、更贴近于ground truth的一组数据,用于训练下一阶段。通过这种级联的训练方式,可以逐步提高预测和真实框之间的IOU信息,从而解决过拟合的问题,得到有效的训练。网络推理过程,也同样使用级联过程。通过训练逐步改进proposal的预测框与ground truth的匹配程度。

        Cascade R-CNN很容易实现,并且可以端到端进行训练。实验结果表明,在COCO检测任务上,在很大程度上超过了所有以前最先进的单个模型检测器。Cascade R-CNN可以在任意的双阶段的网络上进行构建,可以提升2-4个百分点,在计算复杂度上仅有略微的增加。通过这种级联方式的增益与base模型的检测效果好坏无关,都可以提升器原有的检测精度。因此,这种简单而有效的检测体系结构可以为许多目标检测研究工作带来帮助。

相关研究进展

        由于R-CNN系列双阶段网络的成功,通过组合proposal detector和region-wise classififier,,已经成为主流工作。为了提高R-CNN的检测速度,SPP Net、Fast R-CNN等网络被提出,后来Faster R-CNN网络又被推出,通过引进RPN模块,提高检测速度。最近的一些研究将其扩展到解决各种细节问题中。例如,R-FCN提出了无精度损失的高效区域全卷积,以避免Faster R-CNN在区域上的大量CNN计算。而MS-CNN和FPN则在多个输出层检测高召回建议,以缓解RPN的检测区域和实际对象大小两者之间的尺度不匹配的问题。

        另一方面,单阶段目标检测网络架构也变得流行起来,主要是因为它们有着更高的计算效率。YOLO网络系列通过高效的骨干网通过一次输入图像输出非常稀疏的检测结果,实现实时目标检测。SSD检测对象的方式与RPN类似,使用不同分辨率的多个特征图来覆盖不同比例的对象。单阶段网络虽然速度快,但是他们的缺点是精度通常都会低于双阶段检测网络。最近,RetinaNet被提出,解决密集目标检测中的前景-背景类的极端不平衡问题,取得了比目前最先进的两级目标检测器更好的结果。

目标检测

图(2)Faster R-CNN

 ​        这篇paper中,扩展了Faster R-CNN网络,如图(2)和图3(a)所示,第一阶段是一个子网络(“H0”),应用于整个图像,目的是产生初步的检测图片检测结果,就是我们熟悉的proposal模块。在第二阶段,这些初步的结果经过pooling之后被送入到一个感兴趣区域检测子网络(H1)处理准备再次分类和回归,该模块成为为检测器头部,也就是图(2)的经过ROI pooling后的模块。C是分类模块,B是回归模块。我们着重于对多级检测子网络建模,采用RPN进行建议检测,当然也可以更换其他模块进行预测。

Bounding Box 回归

         一个bounding box包含\large b = (b_{x},b_{y},b_{w},b_{h})四个数据,回归过程就是这组bounding box的一组坐标数据b像目标对的bounding box g进行回归,这个过程写作\large f(x,b)。也就是从样本\large (g_{i},b_{i})进行学习,最小化他们之间的loss值。这个过程可以表述为:\large L_{loc}(f(x_{i},b_{i}),g_{i})。这个回归的距离可以表示为\large \Delta =(\delta _{x},\delta _{y},\delta _{w},\delta _{h}),定义为公式(1):

\large \delta _{x}=(g_{x}-b_{x})/b_{w},                   \large \delta _{y}=(g_{y}-b_{y})/b_{h}

                               \large \delta _{w}=log(g_{w}/b_{w}),                      \large \delta _{h}=log(g_{h}/b_{h})

公式(1)

         由于在b上的回归操作是在b的位置上进行微小的调整,所以公式(1)的值通常是非常小的。所以,回归的loss通常比分类的loss值要小很多。为了提高多任务学习的有效性,Δ通常采用均值和方差进行归一化。

        一些paper认为,单一的回归步骤对于准确的本地化是不够的。 所以进行迭代操作:

\large f{}'(x,b)=f\circ f\circ f\circ \cdot \cdot \cdot f(x,b)                   (2)

 进行多次回归从而获得精确的bounding box的值b。这个过程称作iterative bounding box regression, 目的就是迭代更新bounding box。它可以通过图3 (b)中的推理体系结构实现,其中所有头部都是相同的。这种方式的弊端可以从图1(c)实验可以知道基于不同IOU阈值训练的检测模型对不同IOU的proposal输入效果差别比较大,因此如果每次迭代都用基于相同IOU阈值的训练数据训练得到的检测模型,那么当输入proposal的IOU不在你训练检测模型时IOU值附近时,效果不会有太大提升。如图(2)所示,bounding box的分布在每次迭代后都会发生显著的变化。迭代式bbox回归在不同阶段的四个回归值分布情况(蓝色点),可以看出在不同阶段这4个值得分布差异较大,对于这种情况,一成不变的检测模型显然难以在这种改变中达到最优效果。

 Detection Quality

         分类器ℎ(x)将一个图像包含M+1个类别的物体,其中类别0包含背景和其余包含要检测的对象。给以一个训练数据集\large (x_{i},y_{i}),它在训练过程中最小化类别损失交叉熵函数\large L_{cls}(h(x_{i}),y_{i}),其中\large y_{i}是类别标签。

         由于bounding box通常包括一个目标和一些背景,很难确定检测是正样本还是负样本。所以,这通常有IOU的阈值来决定。如果IOU超过阈值,则被认为是正样本。因此,判断类别标签的公式为:

\large y=\left\{\begin{matrix} g_{y}, IOU(x,y)\geqslant u\\0,otherwise \end{matrix}\right.                                            (3)

 \large g_{y}是真实类别标签,IOU阈值定义了检测器的质量。

        目标检测具有挑战性,因为无论阈值设置如何,检测设置都是高度对抗性的。因为如果阈值设置的很高,那么预测的bounding box与真实的bounding box就会包含很小的背景,那么网络就很难获取很多的正样本数据。如果将阈值设置的很低,网络会获取更多的正样本数据,但是所谓的正样本会包含很多的非真样本。所以,很难让一个单模型网络去自动完成阈值的设置。在网络推理时,由于proposal产生的很多的建议框的质量较低,检测器必须对质量较低的假设具有更强的鉴别能力。通常,一个折中的方案是设置阈值u=0.5。但是这种比较低的阈值会导致图(1)a的这种问题,也是我们在训练模型过程中经常遇到的问题。

        一个解决方案是开发一个分类器集成,使用图3 (c)的体系结构,优化了针对不同质量级别的损失:

U是一组阈值的集合。这与integral loss密切相关,其中U={0.5,0.55,⋅⋅⋅,0.75},旨在适应COCO数据集。根据定义,分类器需要在推理时集成。这个解决方案没有解决(4)的不同损失对不同数量的正的作用的问题。如图4的第一张图所示,当输入的阈值u增长时,正性样本集迅速减少,这会导致网络结果过拟合。此外,高质量的分类器需要处理正在推理时的质量极低的那些建议框,而这些建议并没有得到优化。 由于所有这些,(4)的集成未能在大多数质量级别上实现更高的精度,并且体系结构与图3 (a)相比几乎没有增益。  

 Cascade R-CNN

         在本节中,将介绍图3 (d)中提出的Cascade R-CNN目标检测体系结构。

 Cascaded Bounding Box 回归

        如图1 (c)所示,很难要求单个回归器在所有质量级别上完美一致地执行。在Cascade R-CNN中,它被构建为一个级联回归问题,其架构如图3 (d)所示,这个过程依赖一系列的回归器组成:

上式中,T表示回归的级联编号,注意级联中的每个回归器都经过了优化。每个过程的样本数量是随着级联阶段有着不同的分布。这种级联方式逐步改进获得到的建议框质量。

        这种级联方式不同于图3(b)的iterative BBox方式。首先,iterative BBox是一种用于改进bounding box的后处理过程,Cascade bounding box是一种重新采样的过程,它改变了不同阶段所要处理的样本分布。第二,这种级联方式可以同时应用在训练和推理过程中,所以训练和推理的运行方式没有差异。第三,这种多级联回归的方式是可以进行优化训练的,不同的阶段可以重新采样对样本进行分配。这些差异使得比iterative BBox更精确的定位,而无需进一步人工处理后续。

         \large \Delta =(\delta _{x},\delta _{y},\delta _{w},\delta _{h})​​​​​​​回归损失也同样需要多任务的学习。在每个回归阶段,它们的统计数据将依次更新,如图2所示。在训练时,使用相应的统计数据对每个阶段的Δ进行归一化。

 Cascaded Detection

         如图4的左边所示,初始的样本分布,例如RPN的proposal,明显的倾向于低质量样本分布。由于这些样本大部分都是低质量的数据,这会导致网络学习到很多低质量的样本结果。Cascade R-CNN的重采样机制就是为了解决这些问题。这是由于在图1 (c)中几乎所有的曲线都在对角线的灰色线之上,即bounding box回归器往往会产生大量更高数值的IOU值的bounding box数据。因此,从一组初始样本开始,级联回归依次重采样较高值的IOU的例子分布。通过这种方式,即使检测器质量(IOU阈值)增加,也可以使连续阶段的一组正样本保持大致恒定的大小数据。如图4所示,在每个重采样步骤之后,分布更倾向于高质量的样本分布。这种方式会有两种结果:

1、不会产生过拟合问题,因为正样本不会因为增大了阈值而降低。

2、针对较高的IOU阈值,更深的检测器会被进一步优化。

        注意,一些极端的值是通过增加IOU阈值来依次移除,如图2所示,从而使级联检测器得到更好的训练。

        级联的每个阶段的t,都包含一个分类器\large h_{t}和一个为优化阈值\large u^{t}的回归器\large f_{t},并且\large u^{t}>\large u^{t-1}。最小化loss值公式如下:

 ​​​​​​​其中,​​​​​​​\large b^{t}=f_{t-1}(x^{t-1},b^{t-1}),g是\large t^{x}的真实样本标签。权重洗漱\large \lambda默认值为1。\large y^{t}是根据公式(3)得到的真实值。在推断时,通过应用相同的级联过程,得到的质量依次提高,并且只需要在更高质量的结果上操作更高质量的检测器。如图1 (c)和(d)所示,这可以实现高质量的对象检测。

 实验结果

        Cascade R-CNN采用COCO数据集,包含118k的训练图片,5K的验证集和20K的测试集。

 实现细节

        Cascade R-CNN中所有的级联检测阶段都具有相同的架构,是基线检测网络的头部。总的来说,Cascade R-CNN有四个阶段,包括一个RPN模块和四个检测器模块(阈值分别是0.5,0.6,0.7)。第一阶段的采样过程就是标准的Faster R-CNN网络,在接下来的阶段中,重采样是通过简单地使用前一阶段的回归输出来实现的,正如上面提到的那样。这里采用图像水平翻转的数据增强,推断是在单一的图像尺度上进行的,并且所有的实现采用相同的框架和代码,以代表公平和公正。

Baseline Networks

         为了验证Cascade R-CNN的功能,原文采用三种baseline模型进行实现。Faster R-CNN的三个主干网络分别是:VGG-NET、R-FCN和带残差结构的FPN网络。这些baseline具有广泛的检测性能。

Comparison with the state-of-the-art

        可以看出来,Cascade模型在不同的模型下都有着最好的表现。 

 结论

        在本文中,提出了一个多阶段的目标检测框架,Cascade R-CNN,用于设计高质量的目标检测器。该体系结构避免了训练时的过拟合和推理时的质量不匹配问题。Cascade R-CNN在具有挑战性的COCO和流行的PASCAL VOC数据集上的可靠和一致的检测改进表明,要推进目标检测,需要建模和理解各种并发因素。Cascade RCNN被证明适用于许多目标检测体系结构。相信它可以帮助许多未来的目标检测的研究工作。

标签:阈值,检测,IOU,Cascade,CNN,解析,检测器
来源: https://blog.csdn.net/wind82465/article/details/119000153

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有