Abstract
最近(2020年的文章),由于 FPN 和 Focal Loss 的提出,anchor-free 检测器变得流行起来。本文首先指出:anchor-based 和 anchor-free 检测的本质区别实际上是如何定义正负训练样本,这导致了它们之间的性能差距。如果他们在训练过程中采用相同的正负样本定义,无论是从一个框回归还是从一个点回归,最终的表现都没有明显差异。这表明如何选择正负训练样本对于当前的目标检测器很重要。然后,我们提出了一种自适应训练样本选择(ATSS)来根据对象的统计特征自动选择正样本和负样本。它显着提高了anchor-based 和 anchor-free 检测器的性能,并弥合了它们之间的差距。最后,我们讨论了在图像上的每个位置平铺多个锚点以检测对象的必要性。(Finally, we discuss the necessity of tiling multiple anchors per location on the image to detect objects,这句还不太明白,继续读下去)
Introduction
近年来,目标检测一直以anchor-based为主,一阶方法例如SSD,Focal Loss,二阶方法例如Faster R-CNN,R-FCN。(举例很简单,体现一种自信)。他们都在图上tile(铺砖,地砖,平铺,这个词对anchor很形象啊)很多anchor,然后预测anchor的类别,然后refine这些anchor的坐标一次或多次,最后将这些细化的锚点作为检测结果输出。由于两阶段方法比一阶段方法对锚点进行了多次细化,因此前者具有更准确的结果,而后者具有更高的计算效率。但是State-of-the-art results 通常还是anchor-based的模型。
最近,由于FPN和Focal Loss的出现,学术研究关注方向已经转向anchor-free检测器。anchor-free检测器有两种方法来检测:
- 基于关键点的(keypoint-based)。首先定位几个预定义或自学的关键点,然后确定对象的空间范围边界,例如CornerNet,Bottom-up object detection by grouping extreme and center points。
- 基于中心点的(center-based)。使用对象的中心点或区域来定义正值,然后预测从正数到对象边界的四个距离,例如FCOS,Foveabox。
这些无锚检测器能够消除那些与锚相关的超参数(are able to eliminate those hyperparameters related to anchors),并取得了与基于锚的检测器相似的性能,使其在泛化能力方面更具潜力。
在上面两种方法中,keypoint-based方法遵循标准关键点估计流程,这与基于锚的检测器不同。而center-based方法与anchor-based检测方法相似。只是将中心点当作样本点 instead of anchor boxes。以一阶anchor-based方法RetinaNet和center-based anchor-free的FCOS为例,他们有三个主要区别:
- 每个位置的anchor数量,RetinaNet 每个位置平铺多个锚框,而 FCOS 每个位置平铺一个锚点。(FCOS 中的点等于 RetinaNet 中锚框的中心,因此我们称其为锚点)
- 正负样本的定义不同。RetinaNet采用IoU来获得正负样本,而FCOS 利用空间和尺度约束(spatial and scale constraints)来选择样本。
- 回归起始状态(egression starting status),RetinaNet 从预设的锚框回归对象边界框,而 FCOS 从锚点定位对象。正如( FCOS: fully convolutional one-stage object detection)中讲的,无锚的 FCOS 比基于锚的 RetinaNet 实现了更好的性能,值得研究这三个差异中哪一个是影响性能差距的基本因素。
本文通过一系列公平实验,调查得到结论:这两种方法的本质区别在于正负训练样本的定义,这导致了它们之间的性能差距。如果他们在训练过程中选择相同的正负样本,无论是从一个框回归还是从一个点回归,最终的表现都没有明显的差距。因此,如何选择正负训练样本值得进一步研究。受此启发,我们提出了一种新的自适应训练样本选择(ATSS)来根据对象特征自动选择正样本和负样本。它弥合了基于锚和无锚检测器之间的差距。(其实是提高了anchor-based模型的速度吧?)此外,通过一系列实验,可以得出结论,不需要在图像上的每个位置平铺多个锚点来检测对象。 在MS COCO上取得了AP 50.7%,不会引入任何开销。本文主要贡献:
- 指出anchor-based和anchor-free检测器的本质区别实际上是如何定义正负训练样本。
- 提出自适应训练样本选择,根据对象的统计特征自动选择正负训练样本。
- 证明在图像上的每个位置平铺多个锚点以检测对象是无用的操作。
- 在 MS COCO 上实现最先进的性能,而不会引入任何额外的开销。
(我感觉3和4是引申出来的结论,主要的还是1和2)
Related Work
当前基于 CNN 的目标检测包括基于锚点和无锚点的检测器。前者可分为两阶段和一阶段方法,而后者则分为基于关键点和基于中心的方法。(这篇文章读着真通顺啊)
Anchor-based Detector
Two-stage method
Faster R-CNN的出现(The emergence of Faster R-CNN)确立了两阶段 anchor-based 的检测器的主导地位。Faster R-CNN由一个单独的区域提议网络 (RPN) 和一个区域预测网络(R-CNN)(Rich feature hierarchies for accurate object detection and semantic segmentation, Fast R-CNN)组成,用于检测对象。之后,有很多算法改进其性能,包括架构重新设计和改革(A unified multi-scale deep convolutional neural network for fast object detection[ECCV, 2016], R-FCN: object detection via region-based fully convolutional networks[NIPS, 2016], Cascade R-CNN: delving into high quality object detection[CVPR, 2018], ME R-CNN: multi-expert region-based CNN for object detection[ ICCV, 2017],Scale-aware trident networks for object detection[ICCV 2019]),上下文和注意力机制(attention mechanism)(Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks[CVPR,2016],Contextual priming and feedback for faster R-CNN[ECCV, 2016], Object detection using scene-level context and instance-level relationships[CVPR, 2018],ontext refinement for object detection[ECCV, 2018],Thundernet: Towards realtime generic object detection[ICCV, 2019]),多尺度训练和测试(An analysis of scale invariance in object detection - SNIP[n analysis of scale invariance in object detection - SNIP],Autofocus: Efficient multi-scale inference[ICCV, 2019]),训练策略和损失函数(G-CNN: an iterative grid based object detector [CVPR,2016],Training region-based object detectors with online hard example mining[CVPR, 2016],A-fast-rcnn: Hard positive generation via adversary for object detection[CVPR, 2017],ounding box regression with uncertainty for accurate object detection[CVPR, 2019]), 特征融合与增强(Hypernet: Towards accurate region proposal generation and joint object detection[CVPR, 2016], Feature pyramid networks for object detection[CVPR, 2017]),更好的提议(proposal )和平衡(Learning to rank proposals for object detection[ICCV,2019],Libra R-CNN: towards balanced learning for object detection[CVPR, 2019]),现在最好的方法依然是两阶段anchor-based的标准检测基准(standard detection benchmarks)。
One-stage method
随着SSD的出现(With the advent of SSD),一阶段anchor-based方法才收到关注,because of计算效率很高。SSD 在CNN(based on VGG)内的多尺度层上展开(spread out)锚框,以直接预测对象类别和锚框偏移。此后(Thereafter),为了提高其性能(boost its performance ),很多工作开始展开。比如,融合来自不同层的上下文信息(RON: reverse connection with objectness prior networks for object detection[CVPR, 2017],DSSD : Deconvolutional single shot detector[CoRR, 2017],Scale-transferrable object detection[CVPR, 2018]),从头开始训练(training from scratch)(DSOD: learning deeply supervised object detectors from scratch[ICCV, 2017],Scratchdet: Exploring to train single-shot object detectors from scratch[CoRR,2018]),引入新的损失函数(Focal loss for dense object detection[ICCV, 2017],Towards accurate one-stage object detection with ap-loss[CVPR, 2019]),锚细化和匹配( anchor refinement and matching)(Single-shot refinement neural network for object detection[CVPR, 2018],Freeanchor: Learning to match anchors for visual object detection[NIPS, 2019]),架构重新设计(Pallel feature pyra-
mid network for object detection[ECCV, 2018],Deep feature pyramid reconfiguration for object detection[ECCV, 2018]),特征丰富和对齐( feature enrichment and alignment)(Receptive field block net for accurate and fast object detection[ECCV,2018],Single-shot object detection with enriched semantics[CVPR, 2018],Learning rich features at high-speed for single-shot object detection[ICCV, 2019],Enriched feature guided refinement network for object detection[ICCV, 2019],Dynamic anchor feature selection for single-shot object detection[ICCV, 2019]),结论:目前,anchor-based的一阶段和二阶段性能非常接近了。
Anchor-free Detector
Keypoint-based method
这种类型的anchor-free方法首先定位几个预定义(pre-defined)或自学(self-learned)的关键点,然后生成边界框来检测物体。CornerNet将对象边界框检测为一对关键点(detect bbox as a pair of keypoints)(top-left 和bottom-right,使用自己提出的关键的池化算法),CornerNet-Lite提出了CornerNet-Saccade和CornerNet-Squeeze来提升速度。Grid R-CNN的第二阶段通过FCN(对位置敏感)预测网格点,然后由网格引导的边界框来定位对象(不是太明白,得看原文)。ExtremeNet检测四个极值点(最顶部、最左侧、最底部、最右侧)和一个中心点以生成对象边界框。. (CenterNet:Objects as Points[CoRR, 2019])使用关键点估计来找到对象的中心点并回归到所有其他属性,包括大小、3D 位置、方向和姿势。CenterNet将CornetNet扩展为三元组(中心点、宽、高)而不是一对关键点,以提高精度和召回率。RepPoints[ICCV,2019]将对象表示为一组样本点,并学习以限制对象空间范围并指示语义上重要的局部区域的方式排列自身(这句看不懂,是微软的工作,可变形卷积的v3版)。
Center-based method
这种anchor-free方法将物体的中心(例如,中心点或部分)作为前景来定义正样例,然后预测正样本到物体边界框四个边的距离进行检测。YOLO将图像划分为一个 S × S 网格,物体中心的网格单元负责检测这个物体。DenseBox[CoRR, 2015]使用位于对象中心的实心圆来定义正样例,然后预测从正样例到对象边界框边界的四个距离以进行定位。**GA-RPN[CVPR,2019]**将对象中心区域的像素定义为正样例,以预测 Faster R-CNN 的对象提议的位置、宽度和高度。FSAF[CVPR, 2019]将带有在线特征选择的无锚分支附加到 RetinaNet,新添加的分支将对象的中心区域定义为正样例,以通过预测到其边界的四个距离来定位它。FCOS[CVPR,2019] 将对象边界框内的所有位置视为具有四个距离和新的(novel)中心度分数(centerness score)的正样例来检测对象。CSP[CVPR, 2019]仅将目标框的中心点定义为正样例,以检测具有固定纵横比(with fixed aspect ratio)的行人。 FoveaBox [CoRR, 2019] 将对象中间部分的位置视为具有四个距离的正值来执行检测。
Difference Analysis of Anchor-based and Anchor-free Detection
拿anchor-based的RetinaNet和anchor-free的FCOS举例来剖析他们的区别(dissect their differences),下面先来讨论正负样本的定义和回归起始位置。每个位置的(per location)anchor数量在后面讨论。因此,我们这里只为RetinaNet的每个位置平铺一个方形锚,这与 FCOS 非常相似。在剩下的部分中,我们首先介绍了实验设置,然后排除了所有的实现不一致,最后指出了基于anchor和无anchor的检测器之间的本质区别。(这里因为要验证正负样本定义和回归起始位置的作用,根据控制变量法,就固定了anchor的数量来做实验)
Dataset
MS COCO,用FOCS和RetinaNet训练。
Training Detail
使用ImageNet预训练的ResNet-50,加5层金字塔做backbone,新加的初始化层与RetinaNet相同。对于RetinaNet,5级特征金字塔中的每一层都与一个8*S尺度的方形anchor相关联,其中S是总步幅大小。在训练时,resize图片短边长800,长边≤1333。整个网络使用随机梯度下降 (SGD) 算法进行 90K 次迭代训练,动量为0.9,权重衰减为 0.0001,batch size为 16。我们将初始学习率设置为 0.01,并分别(respectively)在在迭代 60K和80K时将其衰减0.1。
Inconsistency Removal
FOCS的表先优于one square anchor box per location的RetinaNet(37.1% vs. 32.5%),当FOCS使用一些优化方法,包括将中心移到回归分支,使用GIoU损失,normalizing regression targets by corresponding stride(没看懂这句),这些使FOCS性能从37.1% 提升到 37.8%。FOCS和RetinaNet的AP差距的一部分来自于优化,例如在头部添加GroupNorm[ECCV,2018],使用GIoU(Generalized intersection over union: A metric and a loss for bounding box regression[CVPR,2019])回归损失函数,限制ground-truth box中的正样本,引入中心分支,添加可训练的标量。这些方法也可以应用到anchor-based的模型,这些不是两者差异的本质。将这些优化一一引入RetinaNet,将RetinaNet的AP提升到37%,只有0.8%的差距了。到现在为止,在消除了所有不相关的差异之后,我们可以以相当公平的方式探索基于锚和无锚检测器之间的本质区别。
Essential Difference
现在FOCS和RetinaNet只有两个区别:1.分类子任务,即定义正样本和负样本的方法。2.回归子任务,即从anchor-box或anchor-point开始的回归。
Classification
RetinaNet利用IoU将不同金字塔级别的锚框划分为正例和反例。它首先标记每个物体(一张图片有多个物体)的最佳anchor(anchor已经预设,标记下哪个是最好的),标记IoU > θp的为正例, IoU < θn为负例,在θn和θp之间的就忽略了。FCOS 使用空间和尺度约束来划分不同金字塔级别的 anchor points。它首先将候选框内的anchor points视为候选正样本(candidate positive samples),然后根据为每个金字塔级别定义的尺度范围从候选中选择最终的正样本,最后那些未选择的锚点是负样本。
FCOS 首先使用空间约束在空间维度中找到候选正例,然后使用尺度约束在尺度维度中选择最终正例。相比之下,RetinaNet 利用 IoU 同时直接选择空间和尺度维度上的最终正例。这两种方式产生了不同的正例和负例。互换两种正/负例选择方法后,得到如下结论,RetinaNet的AP从37.0% to 37.8%,FCOS的AP从37.8% to 36.9%。这些结果表明,正样本和负样本的定义是anchor-based和anchor-free之间的本质区别。(所有有无anchor不重要,重要的是正负样例的选择,其实这也符合只管思维。只能说是在现有网络结构的性能下,只和正负样本选择有关。那么增加多head是否可提升?在anchor-based基础上增加关键点回归呢?)
Regression
在确定正样本和负样本后,对象的位置从正样本回归。 RetinaNet从anchor-box回归,anchor-box和对象框之间有四个偏移量,左上左下右上右下。而 FCOS 从anchor-point回归,距离对象边界有四个距离,就是点到gt边的距离。这意味着对于一个正样本,RetinaNet 的回归起始状态是一个框,而 FCOS 是一个点。但是,如表 2 的第一行和第二行所示,当 RetinaNet 和 FCOS 采用相同的样本选择策略以具有一致的正/负样本时,无论从一个point开始回归还是从一个box,最终性能都没有明显差异,即 37.0% 对 36.9% 和 37.8% 对 37.8%。这些结果表明,回归起始状态是一个不相关的差异,而不是本质的差异(is an irrelevant difference rather than an essential difference)。
Conclusion
根据这些以公平方式进行的实验,我们指出单阶段基于锚的检测器和基于中心的无锚检测器之间的本质区别实际上是如何定义正负训练样本,这对于当前的目标检测很重要,值得进一步研究。
Adaptive Training Sample Selection
在训练目标检测器时,我们首先需要定义正/负样本进行分类,然后使用正样本进行回归。根据前面的实验,表明定义正负样本最重要,而使用正样本进行回归不是很重要,FCOS 改进了这一步,它引入了一种定义正面和负面的新方法,与传统的基于 IoU 的策略相比,它取得了更好的性能。受此启发,我们深入研究对象检测中最基本的问题:如何定义正负训练样本,并提出自适应训练样本选择(ATSS)。与这些传统策略相比,我们的方法几乎没有超参数,并且对不同的设置具有鲁棒性。
Description
以前的样本选择策略具有一些敏感的超参数(hyperparameters),例如基于锚的检测器中的 IoU 阈值和无锚检测器中的尺度范围。设置好这些超参数后,所有的ground-truth box都必须根据固定的规则选择它们的正样本,这适用于大多数物体,但会忽略一些外部物体。因此,这些超参数的不同设置将产生非常不同的结果。
为此(To this end),我们提出了 ATSS 方法,该方法根据对象的统计特征自动划分正样本和负样本,几乎没有任何超参数。
Selecting candidates based on the center distance between anchor box and object
对于 RetinaNet,anchor box 的中心越靠近对象的中心,IoU 越大(我觉得不一定,跟框的形状也有关系)。对于 FCOS,离对象中心越近的锚点将产生更高质量的检测。因此,离物体中心越近的anchor是更好的候选者。(说白了那你在标注数据集时计算框中心,肯定是越重合越好)
Using the sum of mean and standard deviation as the IoU threshold
阈值用均值+标准差。
一个物体的IoU-mean m_g是衡量预设anchors对该物体的适用性。此外,对象的 IoU 标准差 v_g 是衡量哪些层适合检测该对象。v_g+m_g 可以获得从这些级别中选择适当正值的低阈值。使用均值 m_g 和标准差 v_g 之和作为 IoU 阈值 t_g 可以根据对象的统计特征,从适当的金字塔层级中自适应地为每个对象选择足够的正数。
Limiting the positive samples’ center to object
中心在物体外的anchor是一个很差的候选,会被物体外的特征预测,不利于训练,应该排除。
Maintaining fairness between different objects
根据统计理论,理论上大约 16% 的样本在置信区间 [mg + vg, 1] 内。虽然候选对象的IoU不是标准的正态分布,但统计结果表明每个对象大约有0.2*kL的正样本,其规模、纵横比和位置是不变的。相比之下,RetinaNet 和 FCOS 的策略往往对较大的对象有更多的正样本,导致不同对象之间的不公平。
Keeping almost hyperparameter-free
我们的方法只有一个超参数 k。随后的实验证明它对 k 的变化非常不敏感,并且所提出的 ATSS 可以被认为几乎是无超参数的。
Verification
Anchor-based RetinaNet和Anchor-free FCOS的AP都有所提升
Discussion
以前的实验基于 RetinaNet,每个位置只有一个锚点。基于anchor的检测器和无anchor-free检测器之间仍然存在一个未被探索的差异:每个位置平铺的anchor数量。只要由于正样本选择得当,无论每个位置平铺多少个anchor,结果都是一样的。我们认为,在我们提出的方法下,每个位置平铺多个锚点是无用的操作,需要进一步研究以发现其正确作用。