基于候选区域的深度学习目标检测算法R-CNN,FastR-CNN,FasterR-CNN

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于候选区域的深度学习⽬标检测算法R-CNN,FastR-
CNN,FasterR-CNN
参考⽂献
[1]Rich feature hierarchies for accurate object detection and semantic segmentation
[2]Fast R-CNN
[3]Faster R-CNN: towards real-time object detection with region proposal networks
1. 概述
图像分类,检测及分割是计算机视觉领域的三⼤任务。

图像分类模型是将图像划分为单个类别,通常对应于图像中最突出的物体。

但是现实世界的很多图⽚通常包含不只⼀个物体,此时如果使⽤图像分类模型为图像分配⼀个单⼀标签其实是⾮常粗糙的,并不准确。

对于这样的情况,就需要⽬标检测模型,⽬标检测模型可以识别⼀张图⽚的多个物体,并可以定位出不同物体(给出边界框)。

⽬标检测在很多场景有⽤,如⽆⼈驾驶,⼈脸识别等。

⽬标检测模型的主要性能指标是检测准确度和速度,对于准确度,⽬标检测还要考虑物体的定位准确性,⽽不单单是分类准确度。

⽬前主流的⽬标检测算法主要是基于深度学习模型,其可以分成两⼤类:(1)two-stage检测算法,其将检测问题划分为两个阶段,⾸先产⽣候选区域,然后对候选区域进⾏校正和分类,这类算法的典型代表是基于候选区域的R-CNN系算法,如R-CNN,Fast R-CNN,Faster R-CNN 等;(2)one-stage检测算法,其不需要region proposal阶段,直接产⽣物体的类别概率和位置坐标值,⽐较典型的算法如YOLO和SSD。

本⽂是介绍的是第⼀类two-stage检测算法中的R-CNN系算法——R-CNN,Fast R-CNN,Faster R-CNN,在⼀般情况下,two-stage算法准确度要优于one-stage检测算法。

R-CNN,即Regions with CNN features,R-CNN是基于候选区域⽅法的⽬标检测算法系列开⼭之作,论⽂⾸次将CNN⽅法引⼊⽬标检测领域,⼤⼤提⾼了⽬标检测效果,也改变了⽬标检测领域的主要研究思路,之后的Fast R-CNN、Faster R-CNN都是以它为基础。

在R-CNN中,每个候选区域都要单独送⼊CNN模型计算特征向量,这是⾮常费时的,为了减少候选区域使⽤CNN模型提取特征向量所消耗的时间,Fast R-CNN只对整张图像全区域进⾏⼀次特征提取,Fast R-CNN最⼤的贡献是让⼈们看到了在Region Proposal+CNN这⼀框架下对⽬标进⾏实时检测的希望,也为后来的Faster R-CNN做下了铺垫。

对于Fast R-CNN,其仍然需要selective search⽅法来⽣产候选区域,这是⾮常费时的。

为了解决这个问题,Faster R-CNN模型引⼊了RPN (Region Proposal Network)直接产⽣候选区域。

Faster R-CNN可以看成是RPN和Fast R-CNN模型的组合体。

2. R-CNN
在R-CNN未提出之前,对象检测这⼀问题基本是遵循着“设计⼿⼯特征(Hand-crafted feature)+分类器”的思路,⽽且由于存在着区域搜索的步骤,所以可以认为是计算机⽤⼀个⼩的矩形窗⼝不断在图像上滑动、缩放,然后⽤分类器预测当前滑动窗⼝所在区域是否存在⼀个感兴趣的对象。

R-CNN利⽤图⽚经过CNN模型得到的特征向量代替传统⼿⼯计算特征,对⽬标检测能得到更好的结果。

R-CNN⽬标检测系统由三个模块组成。

第⼀个模块⽣成类别独⽴候选区域。

这些候选区域定义了我们的检测器可⽤的候选边界框集合。

