2020CVPR之ATSS:Bridging the Gap Between Anchor-based and Anchor-free Detection

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

张士峰大佬近期发了一篇论文解读Anchor-base和Anchor-free方法间的差别,其本质在于正负样本的选取方式不同。

1、摘要

本文首先指出基于锚点检测与无锚点检测的**本质区别在于如何定义正、负训练样本**,从而导致两者之间的性能差距。如果他们在训练中对正样本和负样本采用相同的定义,无论边界框回归还是点回归,最终的成绩都没有明显的差异。由此可见,如何选取正、负训练样本对当前目标检测具有重要意义。然后,我们提出了一种自适应训练样本选择(ATSS),根据目标的统计特征自动选择正样本和负样本。它显著地提高了基于锚点和无锚点探测器的性能,并弥补了两者之间的差距。最后,我们讨论了在图像上每个位置平铺多个锚点来检测目标的必要性。在COCO上进行的大量实验支持了我们的上述分析和结论。随着新引入的ATSS,我们在不引入任何开销的情况下,将最先进的检测器大幅提高到50.7% AP。代码在https://github.com/sfzhang15/ATSS

2、Introduction

目标检测在计算机视觉领域是一个长期存在的课题,目的是检测到特定类别的物体。精确的目标检测方法对于图像识别和视频监控有着重要的影响。近些年,随着卷积神经网络的发展,目标检测一般都是采用基于anchor的方法,大致可以分为单阶段检测器和双阶段检测器。它们都是在一张图片上放置大量的预先定义好的 anchors,然后预测其类别,优化这些anchor的坐标,最终将这些优化后的 anchors 作为检测结果输出。由于双阶段方法需要优化的 anchors 的数量是单阶段方法的好几倍,前者的准确率要高一些,而后者的计算效率要高一些。在常用的检测基准上,SOTA的方法一般都是基于 anchor 的。

但是,由于FPN和 Focal Loss 的出现,最近学术领域又开始关注在 anchor-free 检测器上。Anchor-free 检测器以两种不同的方式来直接找到物体,无需预先定义 anchors。

  1. 一种方法是首先定位几个预定义的或自学习的关键点,然后限制目标的空间范围。我们将这种类型的无锚检测器称为 keypoint-based。
  2. 另一种方法是使用对象的中心点或区域来定义阳性,然后预测从阳性到对象边界的四个距离。我们将这种无锚检测器称为基于中心的方法[56,23]。

这些 anchor-free 方法降低了有关anchor的超参数,取得的效果与 anchor-based 方法类似,使它们更具泛化潜能。

这两类 anchor-free 检测器中,keypoint-based 方法延续了标准的关键点预测流程,这与 anchor-based 方法不同。但是,center-based 方法与 anchor-based 方法类似,将点看作为预先设定的样本。以单阶段的基于 anchor 的 RetinaNet 和 center-based 的 anchor-free 方法 FCOS 为例,它们主要有三个不同之处:

  1. 每个位置平铺的锚数。RetinaNet为每个位置平铺多个锚定框,而FCOS为每个位置平铺一个锚定点1。
  2. 正样本和负样本的定义。RetinaNet重新排序到交集上的正和负,而FCOS则利用空间和尺度约束来选择样本。
  3. 回归开始状态。RetinaNet从预设锚定框回归对象边界框,而FCOS从锚定点定位对象。

如[56]所报告的,anchor-free 的 FCOS 取得的表现要比 anchor-based RetinaNet 好,那么我们就应该研究一下,这三点中的哪一点造成了这些差距。

