在目标检测算法学习过程中,RCNN作为twostage的元老,理解他的网络架构,有助于后续深度学习网络的理解。

这篇文章是我学习和参考B站中名为“霹雳吧啦Wz”的up主的《Faster-RCNN理论合集》记录下来的笔记 链接🔗我放这里了:1.1Faster RCNN理论合集_哔哩哔哩_bilibili

下面就开始正题吧!

R-CNN(Region with CNN feature)

一、RCNN算法流程可以分为4个步骤:
1. 一张图像生成1k~2k个候选区域(使用Selective Search方法)
○ 候选区域的生成:利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。

rcnn 模型原理 rcnn算法_特征向量



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

○ 将2000个候选区域缩放到227227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征得到20004096维矩阵。(每一行表示一个候选区域经过网络提取的特征向量)

rcnn 模型原理 rcnn算法_网络_02




3. 特征送入每一类的SVM分类器,判别是否属于该类

○ 特征送入每一类的SVM分类器,判定类别

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

类中得分最高的一些建议框。 

rcnn 模型原理 rcnn算法_缩放_03

rcnn 模型原理 rcnn算法_rcnn 模型原理_04







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

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

IoU(Intersection over Union):表示

rcnn 模型原理 rcnn算法_缩放_05


剔除重叠框步骤:

rcnn 模型原理 rcnn算法_rcnn 模型原理_06






○ 使用回归精细修正后选框位置:

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

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

rcnn 模型原理 rcnn算法_特征向量_07



                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

  总结:RCNN算法流程(正向传播):

  首先通过SS算法从输入图像上生成1k~2k个候选区域;

  然后针对每个候选区域将它们缩放到相同的尺寸,并且输入到神经网络中得到每一个区域的特征向量;

  然后将这些特征向量输入到SVM分类器,去判断它是否属于哪一类(该类);

  最后使用训练好的回归器去精细修正后选框的位置。

rcnn 模型原理 rcnn算法_特征向量_08

rcnn 模型原理 rcnn算法_网络_09





二、R-CNN存在的问题:

1. 测试速度慢:

测试一张图片53s(CPU)。用Selective Search算法提取后选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余(候选框有很多重叠的部分,计算候选框向量时,每一次都会对重叠部分向量进行计算,也是在faster—rcnn中有所改善的)。

2. 训练速度慢:

过程及其繁琐

3. 训练所需空间大:

对于SVM和bbox回归训练,需要从每个图像中的每个目标后选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间。