目标检测领域笔记一:四种算法入门与优缺对比

  • 2019 年 11 月 27 日
  • 笔记

RCNN-> SPP net -> Fast RCNN -> Faster RCNN

本文,简述了从RCNN到Faster RCNN,四种目标检测算法的原理以及算法逐步优化的思路。

R-CNN (Region-based CNN features)

性能:RCNN在VOC2007上的mAP是58%左右。

简述:R-CNN要完成目标定位,其流程主要分为四步:

  • 0:输入图像,
  • 1:利用选择性搜索(Selective Search)这样的区域生成算法提取Region Proposal 提案区域(2000个左右)
  • 2:将每个Region Proposal分别resize(因为训练好的CNN输入是固定的)后(也即下图中的warped region,文章中是归一化为227×227)作为CNN网络的输入。
  • 3:CNN网络提取到经过resize的region proposal的特征送入每一类的SVM分类器,判断是否属于该类。

RCNN的缺点:

  • 1:对于提取的每个Region Proposal,多数都是互相重叠,重叠部分会被多次重复提取feature),都要分别进行CNN前向传播一次(相当于进行了2000吃提特征和SVM分类的过程),计算量较大,。
  • 2:CNN的模型确定的情况下只能接受固定大小的输入(也即wraped region的大小固定)

优化思路:

  • 既然所有的Region Proposal都在输入图像中,与其提取后分别作为CNN的输入,为什么不考虑将带有Region Proposal的原图像直接作为CNN的输入呢?原图像在经过CNN的卷积层得到feature map,原图像中的Region Proposal经过特征映射(也即CNN的卷积下采样等操作)也与feature map中的一块儿区域相对应。

SPP net

简述:SPP net中Region Proposal仍然是在原始输入图像中选取的,不过是通过CNN映射到了feature map中的一片区域。

Spp-net的主要思想是:

  • 1:对卷积层的feature map上的Region Proposal映射区域分别划分成1×1,2×2,4×4的窗口(window),
  • 2:在每个窗口内做max pooling,这样对于一个卷积核产生的feature map,就可以由SPP得到一个(1×1+2×2+4×4)维的特征向量。
  • 论文中采用的网络结构最后一层卷积层共有256个卷积核,所以最后会得到一个固定维度的特征向量(1×1+2×2+4×4)×256维),并用此特征向量作为全连接层的输入后做分类。

相对于R-CNN,SPP-net的优势是:

  • 1:使用原始图像作为CNN网络的输入来计算feature map(R-CNN中是每个Region Proposal都要经历一次CNN计算),大大减少了计算量。
  • 2:R-cnn要resize,易于失真,
  • 3:而SPP-net 不需要,原因是,SPP net中Region Proposal仍然是通过选择性搜索等算法在输入图像中生成的,通过映射的方式得到feature map中对应的区域,并对Region Proposal在feature map中对应区域做空间金字塔池化。通过空间金字塔池化操作,对于任意尺寸的候选区域,经过SPP后都会得到固定长度的特征向量。

SPP-net缺点是:

  • 1: 训练分多个阶段,步骤繁琐(微调网络+训练SVM+训练边框回归器)
  • 2: SPP net在微调网络的时候固定了卷积层,只对全连接层进行微调

fast R-CNN

性能:在VOC2007上的mAP也提高到了68%

其效果是;

  • 1.:比R-CNN和SPP net更高的检测精度(mAP)
  • 2:训练过程是端到端的(Sigle-stage),并使用了一个多任务的损失函数(也即将边框回归直接加入到CNN网络中后,Fast R-CNN网络的损失函数包含了Softmax的损失和Regressor的损失)
  • 3. 训练过程可以更新所有的网络层;

优化处是:

  • Fast R-CNN引入了RoI 池化层(相当于是一层SPP),对于图像中的Region Poposal(也即RoI),通过映射关系(图中的RoI projection)可以得到feature map中Region Proposal对应的区域。
  • RoI Pooling层的操作是将feature map上的RoI区域划分为7×7的窗口,在每个窗口内进行max pooling,然后得到(7×7)×256的输出,最后连接到全连接层得到固定长度的RoI特征向量。
  • 前面得到的RoI特征向量再通过全连接层作为Softmax和Regressor的输入。

小结:

在前面三种目标检测框架中(R-CNN,SPP net,Fast R-CNN),Region Proposal都是通过区域生成的算法(选择性搜索等)在原始输入图像中产生的,不过在SPP net及Fast R-CNN中都是输入图像中的Region Proposal通过映射关系映射到CNN中feature map上再操作的。Fast R-CNN中RoI池化的对象是输入图像中产生的proposal在feature map上的映射区域

Faster R-CNN

性能:Fater-RCNN速度更快了,而且用VGG net作为feature extractor时在VOC2007上mAP能到73%。

优化处:

  • Faster R-CNN相比于Fast R-CNN做的改进则是利用RPN来产生候选区域(也即通过RPN产生的Region Proposal映射到feature map中再作为RoI池化层的输入
  • RPN网络产生Region Proposal的方式是在feature map中采用滑动窗口的方式在每个滑动位置上产生大小及长宽比不同的9个锚点框(其实就是在原始输入图像上)。3×3的滑动窗口对应的每个特征区域同时预测输入图像3种尺度3种长宽比的Region Proposal,这种映射机制称为anchor。
  • 详细点说就是这个RPN由两部分构成:一个卷积层,一对全连接层分别输出分类结果(cls layer)以及 坐标回归结果(reg layer)。卷积层:stride为1,卷积核大小为3*3,输出256张特征图(这一层实际参数为3*3*256*256)。相当于一个sliding window 探索输入特征图的每一个3*3的区域位置。当这个13*13*256特征图输入到RPN网络以后,通过卷积层得到13*13个 256特征图。也就是169个256维的特征向量,每一个对应一个3*3的区域位置,每一个位置提供9个anchor。于是,对于每一个256维的特征,经过一对 全连接网络(也可以是1*1的卷积核的卷积网络),一个输出 前景还是背景的输出2D;另一个输出回归的坐标信息(x,y,w, h,4*9D,但实际上是一个处理过的坐标位置)。于是,在这9个位置附近求到了一个真实的候选位置。

简述:

  • Fater-RCNN中的region proposal netwrok实质是一个Fast-RCNN,这个Fast-RCNN输入的region proposal的是固定的(把一张图片划分成n*n个区域,每个区域给出9个不同ratio和scale的proposal),
  • 输出的是对输入的固定proposal是属于背景还是前景的判断和对齐位置的修正(regression)。
  • Region proposal network的输出再输入第二个Fast-RCNN做更精细的分类和Boundingbox的位置修正

如下图:

五种主流算法对比:

原创文章,转载请注明: 转载自URl-team

本文链接地址: 目标检测领域笔记一:四种算法入门与优缺对比

No related posts.