文章目录
介绍
R-CNN(Region-based Convolutional Neural Network)是目标检测领域的一个重要里程碑,它首次将深度学习技术成功应用于目标检测任务中。R-CNN由Ross Girshick等人于2014年提出,并在PASCAL VOC等多个基准数据集上取得了当时最佳的表现。
R-CNN的工作流程
- 候选区域生成(Selective Search):
- 使用一种名为选择性搜索(Selective Search)的算法从输入图像中提取大约2000个候选区域(Region Proposals)。这些候选区域旨在覆盖图像中所有可能的对象。
- 特征提取:
- 对每个候选区域进行变形以适应固定尺寸(如227x227像素),然后通过一个预训练的卷积神经网络(通常是AlexNet)来提取特征。这一步骤中的CNN权重是在ImageNet数据集上预先训练好的,然后再针对目标检测任务进行微调。
- 分类与回归:
- 提取到的特征向量被送入支持向量机(SVMs)进行分类,确定每个候选区域所属的类别。
- 同时,使用线性回归模型对每个候选区域的边界框进行精修,以提高定位精度。
- 非极大值抑制(Non-Maximum Suppression, NMS):
- 由于同一对象可能会被多个候选区域覆盖,因此最后一步是对重叠度较高的预测结果应用NMS算法,保留置信度最高的那个边界框作为最终输出。
R-CNN的优点
- 开创性:它是首个成功结合深度学习和候选区域生成方法的目标检测框架,为后续研究奠定了基础。
- 高精度:在当时的基准测试中,R-CNN显著提升了目标检测的准确率。
R-CNN的局限性
- 计算效率低:因为需要对每个候选区域单独运行一次完整的CNN前向传播过程,所以R-CNN非常耗时,难以满足实时处理的需求。测试一张图片约53s(CPU)。用SelectiveSearch算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
- 内存占用大:为了存储每个候选区域的特征向量,R-CNN需要大量的内存空间。对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间
- 训练复杂:训练过程中涉及三个独立步骤(CNN微调、SVM训练、边界框回归),导致整个训练流程较为繁琐。
R-CNN的发展
- 随着技术的进步,R-CNN系列不断演进,衍生出了Fast R-CNN、Faster R-CNN等改进版本,它们通过共享卷积特征图、引入区域建议网络等方式解决了原始R-CNN的一些问题,大幅提高了检测速度和效率。例如:
- Fast R-CNN:实现了特征共享,减少了重复计算;直接在全连接层上进行边界框回归和分类,简化了训练流程。
- Faster R-CNN:进一步引入了区域建议网络(RPN),实现了候选区域生成与检测一体化,成为现代两阶段目标检测器的标准架构之一。
R-CNN可以说是利用深度学习进行目标检测的开山之作。作者Ross Girshick多次 在PASCAL VOC的目标检测竞赛中折桂,曾在2010年带领团队获得终身成就奖。
R-CNN详解
RNN框架
算法流程
- RCNN算法流程可分为4个步骤:
-
- 一张图像生成1K~2K个候选区域(使用SelectiveSearch方法)
-
- 对每个候选区域使用深度网络提取特征
-
- 特征送入每一类的SVM分类器,判别是否属于该类
-
- 使用回归器精细修正候选框位置
-
1.候选区域的生成
利用SelectiveSearch算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。
2.深度网络提取特征
将2000候选区域缩放到227x227pixel,接着将候选区域输入事先训练好的AlexNetCNN网络获取4096维的特征得到2000×4096维矩阵。
3.SVM分类器判定
特征送入每一类的SVM分类器,判定类别。将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘,获得2000×20维矩阵表示每个建议框是某个目标类别的得分。分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。
非极大值抑制剔除重叠建议框
IoU(Intersection over Union) 表示(A∩B)/(A∪B)
4.精细修正候选框位置
- 对NMS处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的 boundingbox。
- 如图,黄色框口P表示建议框RegionProposal,绿色窗口G表示实际框Ground Truth,红色窗口Gˆ表示RegionProposal进行回归后的预测窗口,可以用最小二乘法解决的线性回归问题。
- 依旧针对CNN 输出的特征向量进行预测。