文章目录
- Abstract
- Introduction
- R-CNN and SPPnet
- 训练是一个多阶段的流水线
- 训练在空间和时间上都很昂贵
- 目标检测速度慢
- Contributions
- Fast R-CNN architecture and training
- The RoI pooling layer
- Initializing from pre-trained networks
- Fine-tuning for detection
- Multi-task loss
- Mini-batch sampling
- Back-propagation through RoI pooling layers
- SGD hyper-parameters
- Scale invariance
- Fast R-CNN detection
- Truncated SVD for faster detection
- Main results
- Conclusion
论文链接
源代码
Abstract
本文提出了一种快速区域卷积网络(Fast R-CNN)的目标检测方法。Fast R-CNN基于以前的工作(R-CNN,SPP-net),使用深度卷积网络有效地对对象提案进行分类。与以前的工作相比,Fast R-CNN采用了几项创新来提高训练和测试速度,同时也提高了检测精度。
Introduction
由于检测需要精确地定位物体,这就产生了两个主要的挑战:
首先,必须处理许多候选对象位置(通常称为“proposals”)
其次,这些候选点只能提供粗略的定位,必须加以改进才能实现精确定位
这些问题的解决方案通常会牺牲速度、准确性或简单性
在本文中,我们简化了最先进的基于convnet的目标检测器的训练过程[9,11],提出了一种单阶段训练算法,该算法联合学习对目标建议进行分类并细化其空间位置
R-CNN and SPPnet
基于区域的卷积网络(R-CNN[9]通过使用深度卷积神经网络对目标提案进行分类,实现了优异的目标检测精度。然而,R-CNN也有明显的缺点
训练是一个多阶段的流水线
训练在空间和时间上都很昂贵
目标检测速度慢
Contributions
我们提出了一种新的训练算法,该算法修正了R-CNN和SPPnet的缺点,同时提高了它们的速度和准确性。我们称这种方法为快速R-CNN,因为它的训练和测试速度相对较快。快速R- CNN方法有几个优点:
- 检测质量(mAP)高于R-CNN、SPPnet
- 训练是单阶段的,使用多任务损失
3.训练可以更新所有的网络层 - 特征缓存不需要磁盘存储
Fast R-CNN architecture and training
Fast R-CNN网络将一整张图像和一组目标建议作为输入。该网络首先用几个卷积(conv)和最大池化层来处理整个图像,以产生一个conv特征图。然后,对于每个目标候选框,感兴趣区域池化层从特征映射中提取固定长度的特征向量
输入图像和多个感兴趣区域(RoI)被输入到一个全卷积网络中。每个RoI被汇集成一个固定大小的特征映射,然后通过全连接层(fc)映射到一个特征向量。该网络每个RoI有两个输出向量:softmax概率和每个类的边界盒回归偏移量。该体系结构是端到端训练的,具有多任务损失
The RoI pooling layer
RoI池化层使用最大池化将任何有效感兴趣区域内的特征转换为具有固定空间范围H ×W(例如7×7)的小特征图,其中H和W是独立于任何特定RoI的层超参数
RoI最大池化的工作原理是将h × w RoI窗口划分为大小近似为h/ H × w/ W的子窗口的H × W网格,然后将每个子窗口中的值最大池化到相应的输出网格单元中(RoI层只是SPPnets[11]中使用的空间金字塔池层的特殊情况,其中只有一个金字塔层)
Initializing from pre-trained networks
Fine-tuning for detection
用反向传播训练所有网络权重是Fast R-CNN的一项重要能力
让我们来解释为什么SPPnet无法更新空间金字塔池层以下的权重
根本原因是,当每个训练样本(即RoI)来自不同的图像时,通过SPP层的反向传播效率非常低,这正是R-CNN和SPPnet网络的训练方式,这种低效率源于这样一个事实,即每个RoI可能有一个非常大的接受域,通常跨越整个输入图像。由于前向传递必须处理整个接受野,所以训练输入很大(通常是整个图像)
我们提出了一种更有效的训练方法,利用训练过程中的特征共享。在Fast R- CNN训练中,随机梯度下降(SGD)小批量分层采样,首先通过采样N个图像,然后从每个图像中采样R/N RoI
关键的是,来自同一图像的RoI在向前和向后传递中共享计算和内存,使N变小减少小批量计算
除了分层采样,Fast R-CNN使用了一个精简的训练过程,其中一个微调阶段联合优化softmax分类器和边界盒回归器,而不是在三个单独的阶段训练softmax分类器、svm和回归器
Multi-task loss
每个训练RoI都被标记为一个真值类u和一个真值边界盒回归目标v,我们在每个标记的RoI上使用一个多任务损失L来联合训练分类和边界盒回归:
其中L cls (p,u) = - logp u为真类u的对数损失
对于边界盒回归,我们使用损失:
Mini-batch sampling
在微调期间,每个SGD迷你批都是由N = 2个随机选择的图像构建的(作为通常的做法,我们实际上对数据集的排列进行了迭代)。我们使用大小为R = 128的小批量,从每张图像中采样64个RoI
我们从具有交集/联合(IoU)重叠且ground- truth bounding box至少为0.5的目标提案中提取25%的roi。这些roi包括用前景对象类标记的示例,即u≥1。剩余的roi是从在区间[0.1,0.5)内具有最大iou的目标提案中采样的
Back-propagation through RoI pooling layers
SGD hyper-parameters
用于softmax分类和边界盒回归的全连接层分别从零均值高斯分布初始化,标准差分别为0.01和0.001。偏差被初始化为0。所有层对权重和偏差的每层学习率分别为1和2,全局学习率为0.001
Scale invariance
我们探索了实现尺度不变目标检测的两种方法:(1)通过“蛮力”学习和(2)通过我们的图像金字塔
Fast R-CNN detection
Truncated SVD for faster detection
对于全图像分类,计算全连接层所花费的时间比计算转换层要少。
相反,对于检测,要处理的roi数量很大,并且近一半的前向传递时间用于计算完全连接的层(见图2)。
用截断的奇异值分解(SVD)对大的全连接层进行压缩,可以很容易地加速它们[5,23]。在这种技术中,一个由u × v权重矩阵W参数化的层被近似分解为
Main results
三个主要结果支持本文的贡献:
1.在VOC07, 2010和2012取得最先进的mAP
2. 与R-CNN, SPPnet相比,快速训练和测试
3.在VGG16中微调转换层可以改善mAP
Conclusion
本文提出了Fast R-CNN,它是对R-CNN和SPP-net的一种干净、快速的更新.
特别值得注意的是,稀疏对象候选框似乎提高了检测器的质量。这个问题在过去花费太大(时间上)而无法探究,但它在Fast R-CNN上是可行的。当然,可能存在一些尚未被发现的技术,可以让密集的盒子表现得和稀疏候选框一样好。这种方法,如果发展,可能有助于进一步加快目标检测