第⼆个模块是从各个区域提取固定长度特征向量的⼤型卷积神经⽹络。

第三个模块是⼀组类别特定的线性SVM分类器。

对于⼀张图⽚,R-CNN基于selective search⽅法⼤约⽣成2000个候选区域,selective search⽅法是⼀种启发式搜索算法。

它先通过简单的区域划分算法将图⽚划分成很多⼩区域,然后通过层级分组⽅法按照⼀定相似度合并它们,最后的剩下的就是候选区域,它们可能包含⼀个物体。

⽣成的每个候选区域被修正成固定⼤⼩(227×227)并送⼊⼀个CNN模型中,最后得到⼀个4096维的特征向量。

然后这个特征向量被送⼊⼀个多类别SVM分类器中,预测出候选区域中所含物体的属于每个类的概率值。

每个类别训练⼀个SVM分类器,从特征向量中推断其属于该类别的概率⼤⼩。

R-CNN最后⼜训练了⼀个边界框回归模型,使⽤回归模型精细修正候选框位置,提升定位的准确性。

R-CNN⽹络对⽐传统的⽬标识别算法把检测问题转化为了分类问题,采⽤CNN模型进⾏特征提取,效果要⽐传统的⼿⼯提取特征⽅法更好。

但R-CNN⽹络中,⼀张图经由selective search算法提取约2000个候选区域,每个候选区域都要单独送⼊CNN模型计算特征向量,这个操作是⾮常费时的。

R-CNN⽹络训练过程分为提取候选区域、提取CNN特征、SVM分类和Bounding-box 回归等步骤,过于繁琐。

R-CNN 模型要求输⼊CNN⽹络进⾏提取特征的候选区域是固定尺⼨,但其实像AlexNet CNN等⽹络在提取特征过程中对图像的⼤⼩并⽆要求,只是在提取完特征进⾏全连接操作的时候才需要固定特征尺⼨,这部分也可以进⾏优化。

3. Fast R-CNN
针对R-CNN⽹络从候选区域提取特征向量耗时的问题,Fast R-CNN规避了R-CNN中冗余的特征提取操作,只对整张图像全区域进⾏⼀次特征提取,⽤RoI pooling层取代最后⼀层max pooling层,对于每个候选区域, RoI pooling层可以从CNN特征图中得到⼀个固定长和宽的特征图(长和宽是超参数,论⽂中选⽤的尺⼨为7×7),RoI pooling的原理很简单,其根据候选区域按⽐例从CNN特征图中找到对应的特征区域,然后将其分割成⼏个⼦区域(根据要输出的特征图的⼤⼩),然后在每个⼦区域应⽤max pooling,从⽽得到固定⼤⼩的特征图。

Fast R-CNN⽹络使⽤SVD对全连接层进⾏分解,使⽤了两个不同的全连接层并⾏操作,可同时输出分类结果和窗⼝回归结果,减少了计算复杂度,加快检测速度,实现除特征提取阶段外端到端的训练模式,所有的特征都暂存在显存中,不需要额外的磁盘空间。

对Fast R-CNN⽹络输⼊⼀张任意⼤⼩的图⽚,基于selective search⽅法⼤约⽣成2000个候选区域,将图⽚输⼊CNN⽹络,经过若⼲卷积层
与池化层,得到特征图,根据原图中候选区域到特征图映射关系,在特征图中找到每个候选区域对应的特征框,并在RoI池化层中将每个特征框池化到H×W(论⽂中采⽤的是7×7)的尺⼨,H×W⼤⼩的特征框经过全连接层得到固定⼤⼩的特征向量,所得到的特征向量再经由SVD分解实现的不同全连接层并⾏操作,分别得到两个输出向量:⼀个是softmax的分类得分,⼀个是Bounding-box窗⼝回归,利⽤窗⼝得分分别对每⼀类物体进⾏⾮极⼤值抑制剔除重叠的候选区域,最终得到每个类别中回归修正后的得分最⾼的窗⼝。

