摘要
在基于区域的卷积神经网络的浪潮中,目标检测领域已经取得了显著的进展,但是它们的训练过程仍然包含许多尝试和超参数,这些参数的调优代价很高。我们提出了一种简单而有效的在线难样本挖掘(OHEM)算法,用于训练基于区域的ConvNet检测器。我们的动机和以往一样——检测数据集包含大量简单示例和少量困难示例。自动选择这些困难的例子可以使训练更加有效。OHEM是一个简单直观的算法,它消除了几种常见的启发式和超参数。但更重要的是,它在基准测试(如PASCAL VOC2007和2012)上产生了一致且显著的检测性能提升。在MS COCO数据集上的结果表明,当数据集变得更大、更困难时,它的效率会提高。此外,结合该领域的互补进展,OHEM在PASCAL VOC 2007和2012年的mAP上分别取得了78.9%和76.3%的最新成果。
1、简介
图像分类和目标检测是计算机视觉的两项基本任务。目标检测器通常通过将目标检测转换为图像分类问题的约简来训练。这种缩减带来了一个自然图像分类任务中没有的新挑战:训练集的区别在于带标注目标的数量与背景示例的数量(图像区域不属于任何感兴趣的目标类)之间存在很大的不平衡。在滑动窗口对象检测器的情况下,例如可变形部件模型(DPM),这种不平衡可能达到极端的程度,每个目标对应100,000个背景示例。最近的基于目标建议的检测器的趋势在一定程度上缓解了这个问题,但是不平衡比率可能仍然很高(例如,70:1)。这一挑战为学习技巧打开了空间,这些技巧可以处理不平衡,产生更快的训练,更高的准确性,或者两者兼而有之。毫不奇怪,这不是一个新的挑战,一个标准的解决方案,最初称为引导(现在有十个称为难负挖掘),已经存在了至少20年。Bootstrapping在上世纪90年代中期(如果不是更早的话)被引入到song和Poggio的工作中,用于训练人脸检测模型。他们的主要想法是通过选择那些检测器触发错误警报的例子,逐步增加或引导背景示例集。这种策略会导致迭代训练算法之间的交替更新检测模型在当前设置的例子,使用更新后的模型,然后寻找新的假正性的引导训练集。这个过程通常开始用训练集组成的所有目标和一个小例子,随机设置背景的例子。
在数十年的目标检测研究中,Bootstrapping得到了广泛的应用。Dalal和Triggs在训练SVMs进行行人检测时使用了它。Felzenszwalb等人后来证明了SVMs的一种引导形式收敛于整个数据集上定义的全局最优解。他们的算法通常被称为难负挖掘,在训练SVM进行目标检测时经常使用。Bootstrapping还成功地应用于其他各种学习模型,包括浅神经网络和增强决策树。即使是基于深度卷积神经网络(ConvNets)的现代检测方法,如R-CNN和SPPnet,仍然使用经过难负挖掘训练的SVM。那么,由Fast R-CNN及其后代所体现的当前最先进的目标检测器不使用Bootstrapping,这似乎有些奇怪。其根本原因是纯在线学习算法的转变带来的技术难题,尤其是在用随机梯度下降(SGD)训练了数百万个例子的深层卷积算法的背景下。Bootstrapping及其在文献中的变体依赖于前面提到的交替模板:(a)在一段时间内,使用一个固定的模型来寻找新的例子来添加到活动训练集中;(b)然后,在固定的主动训练集上对模型进行一段时间的训练。使用SGD训练深度ConvNet检测器通常需要几十万个SGD步骤,一次冻结模型甚至几次迭代都会显著减缓进度。相反,我们需要的是一种纯粹的在线示例选择形式。
在本文中,我们提出了一种新的自举技术,称为在线难例挖掘(OHEM),用于训练基于深度卷积的最先进的检测模型。该算法是对SGD的一个简单修改,其中训练实例根据一个非均匀、非平稳的分布进行采样,该分布依赖于正在考虑的每个示例的当前损失。该方法利用了特定于检测的问题结构,其中每个SGD小批只包含一个或两个图像,但有数千个候选示例。候选示例根据有利于不同的高损失实例的分布进行子抽样。梯度计算(反向传播)仍然是有效的,因为它只使用所有候选的一小部分。我们将OHEM应用到标准的Fast R-CNN检测方法中,与baseline训练算法相比,我们展示了三个优点:
- 它消除了在基于区域的ConvNets中常用的几种尝试和超参数的需要
- 它在平均平均精度方面产生了持续而显著的提高
- 如MS COCO数据集上的结果所示,随着训练集变得更大、更困难,它的有效性也会提高
此外,OHEM的收益与最近在目标检测方面的改进是互补的,例如多尺度测试和迭代bounding box regression。结合这些技巧,OHEM给出了最先进的结果在PASCAL VOC 2007和2012的mAP分别为78.9%和76.3% 。
3、R-CNN概述
我们首先总结了Fast R-CNN(FRCN)框架。FRCN将图像和一组感兴趣的目标建议区域(RoIs)作为输入。FRCN网络本身可以分为两个顺序部分:
- 一个卷积(Conv)网络,包含多个卷积层和最大池化层(图1,“卷积网络”)
- 以及具有RoI池化层、几个全连接(fc)层和两个损失层的RoI网络(图1,“RoI网络”)
在推理过程中,将Conv网络应用于给定的图像,生成一个Conv特征图,其大小取决于输入图像的维数。然后,对于每个目标建议,RoI池化将提案投射到Conv特征图上,并提取一个固定长度的特征向量。每个特征向量被送入FC层,最后给出两个输出:(1)目标类和背景上的softmax概率分布;(2)回归坐标进行框重定位。选择FRCN作为我们的基本目标检测器有几个原因,除了它是一个快速的端到端系统。首先,最近的SPPnet和MR-CNN等检测器也使用了基本的两种网络设置(conv和RoI);因此,我们提出的算法具有更广泛的适用性。其次,虽然基本设置相似,FRCN也允许训练整个Conv网络,而不是像SPPnet和MR-CNN一样保持Conv网络固定。最后,SPPnet和MR-CNN都需要缓存RoI网络的特征来训练单独的SVM分类器(使用难负挖掘)。FRCN使用RoI网络本身来训练所需的分类器。事实上,Fast R-CNN表明,在统一的系统中,后期使用SVM分类器是不必要的。
3.1、训练
与大多数深度网络一样,FRCN是使用随机梯度下降(SGD)训练的。每个实例RoI的损失是分类对数损失(鼓励预测正确的目标(或背景)标签)和定位损失(鼓励预测准确的边界框)的总和。为了在RoI之间共享Conv网络计算,分层次地创建了SGD小批。对于每个小批处理,首先从数据集中采样N张图像,然后从每张图像中采样B/N RoI。在Fast R-CNN中,设置N = 2和B = 128效果很好。RoI抽样过程使用几种启发式方法,我们将在下面简要描述。本文的一个贡献是消除了其中一些启发式及其超参数。
前景RoIs:对于一个被标记为前景(fg)的RoI示例,其与ground truth边界框的IoU应该至少为0.5。这是一个相当标准的设计选择,部分灵感来自PASCAL VOC对象检测基准的评估协议。在R-CNN、SPPnet和MR-CNN的SVM硬挖掘过程中也采用了同样的准则。我们使用相同的设置。
背景RoIs:如果一个区域与ground truth的最大IoU在区间[bg lo, 0.5],则将该区域标记为background (bg)。FRCN和SPPnet都使用较低的bg lo = 0.1阈值,并在Fast R-CNN中假设该阈值粗略地近似于难负挖掘;假设与groundtruth有一些重叠的区域更有可能是令人困惑或难以理解的区域。我们在第5.4节中指出,虽然这种启发式有助于收敛和检测精度,但它是次优的,因为它忽略了一些不常见的、但重要的、困难的背景区域。我们的方法去除bg lo阈值。
平衡fg-bg RoIs:为了处理第1节中描述的数据不平衡,Fast R-CNN设计了启发式算法,通过随机对背景块进行欠采样,将每个小批的前背景比重新平衡到1:3的目标,从而确保25%的小批是fg RoIs。我们发现这是一个重要的设计决策的训练FRCN。删除这个比率(即随机采样RoIs),或者增加它,会降低∼3个点mAP的精度。用我们提出的方法,我们可以去除这个比率超参数,没有不良影响。
4、我们的方法
我们提出了一个简单而有效的在线难样例挖掘算法来训练Fast R-CNN(或任何Fast R-CNN风格的目标检测器)。我们认为,目前为SGD创建小批量的方法(第3.1节)是低效和次优的,并且我们证明了我们的方法可以带来更好的训练(更低的训练损失)和更高的测试性能(mAP)。
4.1、在线难样本挖掘
回顾定义难例挖掘算法的交替步骤:(a)在一段时间内,使用固定的模型来查找要添加到活动训练集中的新样例;(b)在一段时间内,该模型在固定的主动训练集上进行训练。在基于SVM的目标检测器,如在R-CNN或SPPnet上训练的SVM:(a)检查数量可变的图像(通常10或100)直到活动训练集达到一个阈值大小,然后在步骤(b)的支持向量机训练集训练收敛在活跃。重复这个过程直到正训练集包含所有支持向量。将类似的策略应用于FRCN ConvNet训练会减慢学习速度,因为在从10或100张图像中选择示例时,不会进行模型更新。我们的主要观察是,这些交替的步骤可以结合FRCN如何使用在线SGD训练。关键在于,尽管每个SGD迭代只对少量图像进行采样,但每个图像包含数千个样例RoI,我们可以从中选择难样例,而不是启发式采样的子集。这种策略通过将模型“冻结”为一个小批,适合于SGD的替换模板。因此,模型更新的频率与基准SGD方法完全相同,因此学习不会延迟。
更具体地说,在线硬示例挖掘算法(OHEM)的过程如下。对于SGD第t次迭代的输入图像,我们首先使用Conv网络计算一个Conv特征图。然后,RoI网络使用这个特征映射和所有输入RoI (R),而不是抽样的小批,来执行正向传递。回想一下,这一步只涉及RoI池、几个fc层和每个RoI的损失计算。损失表示当前网络在每个RoI上的表现如何。难样例是通过按损耗对输入RoI进行排序来选择的,并以当前网络性能最差的B/N示例为例。大部分的正向计算是通过Conv特征在RoIs之间共享的,所以需要额外的计算来转发所有的RoIs是相对较小的。此外,由于只选择了少量的RoI来更新模型,所以向后传递并不比以前更昂贵。然而,有一个小警告:高重叠的共同投资回报率很可能有相关的损失。此外,由于分辨率的差异,这些重叠的RoI可以投影到Conv特征图中的相同区域,从而导致损失的重复计算。为了处理这些冗余和相关区域,我们使用标准非最大抑制(NMS)来执行重复数据删除。给定RoI及其损失列表,NMS通过迭代选择损失最大的RoI,然后删除与所选区域有高度重叠的所有较低的RoI。我们使用宽松的IoU阈值0.7来抑制只有高度重叠的RoI。我们注意到上面描述的过程不需要fg-bg比值来平衡数据。如果忽略任何一个类,它的损失将会增加,直到有很高的采样概率。可以有fg RoI很容易的图像(例如汽车的标准视图),因此网络可以免费在一个小批中只使用bg区域;反之,当bg很小(如天空、草地等)时,小批量可以完全是fg区域。
4.2、实现细节
有许多方法可以在FRCN检测器中实现OHEM,每种方法都有不同的优缺点。一种明显的方法是修改损失层来进行难样例选择。损失层可以计算所有RoI的损失,根据损失对它们进行排序,选择难RoI,最后将所有非难RoI的损失设置为0。虽然很简单,但是这种实现效率很低,因为RoI网络仍然为所有RoI分配内存并执行向后传递,即使大多数RoI的损失为0,因此没有梯度更新(当前深度学习黑盒子的一个限制)。为了克服这个问题,我们提出了图2中所示的体系结构。我们的实现维护RoI网络的两个副本,其中一个是只读的。这意味着只读RoI网络(图2(a))只为所有RoI的前向传递分配内存,而标准RoI网络同时为前向和后向传递分配内存。对于SGD迭代,给定conv特征图,只读RoI网络执行正向传递,并计算所有输入RoI (R)的损失(图2,绿色箭头)。然后,难RoI采样模块使用4.1节中描述的过程来选择难样本,将其输入到常规RoI网络中(图2(b),红色箭头)。该网络只计算R_{text {hard set }}的正向和反向传递,积累梯度并将其传递给conv网络。在实际应用中,我们将所有N幅图像的所有RoI都作为R,因此只读RoI网络的有效批处理大小为|R|,常规RoI网络的有效批处理大小为3.1节中的标准B。我们使用Caffe框架(参见[14])实现上述两个选项。我们的实现使用梯度积累与N向前向后通过的单个图像小批量。在FRCN之后,我们使用N =2,B = 128。在这些设置下,所提议的体系结构(图2)具有与第一个选项类似的内存占用,但是> 2×更快。除非另有说明,否则本文将使用上面描述的体系结构和设置。
5、对在线难样本挖掘进行分析
本节将FRCN训练与线难样本挖掘(OHEM)与基线启发式抽样方法进行比较。我们还将FRCN和OHEM与一种效率较低的方法进行了比较,这种方法在每个小批中使用所有可用的示例RoI,而不仅仅是最难的B示例。
5.1、实验步骤
我们用两个标准的ConvNet架构进行了实验:VGG CNN m1024是AlexNet的扩展版本。本节中的所有实验都是在PASCAL VOC 07数据集上执行的。在trainval集上进行训练,在测试集上进行测试。除非另有规定,否则我们将使用FRCN的默认设置。我们使用SGD对所有方法进行80k的小批量迭代训练,初始学习率为0.001,每30k迭代将学习率降低0.1。表1(第1-2行)中报告的baseline数字是使用我们的训练时间表复制的,略高于Fast R-CNN中报告的baseline数字。
5.2、OHME和启发式抽样的比较
表1(第1 - 2行)中报告的标准FRCN使用bg lo = 0.1作为难挖掘的启发式(第3.1节)。为了测试这种启发式的重要性,我们运行FRCN时bg lo = 0。表1(第3 - 4行)显示,对于VGGM, mAP下降了2.4个点,而对于VGG16, mAP几乎保持不变。现在将此与使用OHEM(第11 - 13行)训练FRCN进行比较。与FRCN相比,OHEM改进了2.4个点,VGGM的bg lo = 0.1启发式,而没有启发式的改进了4.8个点。这个结果证明了这些启发式算法的次最优性和我们的难挖掘方法的有效性。
5.3、鲁棒梯度估计
每批只使用N = 2张图像的一个问题是,它可能会导致不稳定的梯度和缓慢的收敛,因为图像的RoI可能与高度相关。FRCN报道说,这对他们的训练来说不是一个实际问题。但这个细节可能会引起我们对训练过程的关注,因为我们使用的例子来自同一幅图像的高损失,因此它们可能具有更高的相关性。为了解决这个问题,我们对N = 1进行了实验,以增加相关性,试图打破我们的方法。如表1(第5 - 6、11行)所示,原始FRCN的性能下降了约1个点(N = 1),但是在使用我们的训练过程时,mAP保持大致相同。这表明OHEM是健壮的,如果一个需要更少的图像每批,以减少GPU内存的使用。
5.4、什么时候可以使用所有的例子?
在线硬例子挖掘是基于这样一种假设,即必须考虑图像中的所有RoI,然后选择难例子进行训练。但是如果我们和所有的RoI一起训练,而不仅仅是那些困难的RoI呢?简单的例子损失小,对梯度贡献不大;训练将自动集中在难的例子上。为了比较这个选项,我们使用bg lo =0, N∈{1,2},并在其他超参数固定的情况下,运行标准FRCN训练,其小批量大小为B = 2048。由于本实验使用的是一个大型的小型批处理,因此调整学习率以适应这种变化非常重要。我们发现最优的结果,增加到0.003的VGG16和0.004的VGGM。结果见表1(第7 - 10行)。使用这些设置,VGG16和VGGM的mAP都比B = 128增加了一个∼1点,但是与使用所有RoI相比,我们的方法的改进仍然是> 1点。此外,由于我们计算梯度与较小的小批量大小的训练速度更快。
5.5、更好的优化
最后,对上述各种FRCN训练方法的训练损失进行了分析。以一种不依赖于抽样程序的方式来衡量训练损失是很重要的,从而得出方法之间的有效比较。为了实现这一目标,我们每20k优化步骤就从每个方法中获取模型快照,并在整个VOC07训练集上运行它们,以计算所有RoI的平均损失。这以不依赖于示例抽样方案的方式度量训练集损失。图3显示了VGG16在各种超参数设置下的平均每RoI损失,如表1所示。我们发现bg_lo =0导致的训练损失最高,而使用启发式bg_lo =0.1则导致的训练损失要低得多。将小批量大小增加到B = 2048,并增加学习率,可以降低bg_lo =0.1启发式下的训练损失。我们提出的在线难样本挖掘方法在所有方法中训练损失最小,验证了OHEM可以为FRCN提供更好的训练。
5.6、计算损耗
OHEM增加了合理的计算和内存开销,如表2所示。对于VGGM网络,OHEM每次训练迭代花费0.09秒(对于VGG16是0.43秒),并且需要1G内存(对于VGG16是2.3G)。考虑到FRCN是一种快速的训练检测器,大多数用户都可以接受训练时间的增加。
6、PASCAL VOC和MS COCO的结果
在这一部分,我们评估了我们的方法在VOC 2012以及更具挑战性的MS COCO数据集。当使用所提出的OHEM方法时,我们证明了FRCN性能的一致性和显著的改进。为了与之前的工作进行比较,预分类的结果也在VOC 2007列出来了。
实验步骤:我们所有的实验都使用VGG 16。在VOC07 trainval的训练中,我们使用第5节中的SGD参数,在使用额外的数据(07 12和07 12,见表3和表4)时,我们使用200k的小批量迭代,初始学习率为0.001,衰减步长为40k。在MS COCO上进行训练时,我们使用240k的小批量迭代,初始学习率为0.001,衰减步长为160k,epoch尺寸较大。
6.1、VOC 2007和2012的结果
表3显示,在VOC07上,OHEM将FRCN的mAP从67.2%提高到了69.9%(加上额外的数据,从70.0%提高到了74.6%)。在VOC12上,OHEM使mAP提高4.1分(从65.7%提高到69.8%)。通过额外的数据,我们实现了71.9%的mAP,而FRCN的mAP为68.4%,提高了3.5个点。有趣的是,不同类别的改进并不相同。瓶子、椅子和tvmonitor显示了更大的改进,这些改进在不同的PASCAL划分中是一致的。为什么这些类受益最大是一个有趣且悬而未决的问题。
6.2、MS COCO的结果
为了测试在更大和更具挑战性数据集上的性能,我们MS COCO在进行实验,并且报告数字从2015年test-dev评价服务器(表5)。在标准的COCO评价指标下,RFCN的AP值为19.7%%,OHME提升到22.6%。使用I o U geq 0.5 的重叠指标,OHEM对AP^{50} 提升了6.6个点。值得注意的是,在严格的COCO AP评价指标上,OHEM帮助中型目标的AP提高了4.9个点,这表明所提出的难样例挖掘方法在处理小型目标时是有用的。注意,有和没有OHEM的FRCN都是在MS COCO的训练集上训练的。
7、加入修饰
通过将OHEM应用于FRCN训练,我们已经证明了在检测精度方面的一致性提高。在本节中,我们将展示这些改进与最近提高目标检测精度的一些附加功能是正交的。给OHEM加入以下两项后在PASCAL VOC上产生最佳精度,在MS COCO上达到了很高的精度。
多尺度(M):采用SPPnet的多尺度策略(FRCN和MR-CNN均采用)。比例尺定义为图像最短边的大小。在训练中,一个尺度是随机选择的,而在测试时,推理在所有尺度上运行。对于VGG16网络,我们使用s∈{480,576,688,864,900}进行训练,测试时使用s∈{480,576,688,864,1000},最大维数上限为1000。选择比例和上限是由于GPU内存的限制。
迭代bounding box回归:我们采用迭代定位和边界框(bbox)投票方案。该网络评估每个建议的RoI,以获得评分和重新本地化的框R1。得分高的R1盒是重取核心并重新定位的,生成R2盒。在IoU阈值为0.3的R_F 上使用NMS来获得I o U geq 0.5 ,并且在I o U geq 0.5 的每个r_i 上执行权重投票,使用R_F 中和r_i 的IoU大于0.5的框。
7.1、VOC 2007和2012的结果
我们在表3及表4报告PASCAL VOC的结果。在VOC07上,FRCN加上上述添加,mAP达到72.4%,OHEM将其提高到75.1%,这是目前在此设置下的最高报告分数。在使用额外数据(07 12)时,OHEM实现了78.9%的mAP,超过了目前最先进的MR-CNN (78.2% mAP)。我们注意到MR-CNN在训练中使用选择性搜索和边缘框,而我们只使用选择性搜索框。我们的多尺度实现也不同,使用的尺度比MR-CNN少。在VOC 12(表4)上,我们的表现始终优于MR-CNN。当使用额外的数据时,我们得到了76.3%的最先进的mAP(MR-CNN的mAP为73.9%)。
消融研究:我们现在详细研究这两个添加的影响以及OHEM是否与它们互补,并报告表6中的分析。在训练和测试中使用多尺度时,baseline FRCN mAP从67.2%提高到68.6%(我们称之为M)。但是,请注意,在训练时使用它只有一个边际效益。迭代bbox回归(B)进一步将FRCN mAP提高到72.4%。但更重要的是,使用OHEM将其改进到75.1% mAP,这对于针对VOC07数据训练的方法来说是最先进的(见表3)。
7.2 MS COCO结果
MS COCOtest-dev 2015评估服务器结果见表5。采用多尺度,可将本方法的性能提高到标准COCO度量的24.4%和VOC法的44.4%。这再次显示了使用多尺度和OHEM的互补性。最后,我们使用整个MS COCO trainval集合对我们的方法进行了训练,进一步将性能提高到25.5% AP(和45.9% AP50)。在2015年的MS COCO检测挑战中,这种方法的一个变种获得了第四名。
8、结论
提出了一种在线难样本挖掘(OHEM)算法,这是一种训练基于区域的卷积网络检测器的简单有效的方法。通过自动选择难样例,OHEM消除了常用的几种启发式和超参数,从而简化了训练。我们进行了大量的实验分析,证明了该算法的有效性,从而提高了训练的收敛性和在标准基准上检测精度的一致性。我们还报告了最新的结果PASCAL VOC 2007和2012,当使用OHEM与其他正交添加。虽然在本文中我们使用了Fast R-CNN,但是OHEM可以用于训练任何基于区域的ConvNet检测器。我们的实验分析基于整体的检测精度,但是研究不同的训练方法对个体类别表现的影响将是一个有趣的未来方向。