本文是阅读Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection这篇论文整理的笔记。
论文链接:https://arxiv.org/abs/1912.02424
代码地址:https://github.com/sfzhang15/ATSS
摘要
- 本文论证Anchor-based 和Anchor-free方法的本质区别在于如何定义正、负训练样本
- 如果Anchor-based和 Anchor-free在训练中对正、负样本采用相同的定义,无论边界框回归还是点回归,最终的结果没有明显的差异。
- 提出了一种Adaptive Training Sample Selection(ATSS),根据目标的统计特征自动选择正、负样本,方法显著地提高了基于Anchor-based和 Anchor-free检测的性能,并弥补了两者之间的差距。
- 讨论在图像上每个位置平铺多个锚点来检测目标的必要性
相关工作
- Anchor-based的方法:分为one-stage, two-stage检测,它们都是在一张图片上放置大量的预先定义好的 anchors,然后预测其类别,优化这些anchor的坐标,最终将这些优化后的 anchors 作为检测结果输出。一开始one-stage效率高,two-stage准确率高,但现在one-stage是主流 ,能够在速度和准确率上均超越two-stage,,two-stage已经很少使用。
- Anchor-free方法: 通常以如下两种不同的方式来直接找到物体,无需预先定义 anchors。
1、 keypoint-based:首先定位几个预定义的或自学习的关键点,然后限制目标的空间范围。
2、 center-based: 使用对象的中心点或区域来定义阳性,然后预测从阳性到对象边界的四个距离。
其中,keypoint-based 方法使用关键点预测流程,额外增加一个embeddings建立左上角点和右下角点之间的联系,这与 anchor-based 方法不同。但 是,center-based 方法与 anchor-based 思路类似,将点看作为预先设定的样本。
本文以anchor-based的 RetinaNet 和 anchor-free 的 center-based 方法 FCOS 为例,这两种方法非常相似,FCOS在RetinaNet基础上有一些improvements。
他们主要的差异为:
- 每个位置平铺的anchor数。RetinaNet为每个位置平铺多个anchor,而FCOS为每个位置设定一个anchor point。
- 正样本和负样本的定义。RetinaNet根据IOU来选择正负样本,而FCOS则利用空间和尺度约束来选择样本。
- 回归开始状态。RetinaNet从预设的anchor box回归对象边界框,而FCOS从预定义的anchor point上定位对象。
从实验结果可以得到,这两类方法的主要不同就是正负训练样本的定义,它造成了性能上的差异。如果在训练时,它们选择同样的正负样本,最终的表现就不会出现明显的不同,无论是从一个anchor来回归,还是一个point来回归。
Anchor-based和 Anchor-free 检测性能差异分析
首先,将FCOS的一些improvements加在RetinaNet上,包括:
- GroupNorm
- GIoU
- GT Box
- Centerness
- Scalar
1)本文在每个位置上只有1个正方形anchor box 的 RetinaNet 记做 RetinaNet(#A=1),和 anchor-free 的 FCOS几乎一致,FCOS 的AP表现要比RetinaNet(#A=1) 高许多,37.1%vs.32.5%。
2)改进FCOS 后,AP性能提升至37.8%
3)在RetinaNet(#A=1)方法中,应用上述tricks,将 RetinaNet 的AP提升到了 37.0%,但和 FCOS 仍有 0.8%的差距。
本质区别
分类子任务中如何定义正负样本。如下图:
第一行第二行是两个尺度的特征图,左边是RetinaNet,右边是FCOS。蓝色的1为正样本,灰色的0为负样本。蓝色框、红色框和红色点分别代表ground truth、anchor box和anchor point。从图中可以看出,RetinaNet在特征level 1没有检测到正样本,特征level 2 检测到1个正样本。FCOS在特征level 1空间维度有6个候选正样本,而尺度大小限制上判定为负样本,在特征level 1空间维度有2个候选正样本,尺度大小上判定后确定最终有2个正样本。
对于RetinaNet,其回归的基点是anchor,首先要判定哪些anchor是正样本,哪些anchor是负样本,然后在正样本anchor的基础上再做位置的回归。而判定anchor是否是正样本,是通过计算anchor和groundtruth的IoU来完成的,在空间维度和尺度维度上同时选择正样本(1)
而对于FCOS,作为center-base的方式,是通过判定feature上的每个点是否落入到groundtruth中来判定正负样本的,首先在空间维度找到候选的正样本(?),然后在尺度维度选择最终的正样本(1)。这样就摆脱了anchor上述的缺陷, 这也是FCOS效果优于RetinaNet的原因:基于center的方式,能够更有效的选取更多的正样本。
回归:点回归还是box回归
- 蓝色点和box是真实物体的中心点和边界框,红色点和box是anchor的中心点和边界框
- retinaNet从anchor box回归的4个偏移
- FCOS从anchor point回归的4个距离
经过对比试验,上述分类、回归结果如上表的第一行和第二行所示,当RetinaNet和FCOS采用相同的样本选择策略时具有一致的正/阴性样本,最终性能没有明显的差异,无论从point或anchor box开始都会回归,即37.0%与36.9%和37.8%与37.8%。这些结果表明回归的起始状态是无关的差异。
如表2第一列所示,使用空间和规模约束策略而不是IOU策略可将AP性能从37.0%提高到37.8%。对于FCOS,如表2第二列所示,如果使用IOU策略选择正样本,AP性能将从37.8%下降到36.9%。这些结果表明,正样本和负样本的定义是Anchor-based和 Anchor-free检测的本质区别。
ATSS算法
以前的样本选择策略有一些敏感的超参数,例如abchor-based方法中的IoU阈值和anchor free方法中的尺度范围。设置这些超参数后,所有的ground truth box都必须根据固定的规则选择它们的正样本,但一些目标会因为超出范围被忽略。因此,不同的超参数设置会产生不同的检测结果
ATSS依据目标的统计特性划分正负样本而不需要任何超参数。上图是算法流程,具体过程为:
1:对于图像 ground-truth box集合 G 中的每一个 ground-truth g
2: 对g 的候选正样本建立一个空集合 Cg ← ∅;
3: 对于特征层集合L中的每一个特征层 i ∈ [1, L]
4: Si ← select k anchors from 从Ai 中选择k个 anchor放入Si ,选择的方法是根据anchor和g中心点的L2距离,按从小到大排序,选择前k个, Ai是第i个特征层的anchor box 集合
5: 计算Cg = Cg ∪ Si
6: 结束anchor初筛(有L个特征层,则g有k × L个候选anchor放入Cg)
7: 计算 Cg 和 g的IOU: Dg = IoU(Cg, g)
8: 计算Dg的均值mg = Mean(Dg)
9: 计算 Dg的标准差vg = Std(Dg)
10: 计算 g的IOU阈值 tg = mg + vg
11: 对于Cg中的每一个候选框 c ∈ Cg
12: 如果IoU(c, g) ≥ tg 并且 c 的中心点在 g的范围内
13: P = P ∪ c
15: 结束正样本P的筛选
16:结束g 的候选正样本筛选
17:负样本集合N = A − P
18:返回正负样本集合
其中,若一个anchor分配给多个g,则anchor分配给IOU最高的g,该流程中有以下几个关键点
- Selecting candidates based on the center distance between anchor box and object 选择和ground truth box中心点距离最近的候选框: 在RetinaNet中,anchor box与GT中心点越近一般IoU越高,而在FCOS中,中心点越近一般预测的质量越高
- Using the sum of mean and standard deviation as the IoU threshold 使用均值和标准差的和作为IOU的阈值: IOU的均值mg代表物体的候选anchor是否合适,如图(a),mg越高,代表IOU的阈值可以设置的越高,如图(b),mg普遍较低,代表候选anchor的质量都不太高,应该选择较低的IOU阈值。标准差vg代表选择哪一个特征层更适合检测物体。如图(a),标准差vg较高,代表存在一个特征层非常适合检测物体,因此tg = mg +vg 能够获取更高的阈值。较低的vg代表有几个相对合适的特征层,tg可以得到一个较低阈值,从多个特征层选择正样本。使用tg作为IOU阈值,相当于依据物体的统计特性,自适应的从合适的特征层选择足够的合适的正样本。
- 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.几乎无超参数
1)该方法只有一个超参数k,实验表明,k的变化对于ATSS算法性能影响不大,作者测试下表k取值,从7-17算法性能几乎一样。
2)作者又通过实验证明,anchor的大小和比例对于算法影响很小,如下表,S表示每个特征层的总步幅大小,算法对于不同的anchor都比较鲁棒。
3)作者测试对于RetinaNet每个位置多个anchor的效果。在不使用ATSS情况下,每个位置平铺9个anchor,若增加上述FCOS中的trick,算法效果有提示,如下表第二行,此时,更多的anchor是有效的,但是,若使用ATSS,每个位置的anchor数量多少影响不大,如下表3-6行。因此,只要正样本选择合适,每个位置的anchor数量影响不大。这个原因有待进一步论证。
最后就是作者对多个算法的实验效果,详见下表。
一些问题讨论:
1)检测是否可以只用正样本,不用负样本?
不可以,因为需要训练网络对背景负样本的识别能力,当识别图片没有待检测物体时,判定没有物体,相当于训练网络做正负二分类,减少inference阶段的误识别。
2)ATSS为什么是有效的?
anchor-based的方法,选择正样本的时候做减法,正负样本是非常不平衡的,负样本非常多,因为他用滑动窗口的方法,每一个像素滑动,所以负样本的数量远多于正样本,anchor-free是一种做加法的方式,根据一个点增加样本。
ATSS主要是平衡正负样本的选择,通过自适应IOU平衡正负样本数量,IOU自适应的方式能够更好的选择正负样本,假如IOU较高,证明该样本相对容易回归;如果没有很高的,则是相对难回归的,自适应阈值能够降低阈值,仍然能选择几个相对好的进行回归,能够保证总是有正样本,而固定的IOU阈值可能就都给删掉了,选择不到框进行回归。
流程的第三到五行,这个步骤是相对筛选出效果特别差的,对总的结果应该是影响比较小,对总结果影响更大的是增加了相对难回归的正样本。
其中的L2距离其实换成DIOU或者是GIOU,可能效果更好。