一、 R-CNN的问题
R-CNN的横空出世将深度卷积神经网络带进了目标检测领域。虽然R-CNN在此方面取得了不错的成绩,但也有些问题亟需解决。
- 训练和测试速度慢:由于R-CNN采取的建议算法提议了2K个候选框,每个候选框都要送入CNN中进行卷积计算,从而产生大量的计算重叠。
- 层级结构复杂,训练起来步骤较多。训练一个R-CNN网络包括:训练CNN,微调CNN,训练SVM,训练bbox regression。
- 训练空间开销较大。在训练SVM和bbox regression的过程中要保存大量的特征向量作为训练样本,空间开销较大。
二、 解决方案
针对上述问题,Fast-RCNN的作者创造性的提出一些解决方案,在大大加快训练和测试的速度之外,准确性也得到了提升。
-
针对问题1,R-CNN是先提议候选框,将候选框裁剪后送至CNN提取特征。Fast-RCNN充分利用卷积操作的共享性,将图片先送至CNN提取特征,在这个特征上加入位置信息。
-
针对问题2和问题3,R-CNN将用于分类的SVM和用于定位的bbox regression二者合并在一个网络之中,将特征送至两个并行的全连接层(multi-task),其中一个后接SoftMax用来预测类别,另一个后接bbox regression来定位边界框。同时作者提出了ROI-pooling的操作,使得从卷积层提取出来特征建议框的尺寸得以统一,以便传入后序的全连接层。这个操作使得