目标定位和检测系列(6):Fast R-CNN

论文原文:Fast R-CNN

Fast R-CNN是在R-CNN的基础上借鉴了SPP-net的一些优点改进得到的。整体的框架和R-CNN相似。

摘要

本文提出了R-CNN的一个快速版本(Fast R-CNN)用于目标检测。Fast R-CNN建立在之前工作的基础上,用深层卷积网络对目标区域快速分类。和之前的工作相比,Fast R-CNN采用了一些创新,使得在提高检测精度的同时也提高了训练和测试速度。在很深的VGG-16网络上,Fast R-CNN的训练速度比R-CNN快9倍,测试速度快213倍,而在PASCAL VOC 2012数据集上获得了更高的mAP。相比于SPP-net,Fast R-CNN在VGG-16上的训练速度提高3倍,测试速度提高10倍,准确率更高。Fast R-CNN的代码通过python和C++实现(在Caffe上实现),可以在这里下载:https://github.com/rbgirshick/fast-rcnn

R-CNN的不足

多阶段训练。 R-CNN分为选择候选区域、特征提取及分类和边界框回归三个阶段。
训练时间长,资源占用多。 卷积神经网络需要对多个候选区域提取特征然后保存在本地,当模型很深时,会占用大量的硬盘资源。
检测速度慢。 在测试阶段,对于单张图片,需要提取很多候选区域,然后依次通过卷积神经网络提取特征。当用GPU的时候,速度大约每张图片47秒。

SPP-net虽然解决了R-CNN的一些问题(候选区域在特征图上提取;金字塔池化可以接受任意尺寸的输入),但仍然存在多阶段训练、提取的特征需要保存到本地、微调阶段不能更新卷积层参数等不足。

模型

模型框架

fast rcnn architecture

(1) **生成候选区域。**和之前的R-CNN以及SPP-net一样,用选择性方法生成约2000个建议窗口。

(2) 特征提取。 Fast R-CNN借鉴了SPP-net的方法,直接将整张图片输入到卷积神经网络提取特征。接着Fast R-CNN会把建议窗口映射到输入特征图上。不同的是,Fast R-CNN在卷积层最后采用ROI(Region of Interests)池化来生成固定尺寸的特征图。其实ROI池化可以看作是金字塔池化的一个特例,在金字塔池化中,往往会采用多个level,如1×1,3×3,5×5,而在ROI池化中,直接将输入特征图上的每个ROI区域划分成H×W个子区域(如7×7),每个子区域通过最大池化的方式产生一个特征。这样,最后生成的特征图尺寸就是H×W的。

(3) 目标分类和边界框回归。 将生成的每个特征图(H×W)输入到全连接网络中,全连接网络的输入分成两块(多任务训练,对应两个损失函数),即softmax分类(softmax损失)和边界框回归(Smooth L1损失)。多任务训练的好处是不在需要额外的空间来存放大量的特征图信息,提高了整体的训练效率。

训练

**预训练模型。**目标检测往往需要一个预训练的分类模型来提高减少训练时间。Fast R-CNN先把预训练模型最后一个卷积层后的池化层替换成ROI池化层以产生固定尺寸的特征图。接着将全连接层替换为两个子网络(一个分类网络,一个边界框回归网络)。最后网络输入增加图片的ROI区域列表(映射到特征图上)。这里注意,Fast R-CNN的ROI区域还是通过选择性搜索生成的,这一步还是要在模型训练之前完成,所以其实Fast R-CNN还不算是真正意义上的端到端训练。

微调。微调是为了基于与训练的权重继续更新权重以用于目标检测。这里最重要的就是反向传播,对于卷积层和全连接层,反向传播机制和普通的卷积神经网络一样,我们最关心的是在ROI池化层如何进行反向传播的。这一点其实文中也给出了解释:对于于某一个mini-batch的ROI(用 r r r表示),假设其中的ROI池化(采用最大池化)的输出为 y r j y_{rj} yrj,那么损失 L L L对于 x r j x_{rj} xrj的偏导是所有以 y r j y_{rj} yrj为输出的最大池化的结果的累加。(最大的池化的输出 y y y对输入 x x x的导数为0或1)

测试

在测试阶段,网络的输入是一整张测试图片和大概2000个候选区域,候选区域会直接映射在卷积层输出的特征图上,接着就是对每一个映射到特征图上的候选区域ROI池化得到固定长度的特征并输入到全连接层预测类别和位置。

另外,作者在文中提出,对于目标检测问题,候选区域在全连接层的计算占用了大概整个前向传播总时间的一半。因此,作者利用SVD进行优化计算。结果是牺牲了0.3%的mAP而获得了30%的速度提升。

实验结果

mAP

模型VOC2007 mAP (%)VOC2012 mAP
SPPnet63.1
R-CNN66.062.9
Fast-RCNN66.966.1

时间

result_time

不足

Fast R-CNN已经很好地解决了R-CNN中的很多问题,但还有一点最致命的就是候选框的选取依然是用选择性搜索算法。对于Fast R-CNN,特征分类需要0.32秒左右,而选择性搜索算法则需要2-3秒,这也使得Fast R-CNN还不能满足实时性的检测要求,也不是完全意义上的端到端的训练。不过好在,后面的Faster R-CNN利用RPN网络很好的解决了这个问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值