Fast R-CNN相⽐于R-CNN⽹络训练速度得到了提⾼,准确度也略有提升,但其中采⽤selective search算法提取候选区域,占⽤了模型⼤量时间,(selective search算法候选区域提取需要2~3s,⽽提特征分类只需要0.32s),这还是⽆法满⾜⽬标检测在实时应⽤中的需求,⽽且Fast R-CNN⽹络并没有实现真正意义上的端到端训练模式。

4. Faster R-CNN
针对Fast R-CNN,使⽤selective search⽅法来⽣产候选区域,⾮常费时的问题。

Faster R-CNN模型引⼊了区域⽣成⽹络RPN (Region Proposal Network),直接在特征图中提取候选区域,将特征提取,候选区域提取,Bounding-box窗⼝回归,分类都整合在了⼀个⽹络中,实现了端到端的检测模式,虽然训练阶段仍然要分多步,但是检测阶段⾮常⽅便快捷。

Faster R-CNN可以看成是RPN和Fast R-CNN模型的组合体,RPN的主要思想是通过对应关系把特征图的点映射回原图,在每⼀个对应的原图设计不同的固定尺度窗⼝,根据该窗⼝与真实值的IOU给它正负标签,让它学习⾥⾯是否有⽬标。

对Fast R-CNN⽹络输⼊⼀张任意⼤⼩的图⽚,通过卷积和池化得到特征图。

然后在这个特征图上采⽤⼀个N×N(⽂中是3×3)的卷积核,把每个卷积映射位置编码为⼀个短的(例如256维)特征向量,对于每个位置映射回原图的感受野的中⼼点当成⼀个基准点,然后围绕这个基准点选取k个不同⼤⼩的候选区域。

输出候选区域的分类得分和回归边界。

对于分类层,其输出⼤⼩是2k,表⽰各个候选区域包含物体或者是背景的概率值,⽽回归层输出4k个坐标值,表⽰各个候选区域的位置。

对于每个滑窗位置,这两个全连接层是共享的。

RPN采⽤卷积层来实现:⾸先是⼀个n×n卷积得到低维特征,然后是两个1×1的卷积,分别⽤于分类与回归。

Fast R-CNN抛弃了传统的滑动窗⼝和基于selective search的⽅法⽣成候选区域,直接使⽤RPN⽹络,能极⼤提升候选区域的⽣成速度,使得利⽤CNN在线对⽬标进⾏识别成为可能。

5. 数据集
⽬标检测常⽤的数据集包括PASCAL VOC,ImageNet,MS COCO等数据集,这些数据集⽤于研究者测试算法性能或者⽤于竞赛。

⽬标检测的性能指标既要考虑检测物体位置的准确性也要考虑预测类别的准确性。

PASCAL VOC(The PASCAL Visual Object Classification)是⽬标检测,分类,分割等领域⼀个有名的数据集。

从2005到2012年,共举办了8个挑战赛。

PASCAL VOC包含约10,000张图⽚⽤于训练和验证。

但是,PASCAL VOC数据集仅包含20个类别,因此其被看成⽬标检测问题的⼀个基准数据集。

ImageNet在2013年给出的包含边界框的⽬标检测数据集。

训练数据集包含500,000张图⽚,包含200类物体。

由于数据集太⼤,训练所需计算量很⼤,因⽽很少使⽤。

同时,由于类别数也⽐较多,⽬标检测的难度也相当⼤。

另外⼀个有名的数据集是Microsoft公司建⽴的MS COCO(Common Objects in COntext)数据集。

这个数据集⽤于多种竞赛:图像标题⽣成,⽬标检测,关键点检测和物体分割。

对于⽬标检测任务,COCO共包含80个类别,每年⼤赛的训练和验证数据集包含超过120,000个图⽚,超过40,000个测试图⽚。