本文中,作者以非常公平的方式研究了 anchor-based 和 anchor-free 的方法的差异,排除了所有实现上的不一致。从实验结果可以得到,这两类方法的主要不同就是正负训练样本的定义,它造成了性能上的差异。如果在训练时,它们选择同样的正负样本,最终的表现就不会出现明显的不同,无论是从一个边框来回归,还是一个点来回归。因此,如何选择正负样本需要进一步的研究。受此启发,作者提出了一个新的自适应训练采样方法(ATSS),基于目标物体的特征自动地选择正负样本。它弥补了 anchor-based 和 anchor-free 检测器之间的差距。此外通过一系列的实验证明,在图像的每个位置上没有必要放置多个 anchors。在MS COCO数据集上的实验支撑了本文的分析和结论。通过使用ATSS,作者获得了 50.7% AP,没有带来任何的额外开支。本文主要贡献如下:

  • 指出了 anchor-based和anchor-free 方法的核心差异,它们定义正负样本的方式。
  • 提出了一个自适应的训练采样方法,根据物体的统计特征,自动选择正负样本来训练。
  • 证明在图片上每个位置摆放多个 anchors 是不必要的。
  • 在MS COCO数据集上取得了SOTA的表现,而没有增加任何成本。

3、Related Work

目前的CNN目标检测器都是 anchor-based 或 anchor-free 的。前者又可以分为双阶段和单阶段方法,而后者则可分为 keypoint-based 和 center-based。

3.1 Anchor-based Detectors

双阶段方法。Faster R-CNN 的出现确立了双阶段、anchor-based 检测器的主导地位。Faster R-CNN 由一个 RPN 网络和一个 region-wise 的预测网络(R-CNN)组成,然后预测目标。之后,人们又提出了许多的算法来提升其表现,包括结构重新设计、注意力机制、多尺度训练、训练策略和损失函数、特征融合和增强、候选框平衡等。目前在标准的检测基准上,SOTA的结果仍然被双阶段anchor-based方法统治。

单阶段检测器。随着SSD的出现,由于其计算效率高,单阶段检测器吸引了很多人的关注。SSD 在卷积网络的多尺度上展开 anchor boxes,直接预测物体的类别和 anchor box 偏移量。随后,人们又从多个方面进行大量的工作来提升其性能,如不同层之间上下文信息融合、从零开始训练、引入新的损失函数、anchor优化与匹配、结构重设计、特征增强和对齐等。现在,单阶段 anchor-based 方法已经可以取得与双阶段 anchor-based 方法类似的性能,而速度要更快。

3.2 Anchor-free Detectors

基于关键点的方法。这类 anchor-free 方法首先定位到预先定义或自学习的关键点,然后生成边框来检测物体。CornerNet 通过一对关键点(左上角和右下角)来检测物体的边框,CornerNet-Lite 引入了 CornerNet-Saccade 和 CornerNet-Squeeze 来提升其速度。Grid R-CNN 的第二个阶段利用FCN的位置敏感的优点来预测网格点,然后再判断边框、定位物体。ExtremeNet 检测物体的4个点(最上面、最左面、最下面、最右面)以及一个中心点来生成物体的边框。Zhu 等人利用关键点估计来找到物体的中心点,然后回归出其他的属性,包括大小、三维位置、朝向、姿态等。CenterNet 扩展了CornerNet,通过三个点而不是两个点来提升精度和召回率。RepPoints 将物体表示为一个样本点的集合,通过约束物体的空间范围、强调语义重要的局部区域来学习。

Center-based methods。这类方法将物体的中心区域(中心点或区域)看作为前景,定义正样本,然后预测它到物体四个边的距离。YOLO 将图像分割为S×SS\times SS×S个网格,如果物体的中心点落在了某网格内,该网格就要负责检测该目标物体。DenseBox 利用物体中心位置的圆圈区域来定义正样本,然后预测该圆圈到物体边界的四个距离。GA-RPN 将物体中心区域的像素点定义为正样本,为 Faster R-CNN 预测物体候选框的位置、宽度和高度。FSAF 在 RetinaNet 之上加了一个 anchor-free 的分支和在线特征选取机制,这个分支将物体的中心区域定义为正样本,利用它到物体的四个边的距离来定位它。FCOS 将物体边框内的所有位置都定义为正样本,然后通过4个距离值和1个 centerness 分数来检测物体。CSP 只将物体的中心点定义为正样本,通过固定的 aspect ratio 来检测行人。FoveaBox 将物体的中间部分位置定义为正样本,每个位置有4个距离来进行检测。

