Fast R-CNN

Abstract

  • 本文提出了一种基于快速区域的卷积网络方法(Fast R-CNN)用于目标检测。 快速R-CNN建立在先前的工作基础上,以使用深度卷积网络有效地对对象提议进行分类。
  • 与之前的工作相比,Fast R-CNN采用了多项创新来提高训练和测试速度,同时提高了检测精度。 快速R-CNN训练非常深的VGG16网络比R-CNN快9倍,在测试时间快213倍,并在PASCAL VOC 2012上实现更高的mAP。与SPPnet相比,Fast R-CNN训练VGG16 3倍速更快 ,测试速度快10倍,并且更准确。 

Introduction

  • 复杂性的产生是因为检测需要对物体进行精确定位,这就产生了两个主要挑战。首先,必须处理许多候选对象位置(通常称为“建议”)。第二,这些候选者只提供必须重新定义才能实现精确本地化的粗略本地化。这些问题的解决方案通常会影响速度、准确性或简单性。
  • 在本文中,我们简化了基于convnet的最新对象检测器的培训过程。我们提出了一种单阶段训练算法,该算法共同学习对对象建议进行分类并重新确定其空间位置。由此产生的方法可以训练一个非常深的检测网络(VGG16 [20])比R-CNN [9]快9倍,比SPPnet [11]快3倍。 在运行时,检测网络以0.3s处理图像。
  • 基于区域的卷积网络方法(RCNN)[9]通过使用深度ConvNet对对象提议进行分类,实现了出色的对象检测精度。 然而,R-CNN有明显的缺点:
  1. 训练是一个多阶段的管道。 R-CNN首先通过使用log损失的对象提案来微调ConvNet。 然后,它将SVM用于ConvNet功能。 这些SVM充当物体探测器,取代了通过微调学习的softmax分类器。 在第三个训练阶段,学习边界框回归量。
  2. 培训在空间和时间上都很昂贵。对于SVM和边界框回归训练,从每个图像中的每个对象建议中提取特征并写入磁盘。对于非常深的网络,如vg16,此过程需要2.5 gpu天的时间来处理voc07 trainval集的5K图像。这些功能需要数百GB的存储空间。
  3. 对象检测很慢。 在测试时,从每个测试图像中的每个对象提议中提取特征。 使用VGG16进行检测需要47秒/图像。
  • R-CNN很慢,因为它为每个对象提议执行ConvNet前向传递,而不共享计算。 提出空间金字塔池化网络(SPPnets)通过共享计算来加速R-CNN。SPPnet方法计算整个输入图像的卷积特征映射,然后使用从共享特征映射中提取的特征向量对每个对象提议进行分类。通过将提议内部的特征地图的部分最大化为固定大小的输出(例如,6×6)来提取特征以用于提议。 合并多个输出大小,然后在空间金字塔池中连接。
  • SPPnet也有明显的缺点。 与R-CNN一样,训练是一个多阶段管道,涉及提取特征,利用对数丢失对网络进行微调,训练SVM以及最终配置边界框回归。 功能也写入磁盘。 但与R-CNN不同,[11]中提出的微调算法无法更新空间金字塔池之前的卷积层。 不出所料,这种限制(固定的卷积层)限制了非常深的网络的准确性。
  • 我们提出了一种新的训练算法,在提高速度和精度的同时,弥补了R-CNN和SPPNET的缺点。我们称这种方法为快速R-CNN,因为它的训练和测试速度相对较快。快速RCNN方法有几个优点:
  1. 比R-CNN、SPPNET更高的检测质量(MAP)
  2. 训练是单阶段的,使用多任务损失
  3. 训练可以更新所有网络层
  4. 功能缓存不需要磁盘存储

