论文学习笔记 - ATSS

『写在前面』

深入剖析了导致Anchor based模型与Anchor free模型性能差距的原因,并基于此提出了自适应训练样本选择(ATSS),达到了新的SOTA. 该篇文章作者还是RefineDet(CVPR 2018)的一作。

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

作者机构:Shifeng Zhang等, 中科院自动化所

论文出处:CVPR 2020 Oral

原文链接:https://arxiv.org/abs/1912.02424v1

相关repo:https://github.com/sfzhang15/ATSS

一点个人见解

  • 另辟蹊径建立起Anchor-based model与Anchor-free model的联系,加深了对anchor本质的认识
  • 证明了在使用ATSS策略训练下,preset多个anchor的意义并不大。如果使用ATSS策略训练检测器,那么就可以压缩预测层的厚度(因为设置1个anchor即可),这在一定程度上还起到了压缩模型、提高速度的作用,个人感觉影响意义深远。
  • ATSS还有一点重要的价值是启发业界尽可能地降低检测模型中人为设置超参数的数量和影响,比如先前大家广泛追捧的anchor size,IoU threshold等等,可能会启发学界提出更加有效的检测模型中正负样本划分策略。

目录

摘要

1 介绍

2 相关工作

2.1 Anchor-based检测器

Two-stage方法

One-stage方法

2.2 Anchor-free检测器

Keypoint-based方法

Center-based方法

3 Anchor-based模型与Anchor-free模型差异分析

3.1 不一致部分的去除

3.2 本质区别

Classification

Regression

结论

4 自适应训练样本选择(ATSS)

4.1 描述

4.2 验证

4.3 分析

关于超参数k的设置问题

关于anchor size的设置问题

4.4 对比

4.5 讨论


摘要

本文提出,基于anchor的检测与不基于anchor的检测之间的本质区别是如何定义正向训练样本和负向训练样本,它们之间的性能差距也是由该原因导致的。

如果在训练过程中都采用相同的定义来区分正负样本,则无论是从一个box来回归还是从一个point来回归,最后的表现都差不多。

基于上述分析,本文提出了ATSS:自适应训练样本选择

1 介绍

Two-stage方法与One-stage方法:由于两阶段方法比一阶段方法多细化anchor数次,所以会更准确,而一阶段方法的好处是计算量少。

Anchor-free类方法主要分为keypoint-based和center-based两类。Anchor free型模型可以消除与anchor有关的超参数,并且与Anchor-based的检测器具有相似的性能。

本文重点在于探究导致Anchor-based模型和Anchor-free模型性能差异的因素,选择了两个代表模型进行实验:RetinaNet(Anchor-based,单anchor baseline版本AP=32.5)和 FCOS(Anchor-free,baseline版本AP=37.8)

从实验结果来看,导致这一差异的最根本原因的对正负样本的定义。基于此,本文提出了一种新的自适应训练样本选择方法ATSS,并且达到了新的AP高度(50.7%)。

RetinaNet和FCOS的对比 

  1. 每个位置平铺的anchor数量:RetinaNet在每个位置设置多个anchor box,FCOS在每个location设置一个anchor point
  2. 正负样本的定义:RetinaNet通过计算IoU来区别正负样本,FCOS通过空间和尺度的限制来选择正负样本
  3. 回归的初始状态:RetinaNet从预设的anchor box开始回归目标的包围框,FCOS从anchor点开始定位对象

本文要点总结:

  1. 指出anchor based/free 导致性能差距的本质原因是正负样本划分问题
  2. 提出ATSS,根据对象的统计特征自动选择正负样本
  3. 证明对每个location平铺多个anchor是费力不讨好的
  4. 在没有引入额外开销的情况下,在COCO上实现新的SOTA

2 相关工作

作者用短短四段话全面总结了各种检测模型的改进思路和亮点,几乎涵盖了所有主流检测模型,涉及几十余篇参考文献,借此机会学习和梳理如下。

2.1 Anchor-based检测器

Two-stage方法

两阶段方法的代表作是Faster R-CNN,其后的模型大多都是基于Faster R-CNN的变种和改进,具体的思想和举例列举如下:

(1)网络结构改进

  • Cascade R-CNN: 《Cascade R-CNN: delving into high quality object detection》[CVPR 2018]
  • R-FCN: 《 R-FCN: object detection via region-based fully convolutional networks》[NIPS 2016]
  • TridentNet:《Scale-aware trident networks for object detection》[ICCV 2019]

(2)引入上下文与注意力机制

  • ThunderNet: 《Thundernet: Towards real-time generic object detection》[ICCV 2019]

(3)多尺度训练&测试

  • Autofocus:《Autofocus: Efficient multi-scale inference》[ICCV 2019]
  • SNIP: 《An analysis of scale invariance in object detection - SNIP》[CVPR 2018]

(4)训练策略&损失函数改进

  • KL-loss: 《 Bounding box regression with uncertainty for accurate object detection》[CVPR 2019]
  • OHEM: 《Training region-based object detectors with online hard example mining》[CVPR 2016]

(5)特征融合与强化

  • FPN: 《Feature pyramid networks for object detection》[CVPR 2017]

