目标检测入门系列手册三:Fast R-CNN 训练教程

目标检测入门系列手册三:Fast R-CNN 训练教程

Fast R-CNN

针对R-CNN 的3 个主要问题,我们思考一下是否有更好的解决方案。

首先是速度,2000 个ROI 的CNN 特征提取占用了大量的时间,是否可以用更好的方法,比如共享卷积层来同时处理所有2000 个ROI ?

其次是CNN 的特征不会因SVM 和回归的调整而更新。

R-CNN 的操作流程比较复杂,能否有更好的方式使得训练过程成为端到端的?

接下来我们将介绍Firshick 等人于2015 年提出的Fast R-CNN[2],它非常巧妙地解决了R-CNN 主要的几个问题。

目标检测入门系列手册三:Fast R-CNN 训练教程

目标检测入门系列手册三:Fast R-CNN 训练教程

Fast R-CNN 的训练和预测过程如图2-7 所示,具体训练步骤如下:

(1)将整张图片和ROI 直接输入到全卷积的CNN 中,得到特征层和对应在特征层上的ROI(特征层的ROI 信息可用其几何位置加卷积坐标公式推导得出)。

(2)与R-CNN 类似, 为了使不同尺寸的ROI 可以统一进行训练,Fast R-CNN 将每块候选区域通过池化的方法调整到指定的M×N,所以此时特征层上调整后的ROI 作为分类器的训练数据。与R-CNN 不同的是,这里将分类和回归任务合并到一起进行训练,这样就将整个流程串了起来。Fast R-CNN 的池化示意图如图2-8 所示,即先将整张图通过卷积神经网络,然后在特征层上找到ROI 对应的位置并取出,对取出的ROI 进行池化(此处的池化方法有很多)。池化后,所有2000个M×N 个训练数据通过全连接层并分别经过2 个head:softmax 分类以及L2 回归,最终的损失函数为分类和回归的损失函数的加权和。通过这样的方式就实现了端到端的训练。

目标检测入门系列手册三:Fast R-CNN 训练教程

Fast R-CNN 极大地提升了目标检测训练和预测的速度,如图2-9 所示。从图2-9 中我们可以看出,Fast R-CNN 把训练时长从R-CNN 的84 小时下降到了8.75 小时,每张图片平均总预测时长从49 秒降到2.3 秒。

目标检测入门系列手册三:Fast R-CNN 训练教程

从图2-9 中我们还可以看出,在Fast R-CNN 预测的这2.3 秒中,真正的预测过程仅仅占用0.32 秒,而Region proposal 占用了绝大多数的时间。