目标检测(R-CNN、Fast R-CNN、Fater R-CNN)

十年热恋 提交于 2019-11-28 14:05:35

目标检测(R-CNN、Fast R-CNN、Faster R-CNN)


1、目标检测(object detection)

图像识别是输入一张图像,输出该图像对应的类别。目标检测的输入同样是一张国像,但输出不单单是图像的类别,而是该图像中所含的所有目标物体以及它们的位置,通常使用矩形框来标识物体的位置。
大部分的目标检测方法流程是:生成区域候选框,对这些区域框提取特征(SIFT 特征 、HOG 特征、CNN),使用图像识别方法分类(SVM、CNN),得到所有分类成功的区域后,通过非极大值抑制( Non-maximum suppression )输出结果。


2、候选框(bounding boxes)

区域候选框的生成主要有两种方法,一种是穷举法、一种是选择性搜索。

  • 穷举法:也叫滑窗法。使用不同大小的窗口在图片上从左到右,从上到下滑动,每次滑动就是一个候选框,由于是全局搜索而且要考虑窗口的长宽比,计算量大、效率低下。
  • 选择搜索(Selective Search):首先,使用图像分割(边缘等特性)算法,分割出许多小区域;然后,根据这些小区域之间相似性(颜色、纹理等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做 bounding boxes (外切矩形)就生成了候选框。

3、R-CNN:Region-CNN

R-CNN 算法原理:

  • Selective Search 生成候选框
  • 候选框区域缩放到统一大小,使用 CNN 对每个候选框提取特征
  • 提取出特征后使用 SVM 进行分类
  • 通过非极大值抑制输出结果

R-CNN 训练步骤:

  • 在数据集上训练CNN。R-CNN 论文中使用的 CNN 网络是AlexNet,数据集为ImageNet 。
  • 在目标检测的数据集上,对训练好的 CNN 做微调 。
  • 用 Selective Search 搜索候选区域,统一使用微调后的 CNN 对这些区域提取特征,并将提取到的特征存储起来。
  • 使用存储起来的特征,训练SVM 分类器。

R-CNN 训练步骤性能:
VOC 2007 数据集上,传统方法最高的平均精确度mAP ( mean Average Precision )为40%左右,而R-CNN 的mAP 达到了58.5%.
R-CNN 的缺点是计算量太大。在一张图片中,通过Selective Search 得到的有效区域往往在1000 个以上,这意昧着要重复计算1000 多次神经网络,非常耗时。另外,在训练、阶段,还需要把所高特征保存起来,再通过SVM进行训练,这也是非常耗时且麻烦的


4、Fast R-CNN

SPPNet:
SPPNet 的英文全称是Spatial Pyramid Pooling Convolutional Networks 中文是“空间金字塔池化卷积网络” 。
SPPNet 将 CNN 的输入从固定尺寸改进为任意尺寸。SPPNet 在普通的 CNN 结构中加入了 ROI 池化层( ROI Pooling ),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
在这里插入图片描述
ROI 池化层:对输入的宽w、高h、通道数c的卷积特征进行划分。分别划分为4×4、2×2、1×1的网格,对每个网格中的每个通道进行最大值池化(取最大值),得到的特征是16c+4c+c = 21c 维的特征。很显然,这个输出特征的长度与w 、h 两个值是无关的,因此ROI 池化层可以把任意宽度、高度的卷积特征转换为固定长度的向量。

SPPNet 原理:先对图像进行一遍卷积计算,得到整个图像的卷积特征。接着, 对于原始图像中的各种候选框,只需要在卷积特征中找到对应的位置框,再使用 ROI 池化层对位置框中的卷积提取特征,就可以完成特征提取工作。在提取特征后,使用了SVM 进行分类。

R-CNN 要对每个区域(有重叠)计算卷积,而SPPNet 只需要对整张图片计算一次,因此 SPPNet 的效率比 R-CNN 高得多。

Fast R-CNN:
在SPPNet 中,实际上特征提取和区域分类两个步骤还是分离的,还是使用传统的 SVM 作为分类器。Fast R-CNN 相比 SPPNet 更进一步,不再使用 SVM 作为分类器,而是使用神经网络进行分类,这样就可以同时训练特征提取网络和分类网络,从而取得比SPPNet 更高的准确度。
在这里插入图片描述
Fast R-CNN 使用全连接层进行分类。全连接层有两个输出,一个输出负责分类(Softmax),另一个输出负责框回归(bbox regressor)。对于分类,假设要在图像中检测 K 类物体,那么最终的输出应该是 K+ I 个数(一类“背景类”),每个数都代表该区域为某个类别的概率。对于框回归,框回归是对原始的检测框进行某种程度的校准。因为使用 Selective Search 获得的框可能存在一定偏差。框的四个参数为(x,y,w,h),其中(x,y)表示框左上角的坐标位置,(w,h)表示框的宽度和高度。


5、Faster R-CNN

RPN( Region Proposal Network )网络:
RPN 需要先使用一个CNN 网络对原始图片提取特征,使图片变为 W×H×C 的网络。网络中的每一个格子负责该位置上 k 个不同的 anchor 是否存在一个物体。
在这里插入图片描述
使用一个 3x3 的滑动窗口,将每个位置转为一个统一维数的特征,这个恃征对应了两部分的输出。一部分表示该位置的 anchor 为物体的概率,总输出长度为2xk(一个 anchor 对应两个输出,是物体的概率+不是物体的概率)。另一部分为框回归,一个 anchor 对应4 个框回归参数,因此框回归部分的总输出的长度为4xk。
在这里插入图片描述

Faster R-CNN:
Faster R-CNN 使用 RPN 取代了 Selective Search 生成候选框后,剩下的网络结构和 Fast R -CNN 中的结构一模一样。在训练过程中,需要训练两个网络,一个是RPN 网络,一个是在得到框之后的分类网络。通常的做法是交替训练,即在一个 batch 内,先训练RPN 网络一次,再训练分类网络一次。


6、总结

项目 R-CNN Fast R-CNN Faster R-CNN
提取候选框 Selective Search Selective Search RPN网络
提取特征 CNN CNN+ROI池化 CNN+ROI池化
分类 SVM 全连接 全连接

从R-CNN,到Fast R-CNN ,再到Faster R-CNN ,不仅检测速度越来越快,而且检测的精确度也在不断提升。在出现R-CNN方法前,VOC 2007数据集上传统方法所能达到的最高平均精确度( mAP )为40% 左右, R-CNN 将该值提高到了58.5%,Fast R-CNN 为70%,Faster R-CNN 又将该值提高到了78.8% 。这几种方法既一脉相承,又不断改进,不断的 CNN 化。


GOOD LUCK!


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!