论文阅读|目标检测之指出anchor-free和anchor-based本质区别的ATSS

论文相关信息

1.论文题目:Bridging the Gap Between Anchor-based and Anchor-free Detection via
Adaptive Training Sample Selection

2.发表时间:2019.12

3.文献地址:https://arxiv.org/abs/1912.02424

4.论文源码:https://github.com/sfzhang15/ATSS

摘要

随着FPN和Focal Loss的提出,anchor-free的检测器变得流行起来。本文首先指出了anchor-based和anchor-free检测器之间的本质区别在于如何定义正负训练样本,这也是导致anchor-based和anchor-free的性能差距的原因。如果他们在训练时对正负样本的定义相同,那么无论是使用边框还是点回归,他们的最终性能都无明显差别。这表明训练时如何选择正负样本对于当前的目标检测器来说是十分重要的。然后作者提出一个自适应训练样本选择方法(Adaptive Training Sample Selection (ATSS)),根据物体的统计特征来适应性的选择正负样本。这极大地提高了anchor-free和anchor-based 检测器的表现,并弥补了他们之间的差距。文章还讨论了图片的每个位置铺多个anchors来的必要性。ATSS能够提高SOTA检测器到50.7% AP,并且不会引入任何开销。

1 .介绍

现在目标检测器仍然以anchor-based为主,可分为一阶段二阶段的,他们都是首先在图片上平铺大量预设号的anchors,然后预测类别并一步步的精炼其位置,最终输出精炼好anchors作为检测结果。由于FPNFocal loss的出现,学者们开始关注anchor-free的检测器了,anchor-free的检测器不适用预设的anchor,可分为两种方式:一种是keypoint-based,即先找一些预设的点或学习得到的点,然后根据这些点生成边框,如CornerNet;还有一种是center-based,即CenterNet的方式,使用物体的中心或者一个区域作为正样本,然后从改正样本回归到物体边框边界的距离。

anchor-free的两种方式中,keypoint-based遵循标准关键点预测的工作流,和anchor-based的工作流不同。而center-based的方式和anchor-based的工作流相似,把点作为预设样本。以一阶段的anchor-based检测器RetinaNet和一阶段的anchor-free的检测器FCOS为例,他们有3大不同:

  1. 每个位置平铺的anchors数量不同。RetinaNet每个位置有几个anchor box,而FCOS每个位置只有一个anchor point。(FCOS的一个point等价于RetinaNet中一个anchor box的中心,所以这里叫做anchor point。)
  2. 正负样本的定义不同。RetinaNet使用的是样本和真实框的IoU判断正负,FCOS使用的是空间和尺度限制来选择样本。
  3. 回归的起始状态。RetinaNet从预设anchor box开始回归物体边框,而FCOS从anchor point开始定位物体。

如FCOS论文提到那样,FCOS的表现比RetinaNet好,本文将探讨是上面三个不同中哪些不同造成的这个性能差异。

从实验结果可以得知,是由于训练样本的正负定义方式不同造成的他们表现差异。因此如何判断训练样本的正负值得进一步学习,为此,本文提出了一个新的自适应训练样本选择机制(ATSS),可以基于物体的特征自动的选择正负训练样本。它弥补了anchor-based和anchor-free的表现差异。此外,通过一系列实验,回答了再要中提到的问题,即在图片的每个位置平铺多个anchors是不必要的

论文的主要贡献:

  • 指出anchor-based和anchor-free检测器之间的本质区别实际上是如何定义正和负训练样本。
  • 提出了一个适应性训练样本(ATSS)选择机制,根据物体特征来自动的选择正负训练样本。
  • 证明在图像上的每个位置平铺多个anchor来检测对象是一项无用的操作。
  • 在不引入任何开销情况下在MS COCO上达到了SOTA表现。

2 .相关工作

当前CNN-based的检测器分anchor-based和anchor-free,anchor-based分为two-stage和one-stage,anchor-free的氛围keypoint-based和center-based。这部分介绍的检测器都比较熟悉。

3 . 分析anchor-based 和anchor-free检测器的不同