4、Difference Analysis of Anchor-based and Anchor-free Detection

不失一般性,作者仔细分析了 anchor-based的代表方法 RetinaNet 和 anchor-free 的代表方法 FCOS 的差异。在这一节中,作者关注在最后两个差异上:正负样本定义和回归的起始状态。后面也会讨论另一个不同点:每个位置上 anchors 的个数。因此对于 RetinaNet 而言,作者在每个位置上只放置1个正方形 anchor,这样就与 FCOS 类似了。在后续部分,作者首先介绍了实验设定,排除实现上的不一致,最后介绍 anchor-based 和 anchor-free 检测器的关键差异。

4.1 实验设定

数据集。所有的实验都是在MS COCO上完成的,它包含80个类别。作者按照一般的操作,trainval35k 里的11.5万张图片用于训练,minival 中的5千张图片用于验证。作者也在评测服务器上提交了结果,得到 test-dev 最终的表现。

训练细节。作者使用 ImageNet 上预训练的 ResNet-50 作为主干网络,它有5个层级的特征金字塔结构。对于 RetinaNet,5个特征金字塔中的每一个网络层都有1个正方形 anchor,它有 8S8S8S个尺度,SSS是总共的步长大小。在训练时,作者将输入图片重新缩放,保证短边长度为800,长边小于或等于1333。整个网络通过 SGD 来训练,momentum 为0.9,weight decay 为0.0001,batch size 为16,训练了9万次迭代。初始学习率为0.01,在6万次和8万次迭代时分别除以10。

推理细节。在推理时,将输入图片重新缩放,与训练阶段类似,然后将它输入进整个网络来输出预测边框和类别。之后,使用预定义的分数0.05来过滤背景边框,然后在每个特征金字塔输出得分最高的1000个检测目标。最后对于每张图片,利用NMS来产生置信度最高的100个检测目标,每个类的IoU阈值为0.6。
在这里插入图片描述

4.2、Inconsistency Removal

作者将每个位置上只有1个正方形anchor box 的 anchor-based 检测器 RetinaNet 记做 RetinaNet(#A=1),和 anchor-free 检测器 FCOS几乎一致。但是在MS COCO minival 数据集上,FCOS 的AP表现要比RetinaNet(#A=1) 高许多,37.1%vs.32.5%。而且,FCOS也有一些新的改进,如将 centerness 放到回归分支上去,使用 GIoU 损失函数,通过相应的步长来归一化回归目标。这些改进可以将 FCOS 的AP性能提升至37.8%,使得二者差距更大。但是,FCOS 和 RetinaNet 之间的 AP 差距拉大部分源于一些通用的改进,如检测头里的 GroupNorm、使用 GIoU 回归损失函数、在 ground-truth 边框中限制正样本、引入 centerness 分支、在每个特征金字塔中加入一个可训练的标量。这些改进也可以用于 anchor-based 检测器,因而它们不是 anchor-based 和 anchor-free 方法的根本不同。作者将它们挨个用在RetinaNet(#A=1)方法中,排除实现上的不一致。如表1所示,这些改进将 anchor-based RetinaNet 的AP提升到了 37.0%,但和 FCOS 仍有 0.8%0.8%0.8%的差距。现在,去除掉那些不相关的差异后,我们就可以研究 anchor-based 和 anchor-free 方法的根本不同了。
在这里插入图片描述
3.3 Essential Difference
在使用了通用的改进技巧后,anchor-based 的 RetinaNet(#A=1) 和 anchor-free FCOS 就只有2个不同之处了。其一就是检测中的分类子任务,即如何定义正负样本的。其二就是回归子任务,即从 anchor box 还是 anchor point 开始回归的。

总结。根据上述实验,作者认为单阶段 anchor-based 检测器和 center-based anchor-free 检测器的根本差异是它们如何定义正负样本的,这对当前目标检测非常重要,值得进一步研究。

posted @ 2020-03-31 15:02  旅人_Eric  阅读(320)  评论(0编辑  收藏  举报