RCNN算法

RCNN算法流程可分4个步骤:
  • 一张图像生成1k~2k个候选区域(使用Selective Search方法)。
  • 对每个候选区域,使用深度网络提取特征。
  • 特征送入每一类的SVM分类器,判别是否属于该类。
  • 使用回归器精细修正候选框位置。
1. 候选区域的生成

利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。

RCNN模块 rcnn步骤_RCNN模块

2. 对每个候选区域,使用深度网络提取特征

将2000候选区域缩放到227×227(pixel), 接着将候选区域输入事先训练好的AlexNet CNN网络,获取4096维的特征得到2000×4096维矩阵。

RCNN模块 rcnn步骤_缩放_02

3. 特征送入每一类的SVM分类器,判别类别

将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘,获得2000×20维矩阵表示每个建议框是某个目标类别的得分。分别对上述2000×20维举证中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。

RCNN模块 rcnn步骤_缩放_03


RCNN模块 rcnn步骤_深度学习_04

4. 使用回归器精细修正候选框位置

NMS处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box

如图,黄色框口P表示建议框Region Proposal,绿色窗口表示实际Ground Truth, 红色窗口G表示Region Proposal进行回归后的预测窗口,可以用最小二乘法解决的线性回归问题。

RCNN模块 rcnn步骤_RCNN模块_05

二 非极大抑制剔除重叠建议框

RCNN模块 rcnn步骤_缩放_06

RCNN算法框架小结

RCNN模块 rcnn步骤_深度学习_07

RCNN存在的问题
  1. 测试速度慢:测试一张图片约53s(CPU)。用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
  2. 训练速度慢:过程及其繁琐
  3. 训练所需空间大:对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC2007训练集上的5K图像上提取的特征需要数百GB的存储空间。

Fast RCNN算法

Fast RCNN算法流程可以分为3个步骤
  • 一张图像生成1K~2k个候选区域(使用Selective Search方法)
  • 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵(整副图像
  • 将每个特征矩阵通过ROI pooling 层缩放到7×7大小的特征图,接着将特征图展平通过一系列全连接层得到预期结果。
    Region of Interest


Fast RCNN分类器

RCNN模块 rcnn步骤_全连接_08

Fast RCNN边界框回归器

RCNN模块 rcnn步骤_RCNN模块_09


RCNN模块 rcnn步骤_缩放_10

边界框回归损失

RCNN模块 rcnn步骤_全连接_11


RCNN模块 rcnn步骤_深度网络_12

边界框回归损失

RCNN模块 rcnn步骤_全连接_13

Fast RCNN算法小结

RCNN模块 rcnn步骤_RCNN模块_14

Faster RCNNN算法
Faster RCNN算法流程可分为3个步骤:
  • 将图像输入网络得到相应的特征图
  • 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI pooling层缩放到7×7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。
RPN网络结构

RCNN模块 rcnn步骤_缩放_15


通过特征图上的坐标(x,y)找到对应原图上的坐标(x, y)。

RCNN模块 rcnn步骤_深度网络_16


RCNN模块 rcnn步骤_缩放_17


RCNN模块 rcnn步骤_全连接_18


anchor= image(pixel) / feature map × 9

RCNN模块 rcnn步骤_缩放_19


RCNN模块 rcnn步骤_深度学习_20


RCNN模块 rcnn步骤_缩放_21


RCNN模块 rcnn步骤_缩放_22


RCNN模块 rcnn步骤_RCNN模块_23


RCNN模块 rcnn步骤_深度学习_24


Faster RCNN算法总结:

RCNN模块 rcnn步骤_全连接_25