Fast R-CNN architecture and training

  • 快速R-CNN网络将整个图像和一组对象提议作为输入。 网络首先使用几个卷积(转换)和最大池化层处理整个图像,以生成转换特征映射。 然后,对于每个对象提议,感兴趣区域(RoI)汇集层从特征映射中提取固定长度的特征向量。 每个特征向量被馈送到一系列完全连接的(fc)层,最终分支到两个兄弟输出层:一个产生针对K个对象类的softmax概率估计加上一个全能的“背景”类,另一个层输出四个真实的 每个K对象类的值。 每组4个值编码K类中的一个的重新定义的边界框位置。
  • RoI池化层使用最大池化将任何有效感兴趣区域内的要素转换为具有固定空间范围H×W的小特征映射,其中H和W是独立于任何特定RoI的层超参数。在本文中,RoI是一个转换为转换特征映射的矩形窗口。 每个RoI由一个四元组(r,c,h,w)定义,指定其左上角(r,c)及其高度和宽度(h,w)。RoI max pooling通过将h×w RoI窗口划分为大约h / H×w / W的子窗口的H×W网格,然后将每个子窗口中的值最大汇集到相应的输出网格单元中来工作。池化独立应用于每个要素图通道,如标准最大池中所示。 RoI层只是SPPnets [11]中使用的空间金字塔池层的特例,其中只有一个金字塔层。
  • 我们使用三个预先培训的ImageNet[4]网络进行实验,每个网络具有五个最大池层,以及五个和十三个conv层之间(。当接受过预训练的网络初始化一个快速的R-CNN网络时,它经历了三次转换。
  1. 首先,最后一个最大池化层由一个RoI池层替换,该池层通过设置H和W与网络的第一个完全连接层兼容来配置。
  2. 其次,网络的最后一个完全连接层和softmax(经过1000路ImageNet分类培训)被前面描述的两个兄弟层替换(一个完全连接的层和softmax,超过K + 1类别和类别特定的边界框回归)。
  3. 第三,网络被修改为接受两个数据输入:图像列表和这些图像中的ROI列表。
  • 使用反向传播训练所有网络权重是快速R-CNN的重要功能。 首先,让我们阐明为什么SPPnet无法更新空间金字塔池池下的权重。根本原因是当每个训练样本(即RoI)来自不同的图像时,通过SPP层的反向传播是非常低效的,这正是R-CNN和SPPnet网络的训练方式。效率低的原因在于每个RoI可能具有非常大的接收场,通常跨越整个输入图像。 由于前向传球必须处理整个接收场,因此训练输入很大(通常是整个图像)。
  • 我们提出了一种更有效的培训方法,该方法利用训练期间的功能共享。在快速RCNN训练中,随机梯度下降(SGD)小批量分层采样,首先采样N个图像,然后通过从每个图像采样R / N RoI。重要的是,来自相同图像的RoI在前向和后向传递中共享计算和存储器。使N变小将会减少小批量计算。例如,当使用n=2和r=128时,建议的训练方案比从128个不同的图像中抽取一个ROI大约快64倍。
  • 对该策略的一个担忧是它可能导致低训练收敛,因为来自相同图像的RoI是相关的。 这个问题似乎不是一个实际问题,我们使用比R-CNN更少的SGD迭代,使用N = 2和R = 128获得了良好的结果。除了分层采样之外,Fast R-CNN还使用简化的训练过程和一个微调阶段,共同优化softmax分类器和边界框回归器,而不是在三个不同的阶段训练softmax分类器,SVM和回归器[9] ,11]。 该过程的组件(损失,小批量采样策略,通过RoI池化层的反向传播和SGD超参数)如下所述。
  • 我们将基本真值回归目标vi归一化为零均值和单位方差。所有实验均使用λ=1。在微调期间,每个SGD小批量由N = 2个图像构成,随机均匀选择(通常的做法是,我们实际上迭代数据集的排列)。 我们使用尺寸为R = 128的小批量,从每个图像中采样64个RoI。 与[9]中一样,我们从对象提案中获取25%的RoI,这些对象提案具有交叉联合(IoU)与至少0.5的groundtruth边界框重叠。 这些RoI包括用前景对象类别标记的示例,即u≥1。其余的RoI是从对象建议中采样的,在[11]之后从间隔[0.1,0.5]得到最大的对象。 这些是背景示例,并标有u = 0. 0.1的下限阈值似乎充当了硬实例挖掘的启发式算法[8]。 在训练期间,图像以0.5的概率水平地拍摄。 没有使用其他数据扩充。
  • 用于softmax分类和边界框回归的完全连接的层分别服从零均值高斯分布初始化,标准偏差分别为0.01和0.001。 偏差初始化为0.所有层使用权重学习率为1,权重为2,偏差为2,全局学习率为0.001。 在培训VOC07或VOC12 trainval时,我们运行SGD进行30k小批量迭代,然后将学习率降低到0.0001,并进行另外10k次迭代训练。
  • 我们探索了两种实现尺度不变目标检测的方法:(1)通过“蛮力”学习;(2)使用图像金字塔。这些策略遵循[11]中的两种方法。在蛮力方法中,在训练和测试期间,每个图像都以预先定义的像素大小进行处理。网络必须从训练数据中直接学习尺度不变的目标检测。
  • 相反,多尺度方法通过图像金字塔为网络提供近似的尺度不变性。 在测试时,图像金字塔用于近似地对每个对象提议进行缩放标准化。 在多尺度训练期间,我们在每次采样图像后随机采样金字塔尺度,[11],作为数据增强的一种形式。 由于GPU内存限制,我们仅尝试针对较小网络的多规模培训。

