论文地址:AABO: Adaptive Anchor Box Optimization for Object Detection via Bayesian Sub-sampling
大部分SOTA的目标检测系统主要采取anchor-based方法,anchor box在图像上被密集地提出,并训练网络来预测anchor box的位置偏移和分类置信度。现有系统预先定义anchor box的形状和大小,并使用特别的启发式调整来定义anchor的配置。然而,当采用一个新的数据集或是新的模型的时候,这不是最佳的或者甚至是错的。在这篇论文里,研究了目标检测anchor box自动优化问题。我们首先证明anchor box的数量,大小尺度,长宽比是一个合理的目标检测系统中重要的因素。通过仔细分析特征层次上已有的边界框模式,设计了一个灵活、紧凑的anchor配置的超参数空间。然后我们提出一个新的超参数优化方法AABO来为某个数据集确定更合适的anchor,将贝叶斯优化和子抽样方法相结合,实现了精确高效的anchor配置优化。实验证明我们提出方法在不同数据集和检测器上的有效性,在COCO、ADE和VG上分别实现了2.4%、1.6%和1.5%的mAP改进,通过优化anchor配置,最佳的anchors可以为SOTA检测器带来1.4%、2.4%的mAP改进,例如mask R-CNN从40.3%提高到42.3%,HTC检测器从46.8%提高到48.2%。
目标检测是许多计算机视觉任务的基础和核心问题,广泛应用于自动驾驶车辆[4]、监控摄像头[22]、人脸识别[2]等等。目标检测的目的是识别目标的位置和预测图像中相关的类标签。近年来,深度卷积神经网络在目标检测任务方面取得了显著进展[21,26,28,18]。在大部分基于深度学习的检测技术中,anchor box是最基础的部件,作为目标边界框的初始建议。具体的说,在特征图上均匀采样一组具有预定义尺度和纵横比的密集分布锚点,然后使用神经网络预测锚点的形状偏移量和位置偏移量以及分类置信度。 虽然锚的配置是神经网络相当关键的超参数,锚的设计总是遵循直接的策略,如手工制作或使用统计方法,如聚类。拿一些广泛使用的检测框架作为例子,Faster R-CNN[28]使用3个尺度(1282、2562、5122)和3个长宽比(1:1、1:2、2:1)的预定义锚定形状,YOLOv2[27]通过对边界盒的ground-truth进行k-means聚类来建模锚定形状。当检测器扩展到一个新的特定问题时,锚定配置必须手动修改以适应这个新域的特性和分布,这是困难和低效的,可能不是检测器的最佳。
虽然人工确定超参数是不合理的,但近年来超参数优化(HPO)问题得到了很大的发展,提出了大量的超参数优化方法。最有效的方法包括贝叶斯优化(BO)和Bandit-based的策略。BO按照三个步骤优化迭代:a)选择采集函数最大化的点;b)评估目标函数;c)在数据中加入新的观测值并重新训练模型,为在资源充足的情况下选择有前景的超参数提供了一种有效的方法。与BO不同,Bandit-based的提出是为有效地测量超参数的性能。其中,Hyperband[17] (HB)利用在更小的预算上的廉价评估获取函数的近似,内循环则进行Successive Halving算法,以确定n个随机采样配置中最好的。[10]中引入的Bayesian Optimization and Hyperband(BOHB)结合了这两种方法来处理HPO搜索空间很大的问题,被认为是一种非常先进的HPO方法。然而,BOHB不太适合我们的anchor优化问题,由于适用于小目标的锚点往往难以收敛,因此可以通过SuccesiveHalving算法来优化会提前停止和放弃最优的锚点配置。
在这篇论文,我们提出了一个自适应的anchor box优化方法AABO来自动的发现最佳的anchor配置,充分发挥了现在的目标检测器的潜力。具体来说,我们将说明锚点配置(例如锚点的数量、锚点的比例和高宽比)是目标检测器的关键因素,并展示适当的锚点盒可以提高目标检测系统的性能。然后证明锚点的形状和分布在不同的特征图上有明显的差异,所以在所有这些特征图中共享相同的锚点设置是不合理的。因此,在对已有数据集中边界框的分布和模式进行细致分析的基础上,设计了一个紧凑的、自适应的特征图金字塔搜索空间,充分利用搜索资源。在对锚点搜索空间进行优化后,提出了一种结合贝叶斯优化和子采样方法优点的超参数优化方法。和现存的HPO方法作比较,我们提出的方法使用子采样方法尽可能准确地来估计采集函数,并在配置有可能成为最佳配置的情况下,给予配置更多的预算,以确保有前景的配置不会过早被丢弃。 因此,我们的方法可以利用有限的计算资源,有效地为特定的数据集确定更合适的锚盒,并取得比以往的随机搜索和BOHB等HPO方法更好的性能。 我们进行了大量的实验来证明我们提出的方法的有效性。在多个基准测试中,可以观察到默认锚配置的显著改进。特别的,AABO只改变锚配置在coco,ADE和VG分别实现了2.4%,1.6%和1.5%的提升, 并持续改善SOTA检测器1.4% - 2.4%的性能, 如提高mask R-CNN[11]从40.3%到42.3%,HTC[7]从46.8%到48.2%的mAP。
Anchor-Based目标检测. 现代基于CNN的目标检测管道可以分为两类:一类是SSD[21]和YOLOv2[27],另一类是Faster R-CNN[28]和RFCN[9]。这些方法中的大多数都利用了大量密集分布的锚框。简而言之,那些现代的探测器将锚盒作为图像中物体的边界框的初始参考。这些方法中的锚点形状通常由人工选择[21,28,9]或单纯的聚类方法[27]确定。与传统方法不同的是,有几项研究致力于更有效地利用锚点[32,34]。MetaAnchor[32]引入了元学习来生成锚,它使用一个额外的神经网络来建模锚,并根据定制的先验来计算锚。然而,网络变得更加复杂。钟等人在训练中尝试通过基于梯度的方法来学习锚点形状,而连续放松可能并不合适。 超参数优化(HPO). 虽然深度学习在广泛的领域取得了巨大的成功,但深度学习模型的性能在很大程度上依赖于许多内部超参数的正确设置,这就需要对超参数优化(HPO)问题进行有效而实际的解决。贝叶斯优化(BO)已成功地应用于许多HPO工作中。例如,[30]利用BO搜索卷积神经网络的最优超参数,在CIFAR10上获得了最先进的性能。[23]在2016 AutoML挑战赛中通过BO方法自动找到合适的架构和超参数,在3个数据集上获胜。虽然BO方法在理论上可以收敛到最优配置,但他需要大量的资源,通常计算成本很高。与贝叶斯方法相比,基于随机搜索的基于band的配置评估方法,如Hyperband[17],可以动态分配资源,并利用[14]的SuccessiveHalving来阻止性能较差的配置。近年来,人们提出了一些将贝叶斯优化与Hyperband相结合的算法,如BOHB[10]算法,该算法既能获得较强的性能,又能快速收敛到最优配置。其他已被提出的非参数方法包括渐近贪心和波耳兹曼探索[31]。[5]给出了一个有效的非参数解,并证明了该策略的最优有效性。但是,这些先进的HPO方法存在BO计算量大、BOHB早停等问题。
如前所述,主流检测器,包括one-stage和two-stage检测器,都依赖锚点来提供对物体边界框的初步猜测。大多数检测器都是预先定义锚点,并在应用到新数据集时手动修改锚点。我们认为,这些人工方法很难找到最优的锚点配置,次优的锚点将阻碍检测器获得最优性能。为了证实这一假设,我们建立了两个初步实验。 默认的anchor不是最优的. 我们随机抽取100组不同的锚定设置,每组有3个尺度和3个比率。然后我们研究了这些锚定配置下的Faster-RCNN[28]的性能。结果如图1所示。可以看出,与默认的锚定设置(1282、2562、5122和3个长宽比1:1、1:2、2:1)相比,随机采样的锚定设置对检测器的性能有显著影响,证明了默认的anchor设定可能不太合适,并且需要对锚点进行优化。
anchor的影响比RPN的结构大. 特征金字塔网络[18] (FPN)引入了一种自顶向下的路径和横向连接来增强低层特征的语义表示,是现代检测器中广泛应用的特征融合方案。在本节中,我们使用BOHB[10]来搜索FPN中的RPN头架构以及锚点设置。RPN Head的搜索空间如图1所示。在附录中报告了搜索的配置,包括RPN头架构和锚设置。然后,我们分析了RPN Head架构和锚点设置各自的贡献,结果如表1所示。这里用平均平均精度来衡量性能,用mAP表示。 从表1的结果可以看出,在一定程度上,搜索合适的锚定配置比搜索RPN头架构能带来更多的性能提升。 因此,结论很明显,锚点设置对检测器的影响很大,适当的锚点设置比在RPN head的架构上进行神经结构搜索(NAS)能带来很大的改进。这些结论表明锚配置的优化是必要的和有益的,这促使我们将锚配置视为超参数,并针对我们的锚优化案例提出了一种更好的HPO方法。
既然我们已经决定搜索适当的锚配置来提高检测器在特定数据集上的性能,一个关键问题就是如何设计搜索空间。在初步分析中,我们构造了两个实验,大致确定了搜索空间,而不考虑边界盒的分布。在这一节中,我们将通过分析物体包围盒的分布特征来设计一个更紧密的搜索空间。 对于某一检测任务,我们发现锚点的分布满足如下一些特性和模式: 锚的上下限. 注意,锚标和锚比是根据锚的宽度和高度计算的,它们不是独立的。此外,我们发现锚的宽度和高度都限制在固定值内,由W和H表示,那么锚点长宽比和尺度必须满足以下约束条件: 由上面的公式,我们可以计算出锚点比率的上界和下界: 图2显示了COCO[20]数据集中边界框(蓝色的点)和锚点(黄色的曲线)的上界和下界的分布实例。黑色矩形内的区域为前期实验中使用的搜索空间。我们可以观察到存在一个超出上下边界的区域,因此不会出现边界框,而搜索算法仍然会在这里采样锚定。因此,有必要将搜索空间限制在上界和下界之内。 自适应特征图搜索空间. 然后我们研究了特征金字塔网络(FPN)[18]的不同特征图中锚点的分布情况,发现不同特征图中锚点的数量、尺度和比例存在很大差异,如图2右子图所示。感受野的低层特征图的边界框又多又大,感受野较大的高层特征图的边界框又少有小。 因此,我们为FPN[18]设计了一个自适应搜索空间,如图2左子图所示。5个红色矩形内的区域和锚点分布边界代表FPN中每个特征图的搜索空间。随着特征图更高和更小,锚点的数量减少,锚的尺度和比例也被限制在一个更小的范围内。 与初始的朴素搜索空间相比,我们为FPN[18]定义了更紧密、更自适应的搜索空间,如图3所示。实际上,新的特征图搜索空间比之前的搜索空间大得多,这使得选择更灵活的锚点,覆盖更多不同大小和形状的物体成为可能。此外,搜索空间的紧密性可以帮助HPO算法将有限的资源集中在更有意义的区域,避免在锚点分布稀疏的区域浪费资源。
如前所述,我们将锚点配置作为超参数,尝试使用HPO方法自动选择最佳的锚点设置。然而,现有的HPO方法并不适合解决我们的问题。对于随机搜索或网格搜索,不太可能找到一个好的解决方案,因为搜索空间对于这些方法来说太大了。对于Hyperband或BOHB,由于小目标的锚点收敛通常是很慢的,因此可以很早就放弃小目标的适当构型。为此,我们提出了一种将贝叶斯优化和子抽样相结合的新方法,以尽可能快地搜索出最优配置法。 具体来说,我们提出的方法利用BO来选择潜在的配置,然后根据已评估的配置来估计采集函数,然后最大化采集函数来识别有希望的新配置。同时,采用子抽样的方法确定哪些配置需要分配更多的预算,并在搜索空间中探索更多的配置。图4说明了我们提出方法的流程,总之,我们的方法可以获得良好的性能和更好的速度,并充分利用在以前预算基础上建立的模型。 贝叶斯优化. 贝叶斯优化是一种黑箱函数参数优化的序列设计策略。在超参数优化问题中,机器学习算法的验证性能被看作是一个函数f : χ → R,超参数x ∈ χ,超参数优化问题的目标是确定最优的x∗ ∈argminχf(x)。在大多数机器学习问题中,f(x)是不可观察的,因此贝叶斯优化方法将其视为一个具有先验的随机函数。然后对采集到的数据点进行采样,并根据采集到的数据点和评估更新先验,建立函数模型。然后选择新的数据点进行观测,重新构造模型函数。 在我们的方法中,我们使用TPE(Tree Parzen Estimator)作为核密度函数而不是p(f|D)进行建模,TPE包含两个概率密度函数:l(x)=p(y < α | x, D)和g(x)=p(y > α | x, D),其中D = {(x0, y0), . . . ,(xn, yn)}并且α = min{y0, . . . , yn},如BOHB中所示。注意存在一个严重的问题,Hyperband理论只保证返回所有配置中yi最小的最佳xi,而其他配置的质量可能很差。因此,较大的响应导致对l(x)的估计不准确,这在TPE中起着重要的作用。因此,我们需要提出一个有更好的响应序列的政策来解决这个问题。 子采样方法. 为了更好地解释在我们所提出的方法中所使用的子抽样方法,我们首先在本节中引入有K个arms的Multi-Armed Bandit问题。回想一下经典的multi-armed bandit问题的传统设置,使I = {1, 2, . . . , K}为给定的K>2的arms,考虑一个基于过去的观察结果的顺序程序来选择一个arms,使Nk为arm k的观察值数量,N =∑Kk=1 Nk 是观察值的总数量。观察到的Y(k)1, Y(k)2,…,1≤k≤K也称为来自arm k的奖励。在每一个arm,假设奖励{Y(k)t}t≥1 在给定期望E(Y(k)t) = µk和 µ∗ = max1≤k≤K µk是独立的同分布。为了简单起见,在不失一般性的前提下,假设最佳arm是唯一的,[25]和[5]中也假定了这一点。一个策略π = {πt}是一个随机变量序列πt ∈ {1, 2, . . . , K}表示在每次t = 1,2,…, N,选择arm πt。注意,πt只依赖于以前的t - 1观察值。一个好的策略设计的目标是尽量减少regret: 注意,对于一个数据驱动的策略πˆ,regret随N单调增加,因此,使RN的增长率最小成为后面要考虑的一个重要准则。然后,我们引入了一个有效的 multi-armed bandit problem的非参数解。首先,我们回顾了在[5]中引入的针对HPO情况的子样本均值比较(SMC)。构建配置集合I = {1, . . . , K},最小化资源b和参数cn是输入。输出是按顺序评估的配置序列πˆ1, . . . , πˆN ∈ I 。 首先,如果满足下列条件之一,则定义第k个配置优于第k’个配置: 在SMC中,r表示轮数,在第一轮中,由于没有关于配置的信息,所以对所有配置进行评估。如果r ≥2,我们定义了用最多预算进行评估的配置作为leader。如果第k个配置比leader更好,则会多一个预算b来评估它。否则,如果没有比leader更好的配置,leader将被重新评估。因此,在每一轮中,最多有K - 1个配置,至少有一个配置需要评估。设nr为第r轮开始时评估的总数,nrk是第k个配置对应的数。然后我们有: 算法1给出了子样本均值比较算法(SMC)。在SMC中,cn为非负单调阈值满足,cn = o(log n),并且当n -> ∞时,cn/ loglog n ->∞。在[5]中,为了效率他们设SMC的 。 注意,当整轮r结束时,评估的数目nr通常不等于N,即nr < n < nr+1。在这种情况下,从SMC在第r轮中选择的nr+1 − nr个配置中随机选择N - nr个配置。SMC的一个主要优点是不像基于UCB的程序,潜在的概率分布不需要指定。尽管如此,它仍然是渐近最优效率。理论结果的详细讨论参照[13]。
我们在三个目标检测数据集(COCO 2017 [20], Visual Genome(VG)[16], 和 ADE [35].)上进行了实验来评估我们提出的AABO方法的性能。COCO是一个通用的对象检测数据集,有80个对象类,包含118K个训练图像(train)、5K个验证图像(val)和20K个未注释测试图像(test-dev)。 VG和ADE是两个具有数千个对象类的大型对象检测基准测试。对于COCO,我们使用train进行训练,val进行测试。对于VG,由于注释不一致,我们使用release v1.4和synset[29]代替类别的原始名称。具体来说,我们考虑了包含不同目标类的两个集合:VG1000和VG3000,分别有1000个最频繁类和3000个最频繁类。在VG1000和VG3000中,我们使用88K图像进行训练,5K图像进行测试,按照[8,15]。对于ADE,我们考虑445个类,使用20K图像进行训练,使用1K图像进行测试,按照[8,15]。此外,ADE的标签作为分割掩模给出,因此在训练之前我们首先将所有实例的标签转换为边界框。 至于评估,检测任务的结果采用标准coco指标评估,包括意味着平均精度(mAP)在iou阈值从0.5到0.95(区间0.05)和AP50,AP75, APS, APM和APL,分别专注于小尺寸的对象(32 x32-),中等大小(32x32~96x96)和大尺寸(96 x 96+)。 在锚配置搜索,我们列举锚配置并且训练Faster-RCNN[28] (带有FPN[18]) 使用采样锚配置,然后按照我们之前提出的方法比较这些模型的性能(使用mAP作为评价指标)储备更好锚配置和阻止差的配置。搜索空间是如之前介绍的特征图搜索空间。所有实验都在4台有8张Tesla V100 GPU服务器上进行,使用pytorch框架。使用ImageNet[29]上预训练的ResNet-50[12]作为共享骨干网络。我们使用SGD(momentum=0.9),batchsize=64,epochs=12,初始化学习率为0.02,训练期间将学习率衰减0.1倍两次。
我们首先在3个大规模检测数据集:COCO [20]、VG[16] (包括VG1000和VG3000)和ADE[35]上评估AABO的有效性。我们使用Faster-RCNN[28]结合FPN[18]作为检测器,基线模型为FPN,默认锚定配置。结果如表2所示,附录中报道了AABO搜索出的最佳锚点。 很明显,在所有3个数据集中,AABO优于使用默认的锚点设置的Faster-RCNN。具体来说,AABO在COCO上改进了2.4%的mAP,在VG1000上改进了1.5%,在VG3000上改进了0.5%,在ADE上改进了1.6%。结果表明,在常用检测器中使用的预定义锚不是最优的。将锚定配置视为超参数,使用AABO对其进行优化,可以帮助确定更好的锚定设置,在不增加网络复杂度的情况下提高检测器的性能。 值得注意的是,搜索的锚提高了所有AP指标,而APL的改进总是比APS和APM更显著:在COCO上,AABO使APL提高了5%,在VG1000上提高了2.5%,在VG3000上提高了1.1%,在ADE上提高了1.5%。这些结果表明,由AABO确定的锚定配置能更好地集中于所有对象,尤其是较大的对象。我们还可以发现,AABO对于像VG3000这样的大型目标检测数据集特别有用。我们推测,这是因为所搜索的锚可以更好地捕捉到大量类别中不同大小和形状的对象。
在通过AABO搜索出最优锚定配置后,我们将其应用到其他几个骨干和检测器上,以研究锚定设置的泛化特性。对于骨干网络,我们改变resnet-50为resnet-101和resnext-101,也采用FPN,其他条件不变。对于检测器,我们在几个最先进的检测器上应用我们搜索的锚定设置:a) Mask RCNN [11], b) RetinaNet[19],这是一个单级检测器,c) DCNv2[36],和d)混合任务级联(HTC)[7],具有不同的骨干:ResNet-101和ResNeXt-101。所有的实验都是在coco上进行的。 结果见表3。我们可以看到,最优的锚定可以持续地提高SOTA检测器的性能,无论是one-stage方法还是two-stage方法。具体来说,最优的锚对ResNet-101的FPN mAP改进2.1%,对ResNeXt-101的FPN mAP改进1.9%,对Mask RCNN的改进2.0%,对RetinaNet的改进1.4%,对DCNv2的改进2.4%,对HTC的改进1.4%。结果表明,我们的最优锚可广泛适用于不同的网络骨干和SOTA检测算法,包括one0stage和two-stage检测器。我们还在COCO test-dev上对这些优化后的SOTA检测器进行了评估,结果在附录中报告。val和test-dev上的性能改进是一致的。
与其他锚初始化方法进行比较. 在本节中,我们将AABO与几种现有的锚点初始化方法进行比较:a)预定义锚点设置,这在大多数现代探测器中使用。b)使用k-means获取集群并将其作为默认锚点,YOLOv2[27]使用了这一方法。c)使用随机搜索确定锚点。d) AABO联合Hyperband[17]确定锚点。e)采用AABO(结合子采样)确定锚点。在所有这些方法中,后三种方法使用HPO方法自动选择锚框,而a)和b)使用手工制作和k-means等方法,结果如表4所示。 在所有锚点初始化方法中,我们提出的方法能显著提高性能,相比于使用默认anchor,提高了2.4%,而其他方法,包括统计方法和以前的HPO方法的改进则不那么显著。结果表明,广泛使用的锚初始化方法可能是次优的,而AABO可以充分利用先进的检测系统的能力。 与其他HPO方法的比较. 如表5所示,我们提出的方法可以在更少的试验中找到更好的锚定配置,并且可以显著提高检测器的性能:使用单个搜索空间的情况下,AABO融合HB和SS分别将FPN的mAP从36.4%提升到37.8和38.3%,然而随机搜索只从36.4%增加到37.2%,。使用基于特征图的搜索空间,ABO融合HB和SS分别将FPN的mAP从36.4%提升到38.2和38.8%,然而由于较大且灵活的搜索空间,随机搜索收敛失败。结果显示了我们提出方法的有效性和高效率。 与其他的anchor优化方法的比较. 我们还将AABO与一些以前的锚优化方法如[34]和MetaAnchor[32]进行了比较。如表6所示,这些方法都能提高检测器的性能,而我们的方法在Faster-RCNN上提高了2.4%,在RetinaNet上提高了1.4%,其他两种方法仅提高了1.0%,这说明了我们提出的AABO的优越性。
在本节中,我们研究了在AABO中使用的所有组件的效果:a)将锚点设置作为超参数,然后使用HPO方法自动搜索它们。b)使用贝叶斯优化方法。c)采用分段抽样法确定预留锚。d) feature - maps -wised搜索空间。 如表7所示,使用随机搜索等HPO方法对锚点进行优化可以带来0.8%的性能提升,说明默认的锚点不是最优的。在单一搜索空间(非feature-map-wised)下,AABO与HB结合带来1.4%的mAP改进,AABO与SS结合带来1.9%的mAP改进,体现了BO的优势和采集函数估计的准确性。此外,我们的feature-map-wised搜索空间紧凑、适应性强,可以保证在有限的计算资源下搜索出更好的锚点,并使mAP提高0.5%左右。我们的AABO方法总体上可以使mAP增加2.4%。
在这项工作中,我们提出了AABO,一种自适应锚盒优化方法,用于目标检测通过贝叶斯子采样,其中最优锚配置对于特定的数据集和检测器自动确定,无需手动调整。我们证明,在多个数据集上,AABO在流行的SOTA检测器上都优于手动调整方法和HPO方法,这表明锚定配置在对象检测框架中扮演着重要的角色,我们提出的方法可以帮助更有效地开发检测器的潜力。
