之前看了yolov7的paper,发现最近几年的目标检测热点好像不是网络结构了,而是正负样本分配策略,于是去回顾了一篇2020年的CVPR火文:ATSS
原文标题:Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection
ATSS取自Adaptive Training Sample Selection
论文地址:https://arxiv.org/pdf/1912.02424.pdf
目录
一、论文背景介绍:
往常,目标检测主流的算法都是anchor-based(不管一阶段还是二阶段),最近几年,anchor-free的算法越来越受欢迎,并且声称比anchor-based的精度高,那么他们差距到底在哪呢?为什么会有这种差距?
这篇论文就是主要思考了这个问题并且进行研究,发现实际上无锚框和基于锚框的算法本质的区别(带来精度差异的原因)是如何定义正训练样本和负训练样本。
作者提出了(自己研究出了)一套自适应样本选择方法(Adaptive Training Sample Selection, ATSS),它显著提高了基于锚和无锚检测器的性能(用的是自己提出的ATSS),因此结论就是样本的选择方法才是带来精度的提升的原因。
此外,这篇文章还挖了个坑,发现在图像上的每个位置没有必要放多个anchor(放一个足矣),但是具体不知道为啥,还有待研究。
二、实验细节
作者以具有代表性的anchor-based算法RetinaNet和anchor-free算法FCOS进行对比实验,进行探究到底他们差异在哪。
首先,RetinaNet和FCOS主要有三个不同点:
- 每个位置上的anchor数量不同。RetinaNet每个位置生成9个anchor;FCOS仅生成1个point。
- 正负样本分配策略不同。RetinaNet根据anchor与gt的MaxIoU进行分配;FCOS根据point是否落在gt内(空间限制),以及不同FPN特征层的回归范围限定(尺度限定)来进行分配。
- 回归策略不同。RetinaNet回归pred bbox和anchor的delta;FCOS直接回归point到pred bbox四边的距离。
除了三个主要不同点,FCOS还比RetinaNet多了五个小技巧trick(详见FCOS文章):
- GroupNorm。FCOS在head卷积层采用GN代替BN。
- GIoU Loss。FCOS采用GIoULoss作为回归定位损失函数。
- In GT Box。FCOS限制正样本要在gt内。
- Centerness。FCOS多预测了一个centerness分支。
- Scalar。FCOS在回归定位预测时,多了一个可学习参数scale。
为了公平起见,RetinaNet每个位置只放了一个正方形锚框,并且RetinaNet进行了FCOS里同等的tricks,最后微调的RetinaNet和FCOS精度只差0.8%左右。
然后作者发现实际上他们俩的差异就在两方面:如何定义正样本和负样本;回归方法。
作者通过对比实验发现,正负样本的定义不同才是导致精度差异的最大原因。
FCOS首先使用空间约束来寻找空间维度上的候选正样本,然后使用尺度约束来选择尺度维度上的最终正样本。
RetinaNet则是用IoU同时选择出空间和尺度维度上的最终正样本,因此FCOS更好点。
而回归方法不影响精度。其中FCOS从中心点开始回归,回归跟GT的边框四条边的四个距离
而RetinaNet从锚框开始回归,回归四个偏移量(两个是GT中心点坐标,两个是锚框大小)
最后来看anchor数量的影响,直接抛出实验结论,对于基于MaxIoU的正负样本分配策略而言,anchor数量对精度是有显著影响的,从anchor数量1到9可以带来1.8%的精度提升。很好理解,因为anchor太少,可能有些gt没有被分配上,导致精度下降。
但是如果采用FCOS的正方样本分配策略或者后续提出的ATSS分配策略,那么anchor数量对精度的影响忽略不计。
三、作者提出的ATSS方法
作者提出了一种ATSS分配策略。具体来说,分为以下几步:
1、对于图像上的每一个groud-truth box记为g,在每一层特征金字塔,根据L2距离选取跟g的中心点最近的k个候选正样本(anchor box),那么如果有L层特征金字塔,总共会选择出L*k个候选框
2、计算每个候选框和g的IoU值,并且计算这个IoU值集合的均值和方差
3、均值和方差求和作为IoU阈值,筛选出大于这个阈值的候选框作为最终的正样本们
4、此外,如果将一个锚框分配给多个ground-truth box,则会选择IoU最高的那个。剩下的是负样本。此外,正样本的中心一定被限制在gt内,这是当正样本的前提,不然不考虑。
作者还分析了这些步骤采用的动机(原因)
1、为什么考虑跟GT中心点L2距离最近的?
RetinaNet中IOU越大的anchor,越靠近gt中心,同样的,FCOS中越靠近gt中心的point,检测出的预测框质量越高。
2、为什么计算均值和方差求和作为IoU阈值?
使用某个gt与所有anchor的iou均值和方差来确定该gt的自适应的iou阈值,这就是ATSS中的关键,也是Adaptive自适应一词的由来,一句话概括,自适应阈值就是基于统计学而得的iou阈值。
3、为什么正样本的中心一定要被限制在gt内?
借鉴了FCOS的分配策略中的空间限制,要求point落于gt内,原因是落在gt外,提取的图像特征不正确。
题外话:k是ATSS中唯一的超参数,而且通过后续实验发现,k的设置对精度影响不大!