
RCNN 两阶段目标检测的开山之作
【论文特点】:
- 速度:本文则(采用Selective Search方法)预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上(采用CNN)提取特征,进行判断。在PASCAL VOC 2012数据集上的性能比之前最好的方法提高了30%.
- 两阶段训练策略:文章提出了一种两阶段训练策略,首先在大型辅助数据集(如ImageNet)上进行有监督的预训练,然后在特定领域数据集(如PASCAL VOC)上进行微调,以适应目标检测任务。
RCNN算法基本流程
RCNN算法分为4个步骤:
- 候选区域生成: 一张图像生成1K~2K个候选区域 (采用Selective Search 方法)
- 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
- 类别判断: 特征送入每一类的SVM 分类器,判别是否属于该类
- 位置精修: 通过非极大值抑制、边界框回归、微调等方式精细修正候选框位置

RCNN主要思想和方法
Selective Search 主要思想:
- 使用一种过分割手段,将图像分割成小区域 (1k~2k 个)
- 查看现有小区域,按照合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置
- 输出所有曾经存在过的区域,所谓候选区域
其中合并规则如下: 优先合并以下四种区域:
- 颜色(颜色直方图)相近的
- 纹理(梯度直方图)相近的
- 合并后总面积小的: 保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域
- 合并后,总面积在其BBOX中所占比例大的: 保证合并后形状规则。
有监督预训练与无监督预训练:
(1)无监督预训练(Unsupervised pre-training)
预训练阶段的样本不需要人工标注数据,所以就叫做无监督预训练。
(2)有监督预训练(Supervised pre-training)
所谓的有监督预训练也可以把它称之为迁移学习。比如你已经有一大堆标注好的人脸年龄分类的图片数据,训练了一个CNN,用于人脸的年龄识别。然后当你遇到新的项目任务时:人脸性别识别,那么这个时候你可以利用已经训练好的年龄识别CNN模型,去掉最后一层,然后其它的网络层参数就直接复制过来,继续进行训练,让它输出性别。这就是所谓的迁移学习,说的简单一点就是把一个任务训练好的参数,拿到另外一个任务,作为神经网络的初始参数值,这样相比于你直接采用随机初始化的方法,精度可以有很大的提高。
重叠度(IOU):
IoU(Intersection over Union)是一种评估目标检测和实例分割算法性能的常用指标.它是预测边界框(预测的区域)与真实边界框(真实目标的区域)之间的重叠程度的度量。物体检测需要定位出物体的bounding box,就像下面的图片一样,我们不仅要定位出车辆的bounding box 我们还要识别出bounding box 里面的物体就是车辆。

因此出现了IOU,它定义了两个bounding box的重叠度,如下图所示:

就是矩形框A、B的重叠面积占A、B并集的面积比例。
非极大值抑制(NMS):
非极大值抑制(NMS)顾名思义就是抑制不是极大值的元素,搜索局部的极大值。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小.NMS的主要作用是去除多余的检测框,只保留最佳的检测结果,从而提高检测的准确性和效率。
NMS的实现通常遵循以下步骤:
- 设置IoU阈值:确定一个IoU阈值,用于判断检测框之间的重叠程度。
- 得分排序:根据检测框的置信度得分进行降序排序。
- 迭代抑制:从得分最高的检测框开始,对于每个检测框,如果它与其他检测框的IoU超过阈值,则抑制那些得分较低的检测框。
- 选择最佳检测框:在每个类别中,选择剩余的、未被抑制的检测框作为最终的检测结果。
VOC物体检测任务:
相当于一个竞赛,里面包含了20个物体类别:PASCAL VOC2011 Example Images 还有一个背景,总共就相当于21个类别,因此一会设计fine-tuning CNN的时候,我们softmax分类输出层为21个神经元。
CNN特征提取实现
- 算法实现
- 选用Alexnet的5个卷积层和2个全连接层
- 使用有监督预训练
- fine-tuning训练
SVM训练、测试:
这是一个二分类问题,我么假设我们要检测车辆。我们知道只有当bounding box把整量车都包含在内,那才叫正样本;如果bounding box 没有包含到车辆,那么我们就可以把它当做负样本。但问题是当我们的检测窗口只有部分包含物体,那该怎么定义正负样本呢?作者测试了IOU阈值各种方案数值0,0.1,0.2,0.3,0.4,0.5。最后通过训练发现,如果选择IOU阈值为0.3效果最好(选择为0精度下降了4个百分点,选择0.5精度下降了5个百分点),即当重叠度小于0.3的时候,我们就把它标注为负样本。一旦CNN f7层特征被提取出来,那么我们将为每个物体类训练一个svm分类器。
位置精修: 目标检测问题的衡量标准是重叠面积:许多看似准确的检测结果,往往因为候选框不够准确,重叠面积很小。故需要一个位置精修步骤。 回归器:对每一类目标,使用一个线性脊回归器进行精修。正则项λ=10000。 输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。 训练样本:判定为本类的候选框中和真值重叠面积大于0.6的候选框。