浅谈RCNN

RCNN算法分为4个步骤:

  • 一张图像生成大约2千个候选区域
  • 对每个候选区域,使用深度网络提取特征
  • 特征分类(SVM);留下包含物体的regions,从而作为bounding boxes
  • bounding box筛选,并使用回归器修正位置
    浅谈RCNN_第1张图片

1.生成候选区域

使用Selective Search生成图像的候选区域。
将图像过分割,再将相似(颜色、文理等相似)的区域组合,直到组合成完整图像为止。整个过程中产生的区域都作为候选区域。生成两千个左右的候选区域。


2.特征提取

把候选区域归一化成同一尺寸227×227送入特征提取神经网络,输出4096维候选框特征。
神经网络采用AlexNet,略作简化:
浅谈RCNN_第2张图片

2.1 Pre-train:

此网络提取的特征为4096维,之后送入一个4096->1000的全连接(fc)层进行分类。
学习率0.01。
使用ILVCR 2012的全部数据进行训练,输入一张图片,输出1000维的类别标号。

2.2 Fine-tune:

同样使用上述网络,最后一层换成4096->21(20个类+背景)的全连接网络
学习率0.001,每一个batch包含32个正样本(属于20类)和96个背景。
使用PASCAL VOC 2007的训练集,输入一张图片,输出21维的类别标号,表示20类+背景。候选框和当前图像上标定框重叠比例大于0.5,则认为属于该类别,否则认为候选框是背景。

3.特征分类

分类器
对于每一类,使用二值SVM分类器判断。输入4096维特征,输出是否属于该类。
由于负样本很多,使用hard negative mining方法(即只选取像正样本的负样本作为负样本)。
训练时: 正负样本标定:IOU>0.3则为正样本。
测试时: SVM输出为正的regions作为待筛选的bounding boxes。

4.bounding box筛选并修正位置

候选框的位置精确程度大大影响了最终识别结果。


bounding box筛选
使用极大值抑制(NMS)。筛选得到每一类对应的最优的bounding box。
回归器
对每一类目标,使用一个线性脊回归器进行精修。正则项λ=10000。
输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。
训练样本
和真值重叠比例大于0.6的候选框。


RCNN网络的缺点

缺点:
1.训练需要几个阶段
2.SS得到的regions是不同尺寸的。不同尺寸的regions需要经过,裁剪及放缩到相同的尺寸,这样会使一些内容丢失。
3.每个region的都需要经过模型去提取,并存放至磁盘;

你可能感兴趣的:(神经网络,深度学习,目标检测)