【目标检测】20、ATSS: bridging the gap between anchor-based and anchor-free detection via ATSS

在这里插入图片描述

本文贡献点:

  • 指出了 anchor-based 和 anchor-free 方法性能差别的决定性因素:如何定义正样本和负样本
  • 提出了一种根据目标的统计信息来自动确定样本正/负的方法
  • 验证了在每个位置上铺设多个 anchor 的方法是没有多大效果的

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

代码:https://github.com/open-mmlab/mmdetection/tree/master/configs/atss

出处:CVPR2020

一、背景和动机

目标检测在很长一段时间内都是被 anchor-based 的方法统治,先预定义很多 anchor,然后通过训练来调整这些anchor,输出最终的检测结果。两阶段的方法 refine anchor 的次数大于单阶段的方法,所以准确率更高,当时 SOTA 的结果还是来源于 anchor-based 方法。

后来出现了一些基于 FPN 和 Focal loss 的 anchor-free 的方法,也取得了很好的效果,anchor-free 的方法是不基于预定义的框,而是直接预测目标框,主要有两种直接预测的方法。

  • 第一种是确定关键点,然后确定边界框:keypoint-based methods,继承了标准的 keypoint 估计方法的 pipeline,和 anchor-based 方法相差较大。
  • 第二种是使用目标的中心点或一些区域来定义正样本,然后预测该点距离四个边界的距离:center-based methods,和 anchor-based 方法更加类似,将每个点作为训练样本,而非 anchor box。

anchor-free 方法的优势:

  • 剔除了需要预设定的参数,如 anchor 个数、尺寸、宽高比等,让模型更加灵活

单阶段 anchor-based 方法和 anchor-free 方法的对比:

  • RetinaNet:在每个位置设定多个 anchor,使用 IoU 来区分前景、背景框,
  • FCOS:将每个点当做训练样本,使用点是否在框内来区分前景、背景点,

上述方法的劣势:

这些方法都是需要设定阈值参数的,这些确定的规则虽然对大多数目标适用,但对一些 outer 的目标是不使用的,所以,对不同的目标应该用不同的规则。

寻找关系到模型效果的关键因素:

该文章指出,anchor-based 和 anchor-free 的方法最大的不同,就是如何判断正负样本,这是导致上述两种方法性能 gap 的最大的原因。

如果他们使用相同的方法来定义正负样本,最后的性能几乎没有差别。这也就说明了定义正负样本的重要性。

本文的解决方案和效果:

于是,该文章提出了 Adaptive Training Sample Selection (ATSS) ,来根据目标的统计信息,自动选取正负样本,无任何超参数。

ATSS 在 COCO 上达到了 50.7% AP

二、方法

2.1 分析不同

在训练检测器时,首先要定义正负样本来进行分类,其次要对正样本进行回归,下面也证明了 FCOS 是对 RetinaNet 在正负样本定义上的优化,也取得了效果提升。

首先将 RetinaNet 和 FCOS 的效果进行了拉齐,然后进行了对比。

1、Classification:区分正负样本的对比

如图 1 所示:

RetinaNet 使用 IoU 来区分正负样本,IoU 大于某个阈值(如0.5)的为正样本,小于某个阈值(如0.3)的为负样本,其他框忽略。

FCOS 是将落在真值框内的点,并考虑当前特征图尺度,将当前尺度上符合预设定大小的点,当做正样本,其他当做负样本。

在这里插入图片描述

如表 2 所示,对于 RetinaNet,使用 FCOS 的定义正负样本的方法,AP 从 37.0%→37.8%。

对于 FCOS,使用 IoU 方法来定义正负样本,AP 从 37.8%→36.9%。

该结论说明,正负样本选择的方法对 anchor-free 和 anchor-based 方法的结果的差别起到了很重要的作用。

在这里插入图片描述

2、Regression:回归方式的对比

  • RetinaNet:回归四个偏移,如图 2b
  • FCOS:回归特征点到四个边的距离,如图 2c

所以,对于正样本,RetinaNet 的回归的初始状态是框,FCOS 是点,如表 2 第一行和第二行对比,当两个方法使用相同的的正负样本选择策略,结果没有很大差别。