Fast R-CNN detection

 

  • 一旦快速R-CNN网络被调整,检测就比运行正向传递更多(假设对象提议是预先计算的)。网络将图像(或图像金字塔,编码为图像列表)和R对象提议列表作为输入。在测试时,R在2000年左右,虽然我们会考虑它更大的情况(≈45k)。 当使用图像金字塔时,每个RoI被分配给比例,使得缩放的RoI最接近区域中的2242像素。对于每个测试RoI r,前向传递输出类后验概率分布p和一组相对于r的预测边界框偏移(每个K类获得其自己的重新定义的边界框预测)。 我们使用估计的概率为每个对象类k分配r的检测信度。 然后,我们使用来自R-CNN的算法和设置,为每个类独立地执行非最大抑制。
  • 对于整个图像分类,与conv层相比,计算完全连接层所花费的时间很小。相反,对于检测而言,要处理的ROI数量很大,几乎一半的前向通过时间用于计算完全连接的层。通过使用截短的SVD压缩大的完全连接层,可以很容易地加快速度。

Design evaluation

  • 多任务培训很方便,因为它避免了管理顺序训练的任务的管道。 但它也有可能改善结果,因为任务通过共享表示(ConvNet)相互影响。在所有三个网络中,我们观察到,与单独的分类训练相比,多任务训练提高了纯粹的分类准确性。 改进范围从+0.8到+1.1 mAP点,显示了多任务学习的一致积极效果。最后,我们采用基线模型(仅在分类丢失的情况下训练),定位边界框回归层,并使用训练它们,同时保持所有其他网络参数不变。每组的第三列显示了这一阶段性训练方案的结果:MAP比第一列提高,但阶段性训练不如多任务训练(每组第四列)。
  • 我们比较了两种实现尺度不变目标检测的策略:蛮力学习(单尺度)和图像金字塔(多尺度)。无论哪种情况,我们都将图像的比例s定义为最短边的长度。所有单尺度实验都使用s=600像素;对于某些图像,s可能小于600像素,因为我们将最长的图像边限制为1000像素并保持图像的纵横比。选择这些值以便在微调期间将VGG16文件放入GPU内存中。较小的模型没有内存限制,可以从S的较大值中获益;但是,优化每个模型的S并不是我们主要关注的问题。我们注意到Pascal图像平均为384×473像素,因此单比例设置通常将图像采样率提高1.6倍。因此,ROI池层的平均有效跨距为≈10像素。在多标度设置中,我们使用[11]中指定的相同标度(S 480576688641200),以便于与SPPNET进行比较。但是,为了避免超过GPU内存,我们将最长的边限制为2000像素。
  • 当提供更多的训练数据时,一个好的目标探测器应该得到改进。Zhu等人[24]发现,仅在几十万到几千个训练示例后,dpm[8]映射饱和。在这里,我们用VOC12 trainval集合来增加VOC07 trainval集合,大约将图像数量增加两倍到16.5K,以评估快速的R-CNN。扩大训练集将VOC07测试的MAP从66.9%提高到70.0%(表1)。在对这个数据集进行培训时,我们使用60K的小批量迭代而不是40K。
  • 大体上,有两种类型的对象检测器:使用稀疏对象建议集的检测器(例如,选择性搜索[21])和使用密集集的检测器(例如,DPM[8])。对稀疏提案进行分类是一种级联[22]类型,其中提案机制首先拒绝大量候选人,留下一小部分要评估的类别。当应用于DPM检测时,这种级联提高了检测精度[21]。我们发现证据表明,建议的分级也提高了快速R-CNN的准确性。使用选择性搜索的质量模式,我们从每个图像扫描1k到10k的建议,每次重新训练和重新测试模型M.如果提议服务于纯计算角色,增加每个图像的提议数量不应该损害mAP。我们发现,随着提案数量的增加,地图会上升,然后略有下降。这项实验表明,用更多的建议淹没较深的等级,对准确性没有帮助,甚至有点伤害。

Conclusion

  • 本文提出了快速CNN,一个干净和快速更新的R-CNN和SPPNET。除了报告最先进的检测结果,我们还提供了详细的实验,希望能提供新的见解。特别值得注意的是,稀疏对象的建议似乎可以提高探测器的质量。这个问题在过去花费了太多(及时)去探索,但在快速的R-CNN中变得实用。当然,可能还存在一些未被发现的技术,允许密集的盒子执行稀疏的提案。如果开发出这种方法,可能有助于进一步加速目标检测。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值