测试集最近被划分为两类,⼀类是test-dev数据集⽤于研究者,⼀类是test-challenge数据集⽤于竞赛者。

测试集的标签数据没有公开,以避免在测试集上过拟合。

在COCO 2017 Detection Challenge中,旷视科技团队凭借提出的Light-Head R-CNN 模型夺得冠军(AP为0.526 ),看来还是two-stage算法准确度更胜⼀筹。

6. 性能指标
⽬标检测问题同时是⼀个回归和分类问题。

⾸先,为了评估定位精度,需要计算IoU(Intersection over Union,介于0到1之间),其表⽰预测框与真实框之间的重叠程度。

IoU越⾼,预测框的位置越准确。

因⽽,在评估预测框时,通常会设置⼀个IoU阈值(如0.5),只有当预测框与真实框的IoU值⼤于这个阈值时,该预测框才被认定为真阳性(True Positive, TP),反之就是假阳性(False Positive,FP)。

对于⼆分类,AP(Average Precision)是⼀个重要的指标,这是信息检索中的⼀个概念,基于precision-recall曲线计算出来。

对于⽬标检测,⾸先要单独计算各个类别的AP值,这是评估检测效果的重要指标。

取各个类别的AP的平均值,就得到⼀个综合指标mAP(Mean Average Precision),mAP指标可以避免某些类别⽐较极端化⽽弱化其它类别的性能这个问题。

除了检测准确度,⽬标检测算法的另外⼀个重要性能指标是速度,只有速度快,才能实现实时检测,这对⼀些应⽤场景极其重要。

评估速度的常⽤指标是每秒帧率(Frame Per Second,FPS),即每秒内可以处理的图⽚数量。

当然要对⽐FPS,你需要在同⼀硬件上进⾏。

另外也可以使⽤处理⼀张图⽚所需时间来评估检测速度,时间越短,速度越快。

7. 结果
R-CNN模型在2012 PASCAL VOC数据集的mAP为62.4%(⽐同年的第⼆名⾼出了22%),在2013 ImageNet上的mAP为31.4%(⽐同年的第⼆名⾼出7.1%)。

Fast R-CNN模型在2007 PASCAL VOC测试集上的mAp为70%,在2010 PASCAL VOC测试集上的mAP为68.8%,⽽在2012 PASCAL
VOC测试集上的mAP为68.4%,准确度相⽐R-CNN略有提升,但模型最⼤的贡献在于处理速度的提升。

Faster R-CNN模型在 2007 PASCAL VOC测试集上的mAP为78.8% ,⽽在2012 PASCAL VOC测试集上的mAP为75.9%。

论⽂中还在COCO数据集上进⾏了测试。

Faster R-CNN中的某个模型可以⽐采⽤selective search⽅法的Fast R-CNN模型快34倍。

可以看到,采⽤了RPN之后,⽆论是准确度还是速度,Faster R-CNN模型均有很⼤的提升。

8. 总结
本⽂介绍了R-CNN, Fast R-CNN, Faster R-CNN三种基于深度学习的⽬标检测算法,利⽤深度卷积神经⽹络的⽬标检测算法⼀经提出将PASCAL VOC测试集上的mAP从34.3%直接提升到了66%。

R-CNN提出了Region Proposal+CNN这⼀框架,在PASCAL VOC挑战赛上取得了不错的成绩。

Fast R-CNN在R-CNN的基础上⽤RoI pooling层取代最后⼀层max pooling层,使得输⼊图⽚尺⼨⼤⼩没有限制,并使⽤SVD分解让分类和窗⼝回归在全连接层实现并⾏操作,减少了计算复杂度,加快检测速度。

Faster R-CNN在Fast R-CNN的基础上引⼊RPN,将特征提取,候选区域提取,窗⼝回归,分类都整合在了⼀个⽹络中,真正意义上的实现了端到端的检测模式,进⼀步加快了模型的检测速度。

相关文档
最新文档