目标检测(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!
来源:CSDN
作者:Wang_Jiankun
链接:https://blog.csdn.net/Wang_Jiankun/article/details/88757874