(6)更好地推荐和样本平衡

  • Libra R-CNN: 《Libra R-CNN: towards balanced learning for object detection》[CVPR 2019]

One-stage方法

得益于SSD的提出,因其速度快,One-stage anchor-based检测模型受到了广泛的关注。后续的大多数相关方法都是在SSD的不同方面做出了改进:

(1)多级信息融合

  • DSSD: 《DSSD : Deconvolutional single shot detector》[CoRR 2017]
  • STDN: 《Scale-transferrable object detection》[CVPR 2018]

(2)从头开始训练

  • DSOD: 《DSOD: learning deeply supervised object detectors from scratch》[ICCV 2017]
  • ScratchDet: 《Scratchdet: Exploring to train single-shot object detectors from scratch》[CoRR 2018]

(3)损失函数改进

  • Focal loss: 《Focal loss for dense object detection》[ICCV 2017]
  • AP loss: 《Towards accurate one-stage object detection with ap-loss》[CVPR 2019]

(4)anchor改进和匹配改进

  • RefineDet: 《Single-shot refinement neural network for object detection》[CVPR 2018]
  • Freeanchor: 《Freeanchor: Learning to match anchors for visual object detection》[NIPS 2019]

(5)网络结构设计

  • PFPNet: 《Parallel feature pyramid network for object detection》[ECCV 2018]

(6)特征丰富和对齐

  • 《Dynamic anchor feature selection for single-shot object detection》[ICCV 2019]
  • 《Enriched feature guided refinement network for object detection》[ICCV 2019]
  • 《Learning rich features at high-speed for single-shot object detection》[ICCV 2019]
  • 《Single-shot object detection with enriched semantics》[CVPR 2018]
  • 《Receptive field block net for accurate and fast object detection》[ECCV 2018]

2.2 Anchor-free检测器

Keypoint-based方法

该类型的方法首先定位几个预定义或自学习的关键点,然后基于这些关键点生成检测框。

代表作有:

  • CornerNet: 《Cornernet: Detecting objects as paired keypoints》[ECCV 2018]
  • CornerNet-lite: 《Cornernet-lite: Efficient keypoint based object detection》[CoRR 2019]
  • ExtremeNet: 《Bottom-up object detection by grouping extreme and center points》[CVPR 2019]
  • CenterNet: 《objects as points》[CoRR 2019]
  • CenterNet: 《Centernet: Keypoint triplets for object detection》[ICCV 2019]
  • RepPoints: 《Reppoints: Point set representation for object detection》[ICCV 2019]

Center-based方法

该类型的方法首先将对象中心作为前景定义为正值,再预测从该处到包围框四条边的距离。

  • YOLOv1: 《You only look once: Unified, real-time object detection》[CVPR 2016]
  • FSAF: 《Feature selective anchor-free module for single-shot object detection》[CVPR 2019]
  • FCOS: 《FCOS: fully convolutional one-stage object detection》[ICCV 2019]
  • DenseBox: 《Unifying landmark localization with end to end object detection》[CoRR 2015]
  • FoveaBox: 《Foveabox: Beyond anchor-based object detector》[CoRR 2019]

3 Anchor-based模型与Anchor-free模型差异分析

RetinaNetFCOS为例,对比两类模型的差异。

主要关注两个差异:正负样本定义、回归开始状态

3.1 不一致部分的去除

关于RetinaNet,作者使用了简化版本RetinaNet (#A=1),即在预测层的每处只设置一个方形anchor。这样从模型结构上RetinaNet (#A=1)与FCOS几乎无异。然而,就论文中介绍的表现(在COCO minival上的AP)而言,FCOS(37.1%)远优于RetinaNet (#A=1)(32.5%)。而且,后来FCOS又作了一些改进:将centerness分支合并到回归分支中,使用GIoU loss,通过步长对回归目标进行标准化等,使得其AP进一步提升至37.8%。

首先,考虑引起这一性能差距的因素中,通用的改动部分,即可以添加在RetinaNet使用的trick。总结如下:

(1)GIoU loss

(2)在head部分使用GN

(3)只在Ground Truth框中心附近生成正样本

(4)引入centerness分支

(5)为每个金字塔level添加一个可学习的参数

作者将以上trick依次添加至RetinaNet (#A=1)中使用,得到的实验结果如下表所示,可见,二者仍存在0.8的差距

通过以上分析,移除了所有通用因素的影响,现在尚存的导致性能差距的因素我们就有理由认为是导致Anchor-based模型和Anchor-free模型性能差距的根本原因了。

3.2 本质区别

在除去通用的改进方法以后,仅存两个区别:

1)分类子任务中,定义正负样本的方法;

2)回归子任务中,从anchor box开始回归还是从anchor point开始回归。

Classification

RetinaNet通过计算各个anchor box与GT框的IoU,将大于正阈值的设为正样本,小于负阈值的设为负样本。

FCOS使用空间和尺度限制将anchor point分配给不同的特征级别。首先它将所有GT框里的location设为候选样本,然后根据定义在不同特征级别上的尺度范围来获得最终的正样本,最后将剩余点都作为负样本。

