目标检测——R-CNN
2019-05-08 本文已影响0人
还浴月
引言
在2014年的过去十年中,目标检测普遍采用SIFT和HOG等,或者等过集成或是一些成功方法的变体来获得进展,检测的准确率提升进展缓慢,2014年加州大学伯克利分校的Ross B. Girshick提出R-CNN算法,其在效果上超越同期的Yann Lecun提出的端到端方法OverFeat算法,其算法结构也成为后续two stage的经典结构。
RCNN流程
方法介绍
R-CNN算法利用选择性搜索(Selective Search)算法评测相邻图像子块的特征相似度,通过对合并后的相似图像区域打分,选择出感兴趣区域的候选框作为样本输入到卷积神经网络结构内部,由网络学习候选框和标定框组成的正负样本特征,形成对应的特征向量,再由支持向量机设计分类器对特征向量分类,最后对候选框以及标定框完成边框回归操作达到目标检测的定位目的。简单概括就是三个模块,区域提取,CNN特征提取,线性SVM分类。
-
区域提取,使用Selective Search方法提取大约2000个候选区域(proposal);
-
特征提取, 通过简单的拉伸形变(Affine image warping),使之成为固定的正方形大小(符合模型输入要求的),文中用的是AlexNet,也就是227*227,从而提取特征向量(4096维);
-
特征分类,使用线性SVM进行分类。
创新点
- 将大型卷积神经网络应用于自下而上的目标检测中;
- 在训练样本不足的情况下,采用一种先针对辅助任务进行有监督的预训练,再进行特定任务的模型微调(fine-turning)的方法,即可提升模型性能。
算法缺点
虽然RCNN相较于传统算法获得了很大程度上的提升,但是还是有一定局限性和缺陷的。
- 重复计算,虽然RCNN不再是进行穷举,但是通过Selective Search方案所提出的候选区域仍然有2000个左右,这些候选区域全部需要输入网络进行提取特征,计算量依旧很大,而且这些候选框之间是有不少重叠区域的,所以是有不少的重复计算的;
- 训练测试过程不简洁,训练的每一步都需要单独操作并进行数据保存,十分繁琐;
- 虽然数据相对传统方法维度降低了,但是速度依旧不是很快,GPU一张图片需要十几秒;
- 固定了输入图像的patch,容易导致目标形变,检测效率下降。