为了让结论具有一般性,使用具有代表性的anchor-based检测器ReinaNet和anchor-free检测器FCOS来分析两类检测器的区别。这节将聚焦于最后的两个不同:正负样本的定义方式和回归的起始状态。还有一个不同即每个位置多少anchor留在下一节讨论。因此这里RitinaNet每个位置一个anchor,和FCOS相似。剩下的小节会介绍实验设置,避免不一致的实验,最终指出anchor-based和anchor-free的本质区别。

3.1. 实验设置

数据集。所有的实验都在MS COCO数据集上。遵循惯例,使用trainval135k中的115k图像训练,使用minival分支的所有5k来做验证分析。将模型提交到评估服务器在test-dev上得到最终表现。

训练细节。使用ImageNet上预训练的带有5个层级的FPN的ResNet-50作为骨干网,新增的层采用和ReinaNet一样的初始化方法。FPN上的每层上的每个位置有一个正方形的anchor,尺寸为8S,S为总的stride尺寸。图片的尺寸被resize到最小边800,最大边小于等于1333。优化器SGD,90K iterations,0.9momentum,0.0001weight decay和16的batch size。初始化学习率0.01,60k和80k的时候乘0.1。

推断细节。 推断时图片的尺寸和训练时一样的resize,然后传入整个网络前向传播输出预测框和预测类别。之后使用预设的分值0.05过滤掉背景边框,每个金字塔输出前1000个检测器。最后使用IoU阈值设置0.6(每个类都一样)的NMS来生成置信度前100的检测。

3.2. 去除不一致

