Fast RCNN算法详解
论文背景
论文名称:Fast R-CNN
论文链接:https://arxiv.org/abs/1504.08083
论文日趋:2015.9.27
算法对比
Fast R-CNN是在RCNN的基础上进行了改进,在识别准确率以及速度上都有了很大的提升,尤其是识别速度,采用VGG16神经网络的Fast R-CNN与采用简单的4层卷积层+2层全连接层的RCNN相比,训练时快9倍,测试时快213倍,与SPP-Net比,训练时快3倍,测试时快9倍。
RCNN的缺点:
-
训练过程是一个多阶段进程。首先在提取的候选区域上利用CNN进行微调,然后利用SVM分类器进行目标检测,而不是直接在微调之后加上softmax分类。因为微调需要大量的数据,为了获得更多的样本,对于正、负样本的选择时,阈值设为0.5,只进行了粗略的边界框筛选,而SVM只对特定样本进行检测,样本要求更高,准确率更高。
-
训练过程耗时、耗空间。对于每一个候选区域,都要输入到CNN和SVM中训练,这是非常耗时间的。同时对于每一张图片,都要提取2000个候选区域,这是非常占用内存空间的。
-
测试过程很慢。利用VGG16神经网络在GPU上检测,每张图片要花费47s。
算法背景
由于目标检测的复杂性,目前的使用多阶段线程的算法太耗时且不优雅;
目标检测有两个挑战:
- 大量的候选区域需要提取,需要利用Selective Search提取2000个候选区域;
- 进行粗略定位的候选区域必须进行提炼来得到更准确的定位。
改进方法:
首先将整张图片输入到神经网络中,计算得到一个卷积特征映射(convolution feature map),然后使用从共享的特征映射中提取出来的特征向量来分类每一个候选区域(对于每一个候选区域,映射到特征映射上去,通过一个RoI pooling层,从而进行分类)。候选区域不需要再进入神经网络中进行卷积与池化,节省大量时间。
目标检测流程:
- 输入是一个完整的图片和候选区域;
- 首先利用神经网络(几个卷积层+最大池化层)处理完整的图片得到一个卷积特征映射;
- 接着对于每一个候选区域利用一个Region of interest(RoI)池化层从特征映射中提取一个混合长度的特征向