英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料
快速R-CNN
Ross Girshick
微软研究院
rbg@microsoft.com
摘要
本文提出了一种干净和快速的目标检测框架快速R-CNN。相比传统的R-CNN,及其加速版SPPnet,快速R-CNN训练网络在一个训练阶段使用多任务的损失。多任务损失简化了学习,提高了检测精度。不像SPPnet,所有的网络层可以微调过程中进行更新。我们表明,这种差异在深度网络中有非常实际的后果,如VGG16,只有在全连接层被更新时mAP会变差。在PASCAL VOC 2012,相比“慢”R-CNN,快速R-CNN训练VGG16检测快9倍,测试时间是快213倍,达到一个非常显著的mAP。相比SPPnet,快速R-CNN训练VGG16 3快3倍,测试快10倍,更高的准确率。快速R-CNN可以在Python和C 实现,在HTTPS开源MIT License授权://github.com/rbgirshick/fast-rcnn。
1.简介
使用深度ConvNets [15,17]图像分类[13]和目标检测[9,18]已在精度上获得很重要的结果。然而,相对于图像分类,目标检测的难度更大,导致了更加复杂的方法。这些方法的(例如,[9,10,18,24])训练网络中的多级管道使得训练困难且耗时的。
检测要求目标的精确定位,产生了两个主要挑战。首先,众多的候选目标的位置需要进行评估。为了使检测有效率,卷积特征需要在位置[10,18]之间共享。不幸的是,在训练网络中,这个方法[10]限制了反向传播的错误,潜在地限制了精确度。第二,候选对象的位置需要被优化以获得高的精度。之前的优化过程[9,18]已经在一个单独的学习阶段训练。
在本文中,我们显著简化了最新目标检测器的学习过程。单级训练算法能同时学会分类目标的建议和完善其空间位置。此外,我们提出了一种在网络中允许全反向传播错误的训练中共享卷积特性的新方法来提高精度。也取得了一些改进以提高运行时效率,如使用对目标检测特别有效的截短SVD方法。
结果表明,一个可以训练深度检测网络的方法可以在单个阶段比R-CNN快9倍 [9],比SPPnet快3倍[10]。在运行时,网络处理图像的过程在0.3秒内(不包括目标建议时间),而在PASCAL VOC 2012达到最高的精度为66%的mAP(相对于62%的R-CNN)。
1.1. R-CNN和SPPnet
R-CNN [9]具有优良的目标检测精度。然而,它也有显着的缺点:
1.训练是一个多级通道。首先通过互熵微调一个目标检测ConvNet。然后,线性SVMs在计算扭曲的对象建议上适合ConvNet特性。在第三个训练阶段,要学习边界框回归因子。
2.在空间和时间的训练成本很高。对于SVM和回归训练,特征是从各每幅图像中扭曲的对象建议提取,写入磁盘。在如VGG16 [19]的深度网络中,这个过程需要2.5 GPU天的来训练5000张在VOC07 训练集上的图片。这些功能要求成GB的字节。
3.试验时间检测是缓慢的。在测试的时候,特征从每张测试图像每个扭曲的对象建议提取。用VGG16检测需要47秒/图像。
R-CNN因为它扭曲,独立处理每个对象的建议所以是缓慢的。SPPnet [10]是为了加快R-CNN而提出的。在SPPnet,变形建议只是在ConvNet的最后一层卷积后移位。这种重新组织使整个输入图像被有效地处理成深的特征图(或金字塔式),独立的目标建议。为了分类一个建议,这些特征根据建议的投影到特征映射的汇集到一个固定长度的特征向量的自适应大小的池。He等,[10]倡导串联从多个池网格(例如输出,6times;6,3times;3,2times;2,1times;1),如在空间金字塔池[14]。 SPPnet在测试时间上加速R-CNN 10至100倍。因为特征提取很快,训练时间也减少了。
SPPnet也有明显的缺点。如R-CNN,训练是一个多级通道涉及提取特征,微调互熵损失的网络,训练SVMs,最终适合边界框回归量。例如R-CNN,特征被写入磁盘。但是,与R-CNN不同,微调算法[10]中只能延续空间塔式池更新全连接层。我们推测,这种限制会阻止深度网络,如VGG16,到达其充分的潜力。
1.2.贡献
我们提出来一种新的训练算法,融合了R-CNN和SPPnet的优势,同时提高了他们的速度和准确性。我们称这种方法快速R-CNN(FRCN,简称),因为它的速度在训练和测试非常快。快速R-CNN具有以下优点:
1.与R-CNN相比,较高的检测质量(mAP)
2.训练为单级,采用了多任务的损失
3.所有的网络层可以在训练中被更新
4.不需要磁盘存储空间来捕捉特征
快速R-CNN是用Python和C (来自Caffe [12]),并且是开源MIT License授权https://github.com/rbgirshick/fast-rcnn。由于R-CNN的越来越多的使用,快速R-CNN将加速大量的研究工作。
2.快速R-CNN训练
继传统的R-CNN,我们开始从一个ConvNet初始化判别预训练ImageNet [ 4 ]分类。 我们认为,有几个体系结构卷积(CONV)和最大池层,接着感兴趣的(RoI)池层的区域,然后几个完全连接(FC)层。我们修改这些预先训练网络,使他们终止两个同级层,一个在输出在K对象SOFTMAX概率估计在一个特殊的“背景”级,另一层其输出四个实值数为每K个的对象类。这些4K值编码为每个类优化边界框。快速R-CNN如图1所示。
2.1. RoI池层
感兴趣区域(RoI)池层的区域是一个被SPPnet使用的简化空间塔式池的版本[10],其中,我们的“金字塔”只有一个水平。一个RoI池层作为输入N个特征的地图和一系列感兴趣区域;典型地,。 N个特征图是由网络的最后卷积层提供,并且各自是Htimes;Wtimes;C的尺寸的多维数组,用H行,W列,和C通道。每个RoI是指定一个特征图索引的元组的,,在RoI左上角位置,和其高度和宽度。RoI池层输出最大池化特征图的空间范围,原来的C信道(和)。
每个R RoI,RoI汇集层每形式最大池在Hrsquo;Wrsquo;输出箱。箱的大小()自适应设置使得他们矩形在索引特征图。我们使用的自适应的大小计算在[ 10 ]。
2.2.使用预训练网络
我们使用三个预训练ImageNet网络,每个有5个最大池化层和5到13个之间的卷积层(参见4.1节)。当一个预先训练网络初始化快速R-CNN,它经历了三个转变。
第一,最后的最大池化层由RoI取代,设置为Hrsquo;和Wrsquo;,是被配置池层与网上第一个全连接层兼容(例如,在VGG16上, )。
第二,网络的最终全连接层和softmax(这被训练为1000路ImageNet 类别)被替换为前面描述的两个同级层(一个全连接层,在K 1 分类的softmax,边界框回归)。
第三,网络被修改,有两个数据输入:一批N个图像和一系列R RoI。批量大小和RoIs的数量可以从批处理动态变化,同样也可输入图像的分辨率:所有转换层重塑比例上即时的输入分辨率[21]。
2.3.微调检测
在[10],一个3层的softmax检测分类器微调。分类操作的固定长度的特征向量等所形成的空间塔式池(SPP)应用于预计算整个图像卷积特征图。对于非常深VGG16模型(未在使用[10]),这意味着第13层将固定在他们的初始化;只有3层分类将被更新。
此限在使用RoI为中心的随机梯度下降(SGD)使得SPPnets可以被训练为R-CNN开发采样过程。在RoI为中心采样,训练的RoI被从集合均匀采样,所有RoI中的所有图像,因而每个SGD mini-batch包括大量不同的图像样品。
去除此限制要求通过SPP层进行反向传播。反过来,反向传播重新计算卷积层在每一个RoI的感受野,这常常是输入整个图像。这计算速度太慢,并且为了灵活需要太多的内存。我们提出一个更有效的策略使用image-centric采样。在快速R-CNN,mini-batches被分层采样,第一个采样图像,然后在这些图像的RoIs。RoI从相同的图像中共享计算和内存,使得训练效率。
除了图像中心采样,快速R-CNN训练网络在一个微调阶段,联合优化一个softmax分类器和边界框回归,而不是在三个不同的阶段训练一个softmax分类器,SVMs和回归因子,并且分三阶段[ 9 ,10]。这个程序的组成成分——损失,mini-batch的抽样策略,反向传播通过RoI池层,和SGD超参数,详情如下。
多任务损失. 快速R-CNN网络输出层两层。第一层输出的离散概率性分布(每个RoI),, 超过K 1类。像往常一样,P是被softmax在有K 1输出的全连接层上计算得出的。二同级层输出偏移边界框回归,, 我们使用的参数化给定的在[ 9 ],在这指定一个尺度不变的转移和日志空间高度/宽度移位相对于一个对象的建议。我们使用多任务损失L训练网络的分类和边界框回归:
(1)
是一个真类标签和的标准互熵/对数损失。第二个任务,定义的元组真正的限定框回归目标类 , 和一个预测元组再次为类(我们为了简洁省略符号的上标k)。艾弗森支架指标函数[],在时等于1时,否则为0。根据约定的特殊背景类标记。真实的RoIs背景下没有边界框的概念,因此在那种情况下被忽略。对于限定框回归,我们使用损失
在,
平滑损失是异常值的敏感度低于R-CNN的损失。当回归目标是无界的,用损失进行训练需要大量的调整学习速率,以防止激增的梯度。Eq.3消除这个敏感性。
在Eq.1中的超参数lambda控制平衡这两个任务之间的损失。我们正规化真实背景回归的目标t,来获得零均值和单位方差。在这种正规化下,lambda = 1在所有实验工作良好。
我们注意到[6]使用一个相关的损失训练类未知对象建议系统。与我们的方法不同,[6]倡导一个两级/两个网络系统,首先确定位置然后识别对象。OverFeat[18],R-CNN[9],和SPPnet[10]也训练分类器和定位限定框,但是这些方法使用分段训练,劣与我们展示的快速R-CNN(5.1节)。
Mini-batch抽样.在微调,每个SGD mini-batch是由N = 2的图片,统一地随机选择(常见的做法,我们实际上迭代排列的数据集)构造而成的。我们使用mini-batches大小R = 128,从每个图像抽样64 RoIs。在[9],我们将25%的RoI从对象的建议有联盟的交集(IoU)重叠边界框至少为0.5。这些RoIs组成一个真实对象类的示例,即k 1。剩下的RoIs是抽样从对象建议最大IoU与真实地面的区间[0:1;0:5),根据[10]。这些都是背景例子,并且被标注五k = 0。在训练期间每个采样图像有0.5的概率水平翻转。没有其他增加的数据使用。
通过RoI池层进行反向传播。快速R-CNN mini-batches从整个图像,因此包括反向传播所需的所有图像的损失函数的信息。反向传播路线通过RoI池层获得,如下描述。
在向前传播时,输入一批N = 2的图像, 通过RoI池层扩展到一批输出大小为R = 128。多任务损失在输出R的平均值 L。RoI池层在反向传播中流动获得。RoI池层是通过对每个输入变量x 在所有最大池化x的向前传递 RoIs层求和来计算损失函数的偏导数:
总的来说,每个mini-batch RoI r和为每个在r上的池化输出单位y ,偏导数为积累如果x最大的则在池化时分配给y (即。如果y“池化”x,作为被给定的指示函数)。反向传播的偏导数已经在最上端的RoI池层的反向函数计算获得。
SGD hyper-parameters. 用于softmax分类和限定框回归的全连接层从均值为零,标准差为0.01和0.001的高斯分布进行随机初始化。所有层使用每层权重为1和偏差为2的学习速率(以下标准实践)和全局0.001的学习速率。当在VOC0练或VOC12 trainval训练时,我们运行SGD 30 k mini-batch迭代,然后降低学习速率为0.0001时,再次迭代10k。当我们训练更大的数据集,我们更多次的迭代运行SGD,正如后文所述。在所有的试验中,使用权重为0.9的动量和衰减系数为0.0005。
2.4.尺度不变性
我们探索两种方式实现尺度不变的目标检测:(1)通过“蛮力”的学习和(2)应用图像金字塔。这些策略遵循两个作法在[10]。在蛮力方法中,每个图像处理在训练和测试在规范范围内。网络必须直接学习训练数据的尺度不变的目标检测。
相比之下,多尺度方法通过一个图像塔式的合适的尺度不变性的网络。检测器被训练只有当它“看到”目标的最优规模时进行响应。多尺度训练期间,我们每次随机采样采样图像的样本规模(以下[10])。由于GPU内存限制,我们只用较小的网络进行多尺度训练实验,。
3.快速R-CNN检测
当快速R-CNN网络微调时,检测数量多运行一个向前传递(假设目标建议被预先计算)。网络将单尺度图像作为输入(或一个塔式图像)和一系列R的建议分数。在测试时间,R是大约在2000,但是我们会考虑它是更大的()情况。单尺度检测,所有的RoIs索引输入批处理(即单一图像。,n = 0)。在多尺度的情况下,输入的批处理是一个塔式图像。这里,每个RoI指定塔
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[31116],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。