在这里插入图片描述

3、对比结论

单阶段 anchor-based 方法和 anchor-free 方法的效果差距的最主要原因在于正负样本的划分方式。

2.2 方法

正是由于上面所说的正负样本划分方式的重要性,本文提出了一种新的划分方法,无需任何超参数,可以让模型通过目标的统计分布来自适应的进行正负样本划分。

前面涉及到的两个方法正负样本的划分,都涉及到了超参数,这样就使得样本的划分需要遵循特定的规则,难免会有一些异常的样本被遗漏。

在这里插入图片描述
ATSS 方法的过程:

对图中的每个grund-truth box g g g

  • 首先寻找所有的候选正样本(line 3-6),也就是对每个pyramid level,计算每个anchor 的中心点和目标的中心点的 L2 距离,选择距离最近的前 k k k 个 anchor box。如果有 L L L 层,则共有 L × k L \times k L×k 个。
  • 计算每个候选正样本和 ground truth g g g 之间的 IoU ( D g D_g Dg, line 7)
  • 计算这组 IoU 的均值 m g m_g mg 和方差 v g v_g vg,(line 8-9),设置选取正样本的阈值为: t g = m g + v g t_g = m_g+v_g tg=mg+vg (line 10)
  • 根据 IoU,选择那些 IoU 大于等于阈值(且 anchor 中心在 gt 内部,line12)的 anchor 作为最终的正样本(line11-15)
  • 如果一个框被几个不同的 gt 都分配过去了,那就选择 IoU 最高的。
  • 其他的作为负样本

步骤总结:

1、计算每个样本点和真实框中心点的 L2 距离,保留距离最小的前 k 个点
2、计算保留下来的 anchor 和真实框的 IoU,并计算这组 IoU 的均值和方差,均值和方差的和即为阈值
3、大于阈值的为正样本

上面为什么使用 anchor 和 object 的中心点距离来选择候选框?

  • RetinaNet 中,如果两个框中心点距离越近,则其 IoU 得分会越高
  • FCOS 中,anchor point 如果距离目标中心点的距离越近,则是高质量 point,会产生更好的检测结果。

为什么要使用均值和标准差这些统计结果来非固定的阈值?

这里使用的是 k × l k\times l k×l 个 anchor 的 IoU 的统计信息,也可以看做是选择了 level。

本文的阈值是一个统计结果,如图 3(a) 有一个高的阈值,这是因为这里的候选框质量都很高,如图3(b) 有一个低的阈值,说明这里的框的质量都不高,如果使用高阈值的话,会把绝大部分的框都滤掉,不合适,所以使用统计的量作为阈值是一个可取的方式。

IoU 的方差决定了由 FPN 的哪几个 level 来负责检测该目标:

FPN 层的一个很大的作用就是分而治之,比如较大的目标是由较深的层来负责:

  • 若方差大, 则说明不同 level 上的 anchor 和 gt 的匹配程度有较大差异,有少数几个 level 上的 anchor 的 IoU 特别高,那么 IoU 的阈值也应该调高,这样那几个少数的合适 level 上的 anchor 被保留,其余 level 被淘汰。下图 a 就是高方差的情景,level 3适合检测该目标,则加上高方差后,level3 留下,其余淘汰
  • 若方差小,则说明不同 level 上的 anchor 和 gt 的匹配程度有较小差异,那么 IoU 的阈值也该调小,这样加上低方差,正确的 level 就会保留,下图 b 是低方差的情况,加上低方差后, level 1 被保留。

综上也可知,IoU 阈值和 IoU 的方差有关

在这里插入图片描述

对不同尺寸目标的不均衡的修正:

根据统计理论,大约16%的框会落到 [ m g + v g , 1 ] [m_g+v_g, 1] [mg+vg,1] 这个区间内,也就是大于等于 [均值+方差] 的数据会占 16%,虽然 IoU 的分布不是正态分布,但统计结果表明大约有 0.2 ∗ k L 0.2*kL 0.2kL 的正样本,这是不随尺度、aspect ratio、location 而改变的。

但 retinanet 和 fcos 的方法,会更多的关注于大尺度的正样本,导致不同大小的目标数量不均衡。

ATSS 的超参数:

ATSS 只有一个超参数 k k k,但实验也证明了该超参数对检测结果没有很大的影响,所以可以忽略不计。

在这里插入图片描述
Anchor size 的影响:

由于 ATSS 是使用 anchor 来定义正样本的,所以需要设定一个合理的 anchor size。

在之前的方法中,在每个位置点上布了 8S 个 anchor(S 是当前特征图的 stride)。

① anchor 尺度影响:

如表 5 所示,作者使用了不同的尺度 [5, 6, 7, 8, 9],检测效果都很稳定
在这里插入图片描述
② anchor 形状影响

如表 6 所示,展示了不同纵横比下的效果,也很稳定,说明 ATSS 对 anchor 形状的变化表现很稳定。

在这里插入图片描述
③ anchor 个数影响

使用 1 个和使用 9 个效果没差多少,所以这也说明了使用 ATSS 来进行正样本的选择,能够达到和之前方法使用多种不同尺度 anchor 的效果,所以也间接证明了在每个位置上铺设多个 anchor 是不必要的。在使用 IoU 阈值来区分正负样本的情况下,多个 anchor 是有必要的,但使用 ATSS 来区分正负样本是必要的。

在这里插入图片描述

2.3 嵌入 FCOS

1、嵌入 RetinaNet

RetinaNet 是 anchor-based 的方法,可以直接使用 ATSS 的划分正负样本的方式,提升了 2.3% AP。该提升主要来源于 ATSS 的自适应样本选择。

2、嵌入 FCOS

FCOS 是 anchor-free 的方法,这里使用两个版本:lite 和 full

对于 lite 版本,使用了一些 ATSS 的技巧。FCOS 是使用 anchor point 来划分正负样本的,会产生低质量的正样本,ATSS 给每个框选择前 9 个候选样本,将 AP 从 37.8% 提升到了 38.6%。

对于 full 版本,将 FCOS 中的 anchor 点变为使用 8S 尺度的 anchor box 来定义正负样本,但仍然和 anchor 点一样回归。

full 版本更好一些,两者主要的区别在于选取候选框的尺度问题。

在这里插入图片描述

三、效果

在这里插入图片描述
以 FCOS 为基础,添加 ATSS 模块作为对比基准:
在这里插入图片描述

四、代码

MMDetection 提供了基于 RetinaNet 的 ATSS,没有提供基于 FCOS 的 ATSS。

因为 ATSS 是在 RetinaNet 的基础上,加上了 FCOS 的各种技巧,包括 GroupNorm、GIoU Loss、In GT Box、Centerness、Scalar。所以诞生了一个 RetinaNet 和 FCOS 的结合产物:

  • backbone:和 RetinaNet 一致,ResNet50
  • neck:和 FCOS 一致,在 output 上进行额外卷积
  • ATSSHead:继承于 AnchorHead,多了 centerness 分支
  • AnchorGenerator:和 RetinaNet 一致
  • loss:和 FCOS 一致
  • BBox_coder:和 RetinaNet 一致
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Anchor-basedAnchor-free是两种不同的目标检测方法。Anchor-based方法使用预定义的anchor框来匹配真实的目标框,通过回归和分类来检测目标。这种方法包括Faster R-CNN、RetinaNet和YOLO等。而Anchor-free方法则不使用预定义的anchor框,而是通过回归目标的中心点和宽高来检测目标。这种方法包括FCOS、ATSS和CornerNet等。Anchor-free方法相比于Anchor-based方法更简单和灵活,但可能存在召回率或定位精度低的问题。Anchor-free方法的优点是不需要预设anchor,只需要对不同尺度的特征图的目标中心点和宽高进行回归,减少了耗时和算力,并且可以避免一些由于anchor设置不合理导致的漏检或重复检测问题。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Anchor based and Anchor free(无锚VS有锚)【总结】](https://blog.csdn.net/qq_44029998/article/details/129561783)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Anchor Base 和 Anchor Free](https://blog.csdn.net/Lc_001/article/details/129436513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值