标题:Bridging the Gap Between Anchor-Based and Anchor-Free Detection via Adaptive Training Sample Selection
会议:CVPR2020
论文地址:https://ieeexplore.ieee.org/document/9156746/
通过阅读这篇文章,可以对目标检测算法中正负样本分配这一环节有更深刻的理解。ATSS基于FCOS对其Bbox Assigner规则进行改进,因此需要先理解FCOS算法。虽然依然存在一个超参数topk,但是文中通过实验验证了该超参数的鲁棒性,可以认为该算法是hyperparameter-free的。文章的创新点其实就一个ATSS算法,算法理解起来也不难,但是实验十分充足,各个环节层层递进,读起来很舒服。
目标检测多年来一直以anchor-based检测器为主。最近,由于FPN和Focal Loss的提出,anchor-free检测器正在成为热门。本文首先指出anchor-based和anchor-free检测的本质区别在如何定义正负训练样本,这也是导致它们性能差异的原因。如果在训练时采用相同的正负样本定义,它们最终的性能将没有明显的差异,无论从框还是从点进行回归。这说明如何选取正负训练样本对当前的目标检测器来说是十分重要的。然后,我们提出自适应训练样本选择(Adaptive Training Sample Selection,ATSS),根据目标的统计特征自动选择正负样本。它显著提高了anchor-based和anchor-free检测器的性能,并缩小了它们之间的差距。最后,我们讨论了在图像上的每个位置铺设多个锚框来检测目标的必要性。在COCO上进行的大量实验支持了上述分析和结论。通过ATSS,我们大幅提高了SOTA检测器的性能,达到了50.7%AP,并且没有引入任何额外开销。
随着CNN的发展,目标检测基本以anchor-based检测器为主,尤其是两阶段模型,仍然保持着SOTA。由于FPN和Focal Loss的出现,最近的学术正聚焦于anchor-free检测器。anchor-free检测器不需要预定义锚框,通过两种方式直接找到目标。第一种是先定位几个pre-defined或者self-learned的关键点,然后再约束目标的空间范围,称之为keypoint-based方法。另一种是先利用目标的中心点或中心区域来定义正样本,然后预测它们到目标4个边界的距离,称之为center-based方法。这些anchor-free检测器能够消除与锚框相关的超参数,并取得与anchor-based检测器相当的性能,更具有泛化潜力。
在这两种anchor-free检测器中,keypoint-based方法沿用了标准关键点估计的pipeline,与anchor-based检测器不同。而center-based检测器和anchor-based检测器很像,只不过是把点当作预设样本,取代了锚框。以单阶段anchor-based检测器Retinanet和center-based的anchor-free检测器FCOS为例,它们的不同之处主要有三个:①每个位置铺设的锚框数量。RetinaNet在每个位置铺设多个锚框,而FCOS每个位置只铺设一个锚点(FCOS中的一个点相当于RetinaNet中一个锚框的中心,所以我们称之为锚点。一对锚点和锚框与待分类和回归的特征图上的同一位置相关联)。②正负样本定义不同。RetinaNet采用IoU来区分正负样本,而FCOS空间和尺度限制来选择样本。③回归的起始状态。RetinaNet是从预设的锚框回归到目标的边界框,而FCOS是从锚点来定位目标。anchor-free的FCOS比anchor-based的RetinaNet取得了更好的性能,因此这3个差异中,哪一个是造成性能差距的主要因素就很值得研究。
本文以公平的方式研究它们之间的差异,我们严格排除这两种方法的所有实现区别。从实验结果可以得出,这两种方法的本质区别在于正负训练样本的定义,从而导致了它们之间的性能差距。如果在训练过程中选择相同的正负样本,无论是从一个框还是从一个点回归,最后的表现都没有明显的差距。因此,如何选取正负训练样本值得进一步研究。受此启发,我们提出一种新的自适应训练样本选择算法(Adaptive Training Sample Selection,ATSS),根据目标特征自动选择正负样本。它弥补了anchor-based和anchor-free检测器之间的差距。此外,通过一系列的实验可以得出结论:在图像上的每个位置铺设多个锚框来检测目标不是必要的。本文的主要贡献如下:
CNN-based目标检测由anchor-based和anchor-free检测器组成,前者可以分为two-stage方法和one-stage方法,后者可以分为keypoint-based方法和center-based方法。
两阶段anchor-based方法仍然是SOTA,而单阶段anchor-based方法可以以更快地推理速度取得与其十分接近的性能。
回顾了一些keypoint-based和center-based方法的核心思想。
不失一般性,使用具有代表性的anchor-based的RetinaNet和anchor-free的FCOS来剖析二者的差异。本节关注后两个差异:正负样本定义和起始回归状态。剩下的一个区别:每个位置铺设的锚框数量,将在后续章节讨论。因此,和FCOS类似,我们只为RetinaNet在每个位置铺设一个方形锚框。
数据集是COCO,训练阶段和推理阶段的具体细节可参考原文。
把每个位置只有一个方形锚框的anchor-based检测器RetinaNet记为RetinaNet(#A=1),它与anchor-free检测器FCOS几乎一样。然而,FCOS比RetinaNet(#A=1)性能要超出很多(37.1% vs. 32.5%)。而且,FCOS还做了很多改进,包括将中心性移到回归分支,使用GIoU损失函数和根据相应的步长归一化回归目标。这些改进进一步提高了FCOS的性能(37.1% to 37.8%,这个结果是不包含本文4.2节引入的改进中心采样的),使上述差距变得更大了。然而,anchor-based检测器(32.5%)和anchor-free检测器(37.8%)之间的AP差距有一部分是来自FCOS中提出或使用的一些通用改进,比如:在head增加GroupNorm、使用GIOU回归损失函数、在真值框中限制正样本、引入中心性分支和为每一层特征金字塔增加一个可训练的标量。这些改进也可以用于anchor-based检测器,因此它们不是anchor-based和anchor-free方法的本质区别。我们将它们逐一应用到RetinaNet(#A=1),以排除这些实现上的不一致。如表1所示,这些无关差异使得RetinaNet提升至37.0%,与FCOS仍有0.8%的差距。至此,在消除所有无关差异后,我们可以十分公平地探究anchor-based和anchor-free检测器之间的本质区别。
在使用这些通用改进后,anchor-based的RetinaNet(#A=1)和anchor-free的FCOS就只有2个区别了。一个是关于检测中的分类子任务,也就是定义正负样本的方式。另一个是关于回归子任务,也就是从锚框还是锚点开始回归。
分类。 如图1a所示,RetinaNet利用IoU将不同金字塔层的锚框分为正样本和负样本。首先,把每个目标最好的锚框和 I o U > θ p IoU>\theta_p IoU>θp的锚框标记为正样本,然后将 I o U < θ n IoU<\theta_n IoU<θn的锚框标记为负样本,最后在训练时忽略其它锚框。如图1b所示,FCOS利用空间和尺度约束来划分不同金字塔层的锚框。首先,将真值框内的锚点作为候选正样本,然后根据每个金字塔层定义的尺度范围(FCOS中有几个预设的超参数用于定义5个金字塔层的尺度范围)从候选正样本中选择最终的正样本,最后将未选择的锚点作为负样本。
如图1所示,FCOS首先利用空间约束在空间维度上寻找候选正样本,然后利用尺度约束在尺度维度上选择最终正样本。相比之下,RetinaNet利用IoU同时在空间和尺度维度上直接选择最终的正样本。这两种不同的样本选择策略会产生不同的正负样本。如表2所示,第1列表明用空间和尺度约束策略代替IoU岑略可以把RetinaNet(#A=1)的AP性能从37.0%提高到37.8%,第2列表明使用IoU策略选择正样本会使FCOS的AP性能从37.8%下降到36.9%。这些结果表明正负样本的定义是anchor-based和anchor-free检测器的本质区别。
回归。 如图2a所示,在定义正负样本后,要从正样本回归到目标的位置。如图2b所示,RetinaNet用锚框和目标框之间的4个偏置从锚框进行回归;如图2c所示,FCOS用锚点到目标框边界的4个距离值从锚点进行回归。这表明对于一个正样本来说,RetinaNet的回归起始状态是一个框,而FCOS是一个点。然而,如表2的第1行和第2行所示,当RetinaNet和FCOS采用相同的样本选择策略,使其具有一致的正负样本时,无论从一个点开始回归还是从一个框开始回归,最终的性能并没有明显的差异。这些结果表明,回归起始状态是无关差异,而不是本质区别。
结论。 根据这些公平进行的实验,我们指出one-stage的anchor-based检测器和center-based的anchor-free检测器的本质区别实际上是如何定义正负训练样本,这对于当前的目标检测很重要,值得进一步研究。
在训练目标检测器时,首先需要定义正负样本进行分类,然后使用正样本进行回归。根据前面的分析,前者至关重要,anchor-free检测器FCOS改进了这一步。它引入了一种新的定义正负样本的方式,获得了比传统IoU-based策略更好的性能。受此启发,我们深入研究了目标检测中最基本的问题:如何定义正负训练样本,并提出了自适应训练样本选择(ATSS)。与传统策略相比,我们的方法几乎没有超参数,且对不同设置具有鲁棒性。
以往的样本选择策略存在一些敏感的超参数,如anchor-based检测器的IoU阈值和anchor-free检测器的尺度范围。在设定这些超参数之后,所有的真值框都必须基于固定的规则来选择其正样本,这些正样本适用于大多数目标,但也有一些外部的目标会被忽略。因此,这些超参数设置的不同将产生截然不同的结果。
为此,我们提出了ATSS方法,该方法根据目标的统计特征自动划分正负样本,几乎不需要任何超参数。算法1描述了上述方法是如何对一张输入图像工作的。对于图像上的每一个真值框 g g g,我们首先找到它的候选正样本。如第3-6行所示,对于每一个金字塔层,我们选择与 g g g的中心L2距离最近的 k k k个锚框。假设一共有 L L L个特征金字塔层,那么真值框 g g g将有 k × L k × L k×L个候选正样本。然后,在第7行我们计算这些候选框和真值框 g g g之间的IoU,记作 D g D_g Dg,在第8和第9行会计算 D g D_g Dg的均值和标准差,记作 m g m_g mg和 v g v_g vg。在第10行,根据这些统计值,真值框 g g g的IoU阈值通过 t g = m g + v g t_g=m_g+v_g tg=mg+vg得到。最后,在第11-15行,我们选择IoU大于或等于阈值 t g t_g tg的候选框作为最后的正样本。注意,在第12行,我们还将正样本的中心限制在真值框内。此外,如果一个锚框被分配到了多个真值框,那么将会选择IoU值最高的那个作为真值框。剩下的就是负样本。下面解释我们方法背后的一些动机。
根据锚框和目标中心的距离来选择候选框。 在RetinaNet中,锚框中心越靠近目标中心IoU越大。在FCOS中,越靠近目标中心的锚点将产生更高质量的检测。因此,越靠近目标中心的锚框就是越好的候选框。
使用均值和标准差的和作为IoU阈值。 目标的IoU均值 m g m_g mg衡量了该目标的预设锚框的适配性。如图3a所示,当 m g m_g mg较高时,表明该目标具有更高质量的候选框,IoU阈值应该更高。相反,如图3b所示,当 m g m_g mg较低时,其候选框大都是低质量的,IoU阈值应该更低。此外,目标的IoU标准差 v g v_g vg衡量了哪些层更适合检测该目标。如图3a所示,一个高的 v g v_g vg意味着有一个专门适合该目标的金字塔层,将 v g v_g vg加到 m g m_g mg中得到一个高阈值来从该层选择正样本。如图3b所示,一个低的 v g v_g vg意味着有几个适合该目标的金字塔层,将 v g v_g vg加到 m g m_g mg中得到一个低阈值来从这些层选择合适的正样本。使用均值 m g m_g mg和标准差 v g v_g vg的和作为IoU阈值 t g t_g tg,可以根据目标的统计特征自适应地为每个目标从合适的金字塔层选择足够的正样本。
将正样本的中心限制在目标内。 锚框中心在目标之外的话就是一个不好的候选框,会被目标之外的特征预测,不利于训练,应该排除掉。
保持不同目标之间的平等性。 根据统计理论,理论上会有大约16%的样本处于置信区间 [ m g + v g , 1 ] [m_g+v_g,1] [mg+vg,1]内。尽管候选框的IoU不是标准的正态分布,但统计结果表明,每个目标都有大约 0.2 ∗ k L 0.2*kL 0.2∗kL的正样本,并且是尺度、纵横比和位置不变的。相反,RetinaNet和FCOS的策略会倾向使较大目标有更多正样本,导致不同目标之间的不平等。
保持几乎没有超参数。 我们的方法仅有一个超参数 k k k。后续的实验证明,其对 k k k的变化很不敏感,因此ATSS可认为几乎是无超参数的。
ATSS可以大幅提高RetinaNet(#A=1)的性能。对于FCOS,有两种方式应用ATSS,lite version和full version。前者为每个真值框的每个金字塔层选择 t o p k = 9 top k=9 topk=9个候选框,后者使FCOS中的锚点变成 8 S 8S 8S( S S S是总步长)尺度的锚框来定义正负样本。这两个方式在空间维度上选择的候选框相同,但在尺度维度上选择最终正样本的方式不同。二者都能提升性能,后者提升更大。具体的实验结论可以参照原文。
利用ATSS训练目标检测器只涉及一个超参数 k k k和一个与锚框相关的设置。
唯一的超参数 k k k是十分鲁棒的,ATSS几乎可以认为是无超参数的。当然,太大的 k k k值会导致大量低质量候选框,太小的 k k k则会导致统计量不稳定。具体的实验结论可以参照原文。
对于不同的锚框尺寸,本文的方法依然鲁棒。具体的实验结论可以参照原文。
之前基于RetinaNet的实验仅在每个位置铺设一个锚框。anchor-based和anchor-free检测器还有一个区别没有探究:每个位置铺设的锚框数量。实际上,原始的RetinaNet在每个位置铺设了9(3尺度 × 3纵横比)个锚框,记为RetinaNet(#A=9)。此外,表1中的那些通用改进也可以用于RetinaNet(#A=9),使AP性能从36.3%提高到38.4%。改进后的RetinaNet(#A=9)比RetinaNet(#A=1)性能更好,也就是表7中的38.4%和表1中的37.0%。这些结果表明,在传统的IoU-based样本选择策略下,为每个位置铺设更多的锚框是有效的。
然而,使用本文提出的方法后会得出相反的结论。使用ATSS后RetinaNet(#A=9)和RetinaNet(#A=1)性能相近,如表7第3行和第6行所示。此外,当我们将锚框尺寸和纵横比从3变为1时,结果几乎不变,如表7第4行和第5行所示。也就是说,只要正样本选取得当,无论每个位置铺设多少锚框,结果都是一样的。我们认为,在我们提出的方法下,对每个位置铺设多个锚框是无用的操作,这需要进一步研究来探究其真正作用。
在这项工作中,我们指出one-stage的anchor-based检测器和center-based的anchor-free检测器的本质区别实际上是正负训练样本的定义。这表明在目标检测训练过程中如何选取正负样本是至关重要的。受此启发,我们深入研究了这一基本问题,提出了自适应训练样本选择,根据目标的统计特征自动划分正负训练样本,从而弥补anchor-based和anchor-free检测器之间的差距。我们也讨论了在每个位置铺设多个锚框的必要性,并表明在目前情况下这可能不是一个有用的操作。在具有挑战性的基准测试MS COCO上的大量实验表明,所提出的方法可以在不引入任何额外开销的情况下实现SOTA的性能。