将RetinaNet设置为每个位置一个anchor后——RetinaNet(#A=1),FCOS仍然比RetinaNet(#A=1)精度高很多, 37.1% vs. 32.5%。加上FCOS的一些改进使得这个差距变得更大,从37.1% 到37.8%。但是,这个差距主要是由于FCOS中使用的一些通用的改进,如heads中增加GroupNorm,使用GIoU作回归损失函数,限制ground-truth box中的正样本,映入center-ness分支,并未每个金字塔层增加一个可训练的标量。这些改进也可以应用到anchor-based的检测器中,因此他们不是造成anchor-based和anchor-free的核心差异。将这些应用到了RetinaNet(#A=1)以排除不一致设置,如表1所示。结果RetinaNet提高到了 37.0%,但是仍然和FCOS有0.8%的差距。这个差距是在排除所有无关不同情况下的,因此接下来可以探索他们的核心差异。

在这里插入图片描述

表1.RetinaNet和FCOS实现差异分析。#A指每个位置只有一个anchor。

3.3. 核心差异

在应用了通用的改进后,RetinaNet(#A=1)和FCOS只有两点不同:一是检测上的分类子任务,如训练正负样本的定义不同;二是回归子任务,如回归从anchor box还是anchor point开始。

在这里插入图片描述

图1.正负样本的定义。正样本数字为1,负样本数字为0。蓝色框、红色框和红色点分别对应真实物体,anchor box和anchor point。(a)RetinaNet根据IoU判断样本正负,同时在空间维度和尺度维度上判断。(b)FCOS首先在空间维度上找到候选的正样本,然后再根据尺度维度选择最终的正样本。

分类。RetinaNet根据IoU判定训练样本正负。如图1(a)所示,RetinaNet利用IoU同时在空间和尺度维度上直接选择最终的正样本。首先每个物体对应的anchors里IoU最高的为正样本,其次,anchor boxes的IoU大于 θ p \theta_p θp 也为正样本。然后将IoU小于 θ n \theta_n θn的标记为负样本,其余的忽略。如图1(b)所示FCOS使用空间和尺度限制来划分不同金字塔层的anchor point。首先考虑的处在真实框内的anchor point为候选正样本,然后基于每个金字塔层的定义的尺度范围来选择最终的正样本(FCOS有几个预设的超参数定义5个金字塔层的尺度范围,可以参考之前些的FCOS的笔记),没有被选择的anchor points则为负样本。两种不同的选择策略产生了不同的正样本和负样本。

在这里插入图片描述

表2.RetinaNet和FCOS在 MS COCO minival数据集上不同设置的分析。

如表2所示,对于RetinaNet,即Box列,当使用当使用空间和尺度限制替换IoU时,精度从 37.0% 提高到37.8%。对于FCOS,即Point列,如果使用IoU策略选择正样本,AP表现将从37.8% 下降到36.9%。这个结果证明了正负样本的定义方式是anchor-based和anchor-free检测器的本质区别

回归。在确定正负样本后,需要对对正样本回归,如图2(a)所示。当RetinaNet和FCOS采用相同的样本选择策略,得到的正/负样本一致,此时无论是从一个点还是从一个边框开始回归,最终的表现都没有明显的不同,如表2所示的37.0% vs. 36.9%和37.8% vs. 37.8%,这表明回归的起始状态是无影响的差异而不是核心差异。

在这里插入图片描述

图2.(a)蓝点和边框是物体的中心和边框,红点和边框是anchor的中心和边框。(b)RetinaNet根据4个偏移从anchor box回归。©FCOS根据到边框四边的距离从anchor point回归。

结论。一阶段的anchor-based的检测器和center-free检测器的核心区别在于如何定义正负训练样本,针对今天的物体检测来说十分重要,值得进一步学习。

4. 自适应训练样本选择方法

训练一个检测器首先需要定义正负样本来分类,然后对正样本回归。根据之前的分析,前者是关键,而FCOS就是改进了改环节,其引入一种新的定义正负样本的方式,这种方式比传统的基于IoU的表现更好。受此启发,作者深入研究了目标检测的一个基本问题:如何定义正负训练样本?并提出了提出一种自适应训练样本选择方法(ATSS)。和这些传统方法相比,ATSS几乎无超参数,对不同的设置都有鲁棒性。

4.1. 描述

之前的样本选择策略有一些敏感参数,如anchor-based检测器的IoU阈值和anchor-free检测器的尺度范围。真实框根据这些参数设置对应的规则来选择正样本,这种方式适用于大多数物体,但是一些outer objects(规则外的物体?)会被忽略。因此,不同的参数设置会有不同的结果。

ATSS方法则是根据物体的统计特征自动的划分正负样本,不需要任何超参数。下图算法1描述了ATSS在输入图片上的工作方式。对于图片上的每个真实框g,首先找出其候选的正样本,即对于每个金字塔层,选择k个中心和真实框中心的L2距离最近anchor boxes,假设有L层金字塔层,那么每个物体有L×k个候选正样本。之后计算候选正样本和真实框之间的IoU,然后统计这些IoU的均值和方差作为特征,采用均值和方差的和 t g = m g + v g t_g=m_g+v_g tg=mg+vg作为IoU阈值,大于IoU阈值且中心在物体内部的候选anchor才是正样本,其余的为负样本。(如果某个anchor同时被分配为多个真实框的正样本,那么选择IoU最高的。)

在这里插入图片描述

下面是对算法的解释。

基于anchor box和真实框中心的距离选择候选框。无论是RetinaNet还是FCOS,anchor box 的中心或者anchor point距离物体中心更近时,其IoU更大或者得到的检测质量更高,因此选用物体的中心。

使用均值和方差的和作为IoU阈值。IoU均值衡量了预设的anchor是否适应该物体,高的均值表示候选框anchor质量很高,如图3(a),低则表示质量低,如图3(b)。IoU方差衡量的是适合检测这个物体的金字塔层数。高方差代表有个特定金字塔层适合检测这个物体,均值加上方差后就能选择哪个金字塔层上的anchor,如图3(a)。低方差代表有多个金字塔层适合检测这个物体,均值加上方差后能选择这些层上的anchor,如图3(b)。因此,使用均值和方差的和能够自适应的根据物体特征选择足够数量的正样本。

限制正样本的中心在物体内部。anchor中心在物体外的是质量差的候选框,会由物体外的特征预测,不利于训练,因此要排除中心不在物体内部的anchor。

在这里插入图片描述

图3.ATSS的示意图。FPN每个level的候选框IoU。(a)一个IoU均值 m g m_g mg和方差 v g v_g vg较高的真实物体。(b)一个均值 m g m_g mg和方差 v g v_g vg较低的真实物体。

保证不同物体的公平。根据统计理论,16%的样本处于[ m g + v g , 1 m_g+v_g,1 mg+vg,1]的置信区间,虽然候选框的IoU不是正态分布,但是统计结果显示每个物体都有大约0.2*kL的正样本,这一数字和物体的尺度、长宽比例和位置无关,维持了不同物体间的相对公平性。相反,RetinaNet和FCOS则更倾向于检测大物体,大物体会有更多的正样本,存在不同物体间不公平的现象。

几乎没有超参数。该方法只有一个超参数k,而且因为方法对k不敏感,所以几乎可以被视为没有超参数。

4.2. 验证

Anchor-based RetinaNet。我们在RetinaNet(#A=1)中使用ATSS替代传统方法以验证该方法对anchor-based检测器的有效性。如表3所示,ATSS使RetinaNet整体表现都提升了,其中AP提高2.3%,AP50提高2.4%,AP75提高2.9%等等。这些提高主要是归因于模型针对每个物体的统计特征适应性的选择其正样本。这个提高只改变了样本的选取,无额外花销,所以是cost-free的。

Anchor-free FCOS。ATSS能以两种版本应用到FCOS中,即精简版和完整版。对于精简版,我们应用一些ATSS的思想到FCOS中,如替换其选择正样本的方式为本文提到的方式。即FCOS中将每个anchor points都视为真实框的候选样本,导致生成大量低质量的正样本。本文的方法则是对于每个真实物体,每个金字塔层只选择前k=9个候选样本作为正样本。精简版也叫center sampling版本,将FCOS的精度从37.8%提高到了38.6%,但是仍然有超参数。

完整版,也即ATSS,将FCOS的anchor points替换为正方形的anchor boxes来定义正负样本,尺度为8S,S为stride,然后还是和FCOS一样的回归的方式得到物体。如表3所示,大大提高了精度。而完整版性能最佳也说明ATSS比FCOS的样本选择方式更好。

在这里插入图片描述

表3.验证ATSS的有效性,ATSS和center sampling分别是完整版和精简版。

4.3. 分析

超参数k。分析不同超参数k的值对检测精度影响,结果表明太大太小都不好,中间最优,而且实际上k对结果影响不是很大,ATSS几乎无参数。

在这里插入图片描述

表4.不同超参数k的取值在MS COCO minival上的结果。

Anchor 尺寸。实验中使用的正方形anchor尺寸为8S,S是金字塔层的stride。实验表明,该方法对不同anchor尺寸有鲁棒性,影响不大。

在这里插入图片描述

表5.不同的anchor尺寸的设置,长宽比例1:1,即正方形。

4.4. 比较

在MS COCO test-dev子集合上和其它SOTA检测器的比较。实验时,和RetinaNet和FCOS一样使用了多尺度训练策略,在640-800间随机选择尺度作为图像的最小边来resize。池外,iteration改为180k,学习率减少的点改在120k和160k。其它设置和上述两个检测器一样。

如表8所示,该方法在使用ResNet-101时达到了43.6%AP,比所有其他使用相同骨干网的检测器都好。此外,换了更大的骨干网如ResNeXt-32x8d-101和ResNeXt-64x4d-101则精度进一步提高。实验还尝试了将ATSS和DCN结合。

在这里插入图片描述

4.5. 讨论

是否有必要在一个位置上平铺多个anchors呢?使用传统IoU方式判定样本正负的话有必要,因为RetinaNet原始版本9个anchor每个位置表现的就比RetinaNet(#A=1)好。如果使用的是ATSS,则没必要。因为只要正样本选择适当,每个位置多少个anchor结果都一样。

5. 结论

指出如何选择训练时的正负样本对于目标检测的训练是很关键的,一阶段的anchor-based检测器和center-based anchor-free的检测器的核心区别就是正负样本的选择方式。为此提出了ATSS,弥补了anchor-based和anchor-free检测器的差距,达到了SOTA,并表明在使用ATSS的情况下,每个位置平铺多个anchors没必要。

6. 参考

https://arxiv.org/abs/1912.02424

猜你喜欢

转载自blog.csdn.net/yanghao201607030101/article/details/113062630