1.R-CNN简介
R-CNN(Region with CNN feature)
文章的全称为:Rich feature hierarchies for accurate object detection andsemantic segmentation,原文链接
翻译过来就是针对高准确度的目标检测与语义分割的多特征层级,通俗地来讲就是一个用来做目标检测和语义分割的神经网络。
这篇论文发布时间是 2014 年,它具有很多比较重要的意义。
- 在 Pascal VOC 2012 的数据集上,能够将目标检测的验证指标 mAP 提升到 53.3%,这相对于之前最好的结果提升了整整 30%.
- 这篇论文证明了可以讲神经网络应用在自底向上的候选区域,这样就可以进行目标分类和目标定位。
- 这篇论文也带来了一个观点,那就是当你缺乏大量的标注数据时,比较好的可行的手段是,进行神经网络的迁移学习,采用在其他大型数据集训练过后的神经网络,然后在小规模特定的数据集中进行 fine-tune 微调。
RCNN 算法流程可分为4个步骤
- 一张图像生成1K~2K个 候选区域(使用Selective Search方法)
- 对每个候选区域,使用深度网络 提取特征
- 特征送入每一类的 SVM 分类器,判别是否属于该类
- 使用回归器精细修正候选框位置
2.R-CNN处理过程
1)候选区域的生成
能够生成候选区域的方法有很多,比如:
- objectness
- selective search
- category-independen object proposals
- constrained parametric min-cuts(CPMC)
- multi-scale combinatorial grouping
- Ciresan
其中,C-RNN采用是Selective Search算法(ss算法)。
利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。
2)对每个候选区域,使用深度网络提取特征
将由第一步ss算法框选的2000个候选区域缩放到相同的尺寸227x227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征得到2000×4096维矩阵。该矩阵的每一行代表了一个候选框的通过卷积网络后提取到的特征信息。
3)特征信息送入每一类的 SVM 分类器,判定类别
将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘,获得2000×20维矩阵表示每个建议框是某个目标类别的得分。
SVM的权值矩阵中的每一列代表了一类的权值;而相乘后所得到的矩阵的每一行,代表了一个候选框的20个类别的概率,2000表示一共有2000个候选框。
比如:第一行的第一个值代表了该第一个候选框是猫的概率,第二个值表示该候选框是狗的概率。而第二行的第一个值就代表了第二个候选框是猫的概率。
然后分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。
非极大值抑制剔除重叠建议框
IoU(Intersection over Union)表示(A∩B)/(A∪B),也就是两个区域的交并比。
具体操作是:
对于每一类中,有2000个候选框,其中我们寻找其中得分最高的目标,然后计算其他目标与该目标的iou值,然后删除所有iou值大于给定阈值的目标。因为如果iou值大于给定阈值,就说明了这两者其中是可以被看作是同一个目标,所以可以选择得分高的,然后删除其他得分低的。如此反复循环,不断地减少候选框的个数。
如此操作后,希望得到的是一个最完美的边界框。
以上的操作,是对2000x20维的概率矩阵的每一列,都做刚刚所说的非极大值抑制处理。因为每一列是对于同一个类别的概率。
4)使用回归器精细修正候选框位置
通过ss算法得到的目标候选框其实位置不算是那么的准确,所以需要通过回归器修正位置。
对NMS处理后剩余的建议框进一步筛选。具体做法是,保留与真实标准的边界框有相交的,并且iou要大于某一个阈值,不满足就要将其删除掉。
接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。这是针对卷积神经网络输出的特征向量进行预测的。利用每一个边界框4096维的特征信息来进行预测的。
通过回归分类器之后,会得到四个参数,分别得到目标建议框中心的x偏移量与y偏移量,以及边界框的高度缩放因子与宽度缩放因子。一共四个值,通过这四个值来对建议框进行调整,得到一个红色的建议框。
如图,黄色框口P表示通过ss算法得到的候选建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗口表示Region Proposal进行回归后的预测窗口,可以用最小二乘法解决的线性回归问题。
R-CNN框架
3.R-CNN存在的问题
- 测试速度慢:
测试一张图片约53s(CPU)。用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。因为得到的这些候选框会有很多重叠的部分。
- 训练速度慢:
过程及其繁琐。不仅要训练图像分类网络,还有训练SVM分类器,还有训练回归器,这几个模型的训练都是独立的,所以费时费力。
- 训练所需空间大:
对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间。
参考资料: