论文指出one-stage anchor-based和center-based anchor-free检测算法间的差异主要来自于正负样本的选择,基于此提出ATSS(Adaptive Training Sample Selection)方法,该方法能够自动根据GT的相关统计特征选择合适的anchor box作为正样本,在不带来额外计算量和参数的情况下,能够大幅提升模型的性能,十分有用



来源:晓飞的算法工程笔记 公众号

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

Introduction


  在仔细比对了anchor-based和anchor-free目标检测方法后,结合实验结果,论文认为两者的性能差异主要来源于正负样本的定义,假如训练过程中使用相同的正负样本,两者的最终性能将会相差无几。为此,论文提出ATSS( Adaptive Training Sample Selection)方法,基于GT的相关统计特征自动选择正负样本,能够消除anchor-based和anchor-free算法间的性能差异

  论文的主要贡献如下:

  • 指出anchor-free和anchor-based方法的根本差异主要来源于正负样本的选择
  • 提出ATSS( Adaptive Training Sample Selection)方法来根据对象的统计特征自动选择正负样本
  • 证明每个位置设定多个anchor是无用的操作
  • 不引入其它额外的开销,在MS COCO上达到SOTA

Difference Analysis of Anchor-based and Anchor-free Detection


  论文选取anchor-based方法RetinaNet和anchor-free方法FCOS进行对比,主要对比正负样本定义和回归开始状态的差异,将RetinaNet的anchor数改为1降低差异性,方便与FCOS比较,后续会测试anchor数带来的作用

Inconsistency Removal

  由于FCOS加入了很多trick,这里将RetinaNet与其进行对齐,包括GroupNorm、GIoU loss、限制正样本必须在GT内、Centerness branch以及添加可学习的标量控制FPN的各层的尺寸。结果如表1,最终的RetinaNet仍然与FCOS有些许的性能差异,但在实现方法上已经基本相同了

Essential Difference

  在经过上面的对齐后,仅剩两个差异的地方:(i) 分类分支上的正负样本定义 (ii) 回归分支上的bbox精调初始状态(start from anchor box or anchor point)

  • Classification

  RetinaNet使用IoU阈值(\(\theta_p\),\(\theta_n\))来区分正负anchor bbox,处于中间的全部忽略。FCOS使用空间尺寸和尺寸限制来区分正负anchor point,正样本首先必须在GT box内,其次需要是GT尺寸对应的层,其余均为负样本

  • Regression

  RetinaNet预测4个偏移值对anchor box进行调整输出,而FCOS则预测4个相对于anchor point值对anchor box进行调整输出

  • Conclusion

  对上面的差异进行交叉实验,发现相同的正负样本定义下的RetinaNet和FCOS性能几乎一样,不同的定义方法性能差异较大,而回归初始状态对性能影响不大。所以,基本可以确定正负样本的确定方法是影响性能的重要一环

Adaptive Training Sample Selection


Description

  论文提出ATSS方法,该方法根据目标的相关统计特征自动进行正负样本的选择,具体逻辑如算法1所示。对于每个GT box \(g\),首先在每个特征层找到中心点最近的\(k\)个候选anchor boxes(非预测结果),计算候选box与GT间的IoU \(\mathcal{D}_g\),计算IoU的均值\(m_g\)和标准差\(v_g\),得到IoU阈值\(t_g=m_g+v_g\),最后选择阈值大于\(t_g\)的box作为最后的输出。如果anchor box对应多个GT,则选择IoU最大的GT

ATSS的思想主要考虑了下面几个方向:

  • Selecting candidates based on the center distance between anchor box and object

  在RetinaNet中,anchor box与GT中心点越近一般IoU越高,而在FCOS中,中心点越近一般预测的质量越高

  • Using the sum of mean and standard deviation as the IoU threshold

  均值\(m_g\)表示预设的anchor与GT的匹配程度,均值高则应当提高阈值来调整正样本,均值低则应当降低阈值来调整正样本。标准差\(v_g\)表示适合GT的FPN层数,标准差高则表示高质量的anchor box集中在一个层中,应将阈值加上标准差来过滤其他层的anchor box,低则表示多个层都适合该GT,将阈值加上标准差来选择合适的层的anchor box,均值和标准差结合作为IoU阈值能够很好地自动选择对应的特征层上合适的anchor box

  • Limiting the positive samples’ center to object

  若anchor box的中心点不在GT区域内,则其会使用非GT区域的特征进行预测,这不利于训练,应该排除

  • Maintaining fairness between different objects

  根据统计原理,大约16%的anchor box会落在\([m_g+v_g, 1]\),尽管候选框的IoU不是标准正态分布,但统计下来每个GT大约有\(0.2 * k\mathcal{L}\)个正样本,与其大小和长宽比无关,而RetinaNet和FCOS则是偏向大目标有更多的正样本,导致训练不公平

  • Keeping almost hyperparameter-free

  ATSS仅有一个超参数\(k\),后面的使用会表明ATSS的性能对\(k\)不敏感,所以ATSS几乎是hyperparameter-free的

Verification

  将ATSS应用到RetinaNet和FCOS上测试效果:

  • 将RetinaNet中的正负样本替换为ATSS,AP提升了2.9%,这样的性能提升几乎是没有任何额外消耗的
  • 在FCOS上的应用主要用两种:lite版本采用ATSS的思想,从选取GT内的anchor point改为选取每层离GT最近的top \(k\)个候选anchor point,提升了0.8%AP;full版本将FCOS的anchor point改为长宽为\(8S\)的anchor box来根据ATSS选择正负样本,但仍然使用原始的回归方法,提升了1.4%AP。两种方法找到的anchor point在空间位置上大致相同,但是在FPN层上的选择不太一样。从结果来看,自适应的选择方法比固定的方法更有效

Analysis

  参数k在区间\([7,17]\)几乎是一样的,过大的设置会到导致过多的低质量候选anchor,而过小的设置则会导致过少的正样本,而且统计结果也不稳定。总体而言,参数\(k\)是相对鲁棒的,可以认为ATSS是hyperparameter-free

  在FCOS的full版本中使用了\(8S\)的anchor box,论文对不同的尺寸进行了对比,如表5所示,也在\(8S\)基础上对不同的长宽比进行了对比,如表6所示。从结果来看,性能几乎对尺寸和长宽比无关,相对鲁棒

Discussion

  前面的RetinaNet实验只用了一个anchor box,论文补充测试了不同anchor数下的性能,实验中的Imprs为表1中的提升手段。从结果来看,在每个位置设定多个anchor box是无用的操作,关键在于选择合适的正样本

Comparison

  实现的是FCOS版本的ATSS,在相同的主干网络下,ATSS方法能够大幅增加准确率,十分有效

Conclusion


  论文指出one-stage anchor-based和center-based anchor-free检测算法间的差异主要来自于正负样本的选择,基于此提出ATSS(Adaptive Training Sample Selection)方法,该方法能够自动根据GT的相关统计特征选择合适的anchor box作为正样本,在不带来额外计算量和参数的情况下,能够大幅提升模型的性能,十分有用





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

ATSS : 目标检测的自适应正负anchor选择,很扎实的trick | CVPR 2020的更多相关文章

  1. Domain Adaptive Faster R-CNN:经典域自适应目标检测算法,解决现实中痛点,代码开源 | CVPR2018

    论文从理论的角度出发,对目标检测的域自适应问题进行了深入的研究,基于H-divergence的对抗训练提出了DA Faster R-CNN,从图片级和实例级两种角度进行域对齐,并且加入一致性正则化来学 ...

  2. 第三十五节,目标检测之YOLO算法详解

    Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object de ...

  3. 【目标检测】:SPP-Net深入理解(从R-CNN到SPP-Net)

    一. 导论 SPP-Net是何凯明在基于R-CNN的基础上提出来的目标检测模型,使用SPP-Net可以大幅度提升目标检测的速度,检测同样一张图片当中的所有目标,SPP-Net所花费的时间仅仅是RCNN ...

  4. 经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷

    ​ 前言: 目标检测的预测框经过了滑动窗口.selective search.RPN.anchor based等一系列生成方法的发展,到18年开始,开始流行anchor free系列,CornerNe ...

  5. 目标检测中的anchor-based 和anchor free

    目标检测中的anchor-based 和anchor free 1.  anchor-free 和 anchor-based 区别 深度学习目标检测通常都被建模成对一些候选区域进行分类和回归的问题.在 ...

  6. 目标检测 anchor 理解笔记

    anchor在计算机视觉中有锚点或锚框,目标检测中常出现的anchor box是锚框,表示固定的参考框. 目标检测的任务: 在哪里有东西 难点: 目标的类别不确定.数量不确定.位置不确定.尺度不确定 ...

  7. 目标检测 1 : 目标检测中的Anchor详解

    咸鱼了半年,年底了,把这半年做的关于目标的检测的内容总结下. 本文主要有两部分: 目标检测中的边框表示 Anchor相关的问题,R-CNN,SSD,YOLO 中的anchor 目标检测中的边框表示 目 ...

  8. 关于目标检测的anchor问题

    关于目标检测其实我一直也在想下面的两个论断: Receptive Field Is Natural Anchor Receptive Field Is All You Need 只是一直没有实验.但是 ...

  9. 旷世提出类别正则化的域自适应目标检测模型,缓解场景多样的痛点 | CVPR 2020

    论文基于DA Faster R-CNN系列提出类别正则化框架,充分利用多标签分类的弱定位能力以及图片级预测和实例级预测的类一致性,从实验结果来看,类该方法能够很好地提升DA Faster R-CNN系 ...

  10. 目标检测复习之Anchor Free系列

    目标检测之Anchor Free系列 CenterNet(Object as point) 见之前的过的博客 CenterNet笔记 YOLOX 见之前目标检测复习之YOLO系列总结 YOLOX笔记 ...

随机推荐

  1. iptables的mangle表

    mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由. 使用策略路由 对应的场景, 都是有多个网口, 常见的使用步骤 1. 创建路由表 ...

  2. 【Unity3D】地面网格特效

    1 前言 ​ 本文实现了地面网格特效,包含以下两种模式: 实时模式:网格线宽度和间距随相机的高度实时变化: 分段模式:将相机高度分段,网格线宽度和间距在每段中对应一个值. ​ 本文完整资源见→Unit ...

  3. 解决ufw下pptp客户端连接问题

    解决ufw下pptp客户端连接问题 解决ubuntu在启动ufw的情况下pptp客户端无法链接的问题. 修改/etc/ufw/before.rules 在COMMIT之前添加如下内容: -A ufw- ...

  4. Springboot实现remember-me记住我功能

    1.什么是remeber-me? remeber-me即记住我功能,是我们在登录web系统时的常见勾选项.当我们登录一个web系统时除了输入常规的用户名.密码后还可以勾选记住我选项(假设该系统提供了该 ...

  5. java打印杨辉三角

    package com.dylan.practice.interview; /** * 打印杨辉三角 * * 原理 * 1.每个数等于它上方两数之和 * 2.第n行的数字有n个 * * @author ...

  6. mybatis处理集合、数组参数使用in查询

    对于mybatis的参数类型是集合数组的时候进行查询. 第一种:参数list ,使用mybatis的标签 1 SELECT * FROM TABLE_NAME AS a WHERE 2 3 a.id ...

  7. pwd模块

    # pwd模块提供了获取UNIX平台用户的账户与密码信息(通过文件/etc/passwd),在所有的UNIX版本平台都可以用. # pwd模块返回的是一个类似元组的对象,该对象的各个属性对应于pass ...

  8. 【Python语法糖】闭包和装饰器

    Python闭包和装饰器 参考: https://zhuanlan.zhihu.com/p/453787908 https://www.bilibili.com/video/BV1JW411i7HR/ ...

  9. 【Azure 应用服务】在创建App Service时,遇见“No available instances to satisfy this request. App Service is attempting to increase capacity.”错误

    问题描述 在创建新的App Service,遇见了资源不满足当前需求的提示.详细消息为: "Code": "Conflict","Message&qu ...

  10. 数据库运维 | 携程分布式图数据库NebulaGraph运维治理实践

    作者简介:Patrick Yu,携程云原生研发专家,关注非关系型分布式数据存储及相关技术. 背景 随着互联网世界产生的数据越来越多,数据之间的联系越来越复杂层次越来越深,人们希望从这些纷乱复杂的数据中 ...