两种不同的方式使得得到的训练样本不同,进而导致性能差距

Regression

如上图(b)所示,RetinaNet从一个anchor box开始回归,回归目标是从anchor box到gt box的4个偏移值;如上图(c)所示,FCOS从一个anchor point开始回归,回归目标是该点到gt box边界的4个距离值 。换一个说法就是,RetinaNet和FCOS对包围框回归的初始状态是不一样的

结论

对比实验结果如下图所示:

按列来看,RetinaNet如果使用基于点的样本生成法,AP+0.8; FCOS如果使用基于IoU的样本生成法,AP-0.9.   

按行来看,对于不同的样本生成方法,不论是使用anchor box进行回归还是使用anchor point进行回归,最终达到的效果几乎一致。

综上所述,我们可以得出结论:One-stage anchor-based检测器与anchor-free检测器的本质区别实际上是如何定义正负训练样本

4 自适应训练样本选择(ATSS)

在训练目标检测器时,我们首先需要对正负样本进行定义,然后使用正负样本训练分类器,最后使用正样本训练回归器。

根据先前的结论,对正负样本的定义至关重要。FCOS在这一点上进行了改进,从而得到了比传统基于IoU划分正负样本方法更好的性能。

本文深入研究了这一问题,提出自适应训练样本选择(ATSS)。与传统策略相比,ATSS几乎没有超参数,且对不同的设置具有鲁棒性。

4.1 描述

算法简述

step 1:对于每个金字塔的level,选出anchor中心离GT框中心最近的k个候选,这样一共得到了kL个候选正样本;

step 2:分别计算这些候选正样本与GT框的IoU,并计算出这些IoU的均值、方差;

step 3:以IoU的“均值 + 方差”作为自适应阈值,保留候选正样本中大于该阈值且其中心位于GT框内的部分作为最终选取的正样本;

step 4:其余的anchor,以及从候选里剔除的anchor,均作为负样本。

附加:若一个anchor box被分配给了多个GT框,则IoU最大的那个将拥有该anchor。

 

详细的算法步骤

为什么要这么做?

(一)根据锚框和对象之间的中心距离选择候选对象

在RetinaNet中,当anchor box中心越接近对象中心时,IoU会更大;在FCOS中,当anchor point离对象中心时将产生更高质量的检测。综上,越靠近目标中心的anchor往往可以作为更好的候选。

(二)使用mean+std作为IoU阈值

mean反映了预设的anchor box与当前对象的契合程度。如果mean比较大(如上图a),说明预设框里存在很合适的anchor box,那么相应的阈值就该卡高一些;反之,说明如果mean较低(如上图b),说明所有预设anchor都不咋地,那么相应的阈值就该降低一些。

std反映了哪层是用来检测该对象的最好的度量。如果std较大(如上图a),说明金字塔里存在极理想的预设的anchor box,那么在较高的阈值下,可能只挑选其负责预测当前对象;反之,如果std较小(如上图b),说明有多个金字塔级别都差不多,不好不坏,那么在较低的阈值下,会选出来多个级别用来预测当前对象。

使用mean+std来作为阈值,根据对象的统计特征从适当的金字塔等级中,自适应地为每个对象选择足够的正样本出来。

(三)限制正样本的中心在对象包围框内

中心落在GT框外的anchor会在预测的时候引入对象外部的特征,这不利于训练应当排除在外。

(四)维护不同对象之间的公平性

尽管候选对象的IoU不是标准正态分布,但统计结果表明,每个对象都有大约0.2 * kL个正样本,这与其大小,纵横比和位置无关。与之相比,RetinaNet和FCOS的策略会倾向于为大号目标分配更多的正样本,这是不公平的。

(五)尽可能不使用超参数

在ATSS中只有一个超参数k,实验证明对k的变化非常不敏感,所以可以认为ATSS是无超参的。

4.2 验证

使用RetinaNet (#A=1) + ATSS进行训练,AP提高2.3.

使用FCOS + ATSS进行训练,AP提高1.4.

4.3 分析

关于超参数k的设置问题

作者使用不同的k值进行了一系列实验,结果如下图。可以看出,k在7~17范围内不敏感,k太大导致过多的低质量候选框,k太小导致统计不稳定,从而导致准确性下降

关于anchor size的设置问题

anchor的设置一般是通过调节scale和aspect ratio来设置。作者做了一系列实验,证明不论怎么更改anchor的设置,结果都差不多,表明ATSS对anchor size不敏感

4.4 对比

通过使用更强大的backbone,结合多尺度测试等trick,ATSS最高可达到50.7 AP,具有SOTA性能 。

4.5 讨论

RetinaNet(#A=9)性能在相同设置下,比RetinaNet (#A=1)性能好。这说明在基于IoU的样本选择策略下,设置更多的anchor是有用的

但在用了ATSS以后,多anchor版本的RetinaNet和单anchor版本的RetinaNet性能相近。这说明只要适当选择正样本,无论在每个位置设置多少个anchor,结果都是一样的。也间接说明了ATSS是一个区分正负样本的好方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值