Fast R-CNN(论文部分翻译+一些总结)

论文是《Fast R-CNN》

Fast R-CNN与R-CNN相比,提升了训练和测试时的速度,并且也提升了检测的精度。它训练的是VGG16网络(在R-CNN那篇论文中,作者也用过这个16层的深度网络来实现R-CNN,以此来观察在不同网络架构上R-CNN的检测性能的不同)。这篇论文中提出了一种单阶段训练算法,该算法可以共同学习分类候选目标和优化其空间定位。在运行时,对一张图片进行目标检测只需0.3s(包括处理候选目标的时间)。


R-CNN的不足之处

1.训练分为多个阶段。R-CNN首先使用log损失函数在候选目标(候选区域)上对卷积网络进行微调。然后要为每个特征训练一个SVM,这些SVM和目标检测器类似,替换了通过微调学到的softmax分类器。最后,在训练的第三个阶段,要学习边界框回归,精确定位。
2.训练过程在空间和时间上的花费都是巨大的。对SVM和边界框回归训练来说,每张图像的每个候选目标都要提取特征,并且都要写入硬盘。这些特征需要数百个千兆字节的存储空间。
3.目标检测的速度太慢。在测试时,要从每个测试图像中的每个候选目标中提取特征。如果用VGG16网络,每个图象的目标检测要花费47s(在一个GPU上)。

R-CNN速度很慢是因为它对每个候选目标都要进行卷积操作,并且没有共享计算。


本文的主要贡献

1.与R-CNN和SPPnet相比具有更高的检测质量
2.训练只有一个阶段,使用了多任务损失函数。
3.训练可以更新网络中的所有层
4.在提取特征时不必用到硬盘存储


Fast R-CNN的架构

在这里插入图片描述
上图说明了Fast R-CNN的架构。Fast R-CNN的输入是一整个图像和一组候选目标。网络首先使用几个卷积(conv)和最大池化层处理整个图像,以生成conv feature map。将候选目标映射到conv feature map上所对应的矩形窗口称为RoI(regions of interest)。对于RoI,在经过RoI池化层的处理后变成固定大小的feature map,然后通过全连接层(FC)从这些feature map中提取特征向量。每个特征向量都被馈送到一系列全连接层(fc)中,这些层最终分支为两个同级输出层:一个输出层在K个目标类加上一个“背景”类上产生softmax概率估计,而另一层为K个目标类中的每个类输出4个真实值,这4个值表示该目标类经过精确定位后的边界框的位置。这个架构使用一个多任务损失函数进行端到端的训练。


Fast R-CNN的具体设计

1.RoI池化层

RoI池化层的作用是将RoI对应的feature map经过最大池化后转换成一个较小的feature map,这个较小的feature map具有固定的空间范围HxW(例如7x7),H和W是层超参数,独立于任何特定的RoI。本篇论文将RoI定义为conv feature map中的矩形窗口,conv feature map是一整个图像经过卷积和池化操作后生成的,RoI就是候选目标在conv feature map中的映射,这个映射的矩形窗口对应了一部分feature map。每个RoI由一个四元组(r,c,h,w)定义,该四元组指定其左上角(r,c)以及其高度和宽度(h,w)。
RoI池化层的工作方式是,将h × w 的RoI窗口划分为H × W个子窗口,每个子窗口的大小约为h/H ×w/W,然后在每个子窗口上进行最大池化操作,即将每个子窗口中的最大值作为输出,最后得到一个H × W的feature map。

2.从预训练的网络初始化Fast R-CNN

论文使用三个经过预训练的ImageNet网络进行实验,每个网络具有五个最大池化层以及五到十三个卷积层。当预训练的网络初始化Fast R-CNN网络时,它将经历以下三个转换:
1.用RoI池化层替代最后一个最大池化层。RoI池化层输出的特征图大小为H × W(在VGG16中,H=W=7),与网络的第一个全连接层兼容。
2.用两个同级输出层(K + 1类上的全连接层和softmax,以及特定类的边界框回归)替代网络最后一个全连接层和softmax。
3.网络被修改为可以接受两种数据的输入:一系列图像以及在这些图像上的一系列候选目标。

3.分层采样(为了提高训练效率)

在SPPnet和R-CNN中,当每个训练样本(比如RoI)来自于不同的图像时,向后传播会变得非常的低效。这是因为每个RoI可能会有很大的接受野,而这个接受野经常会把一整个图像都包括其中。因为向前传播必须处理这一整个接受野,因此训练的输入是非常大的(经常是一整个图像)。
论文提出了一种更有效率的训练方法——利用特征共享来进行训练。在Fast R-CNN中,SGD(stochastic gradient descent) mini-batches 被分层采样,首先对N个图像进行采样,然后对每个图象的中的R/N个RoI进行采样。**最重要的是,来自同一图像的RoI在向前和向后传播过程中共享计算和内存。**这种方法可能会造成一个问题——由于来自同一图像的RoI是互相关联的,因此可能会导致训练收敛缓慢。但在实际的训练过程中,当N=2,R=128时,SGD迭代比R-CNN更少。

4.微调阶段(也是为了提高训练效率)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值