ATSS 算法——揭秘anchor-free和anchor-based算法差异

最后都变了- 提交于 2020-02-01 05:46:35

论文: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

2018年发表的CornerNet重新掀起了目标检测领域基于anchor-free实现目标检测算法的热潮,所以随后的一年多时间可以看到大量的anchor-free论文,比如FCOS、CenterNet等,但anchor-based目标检测算法依然占据着非常重要的地位。这篇博客要介绍的论文:ATSS(Adaptive Training Sample Selection)主要就是研究anchor-free和anchor-based算法之间的关系,内容上主要包括2大方面:1、对于基于anchor-based和anchor-free的目标检测算法之间的效果差距做了详细的对比实验,得出的结论就是如何确定正负样本是影响这2类算法的重要原因。2、提出了ATSS方式来确定正负样本。这2个方面其实就包含在论文题目中了。

这篇论文看下来还是比较清晰易懂的,切入点在于基于anchor-based和anchor-free的目标检测算法之间的效果差异到底是由什么原因造成的?于是作者分别选了2个代表性算法:RetinaNet和FCOS,二者在COCO数据集上的mAP分别是32.5和37.8,差距还是比较大的。

此时就得分析下RetinaNet和FCOS在算法上的差异,主要有以下3点
1、RetinaNet在特征图上每个点铺设多个anchor,而FCOS在特征图上每个点只铺设一个中心点,这是数量上的差异。
2、RetinaNet基于anchor和GT之间的IoU和设定的阈值来确定正负样本,而FCOS通过GT中心点和铺设点之间的距离和尺寸来确定正负样本。这1点可以从Figure1的对比中看到,牛这张图像中蓝色框和点表示GT,红色框表示RetinaNet铺设的anchor,红色点表示FCOS铺设的点,左右两边类似表格上的数值表示最终确定的正负样本,0表示负样本,1表示正样本。
在这里插入图片描述
3、RetinaNet通过回归矩形框的2个角点偏置进行预测框位置和大小的预测,而FCOS是基于中心点预测四条边和中心点的距离进行预测框位置和大小的预测。这1点可以从Figure2的对比中看到,蓝色框和点表示GT,红色框表示RetinaNet的正样本,红色点表示FCOS的正样本。
在这里插入图片描述

知道了以上这3个差异点,接下来就可以设计对比实验了。因为主要关注第2、3点的影响,所以首先将RetinaNet在每个点铺设的anchor数量减少到1,也就是和FCOS保持一致,这样第1点差异就不存在了。另外,由于FCOS论文中用了一些训练的技巧,如Table1所示,比如Group Normalization、GIoU Loss等,所以为了公平对比2个算法,作者在RetinaNet上也加上了这些技巧,最后mAP达到37.0,基本上和FCOS的37.8很接近了。
在这里插入图片描述

所以接下来作者对剩余的0.8mAP差异进行了分析,做了Table2这个实验。这个表格可以这样看:
按行看,Intersection over Union这一行的两个数值表示RetinaNet和FCOS都采用基于IoU方式确定正负样本,二者的mAP基本没有差别;同样Spatial and Scale Constraint这一行的两个数值表示RetinaNet和FCOS都采用基于距离和尺寸方式确定正负样本,二者的mAP也是一样。所以结论就是:回归方式的不同并不是造成FCOS和RetinaNet效果差异的原因,也就是前面说的第2点差异是不影响的
按列看,Box这一列的两个数值表示将RetinaNet的正负样本确定方式从IoU换成和FCOS一样的基于距离和尺寸,那么mAP就从37.0上升到37.8;同样Point这一列的两个数值表示将FCOS的正负样本确定方式从基于距离和尺寸换成和RetinaNet一样的基于IoU,那么mAP就从37.8降为36.9。所以结论就是:如何确定正负样本才是造成FCOS和RetinaNet效果差异的原因,也就是前面说的第3点差异才是根源
在这里插入图片描述

从论文开始到目前为止的实验对比和分析都是步步紧扣,答案也随之浮出水面,接下来就是论文的第2大部分内容,也就是提出ATSS来确定正负样本,不过这部分给我的感觉没有前面的实验对比来得有说服力。ATSS本身没有太复杂的内容,如Algorithm 1所示,第3到6行是根据anchor和GT的中心点距离选出候选正样本,每层K个;第7行是计算IoU;第8行到第15行是先计算IoU的均值和标准差从而得到阈值,然后根据阈值进行正负样本确定。
在这里插入图片描述

最后,为什么我觉得这部分不如前面有说服力?ATSS中的A表示adaptive,翻译过来就是自适应,也就是说正负样本是可以自动确定的,但显然Algorithm 1中还是有少量超参数比如K,以及关于阈值的确定有比较多的先验知识。
不过不可否认的是ATSS的超参数量比之前还是要少一些,而且ATSS对anchor的尺寸、宽高比、数量比较鲁棒,可以参考论文中Table5、Table6和Table7。最终的实验结果如Table8所示,效果上还是不错的,开源代码中还有关于速度的介绍:
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!