目标检测论文阅读:Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection

论文链接:https://arxiv.org/abs/1912.02424

1. 背景

anchor-based之前介绍过,目前主流有两种,一种是类似corner那种做关键点检测的,另一种则是FCOS那种每个点做一个单独的样本,paper重点讨论的是后者。先看一下retinanet和fcos的结构图:

抛出FCOS的center-ness分支,其实二者非常相似,但从网络来说,唯一的差别就是retinanet最后预测的通道数多了一个A的系数,用来标识每个位置的不同anchor。
那么问题来了,为什么两者性能差异这么大?只是预测方式的不同会产生如此巨大的Gap吗?

2. 实验分析

paper为了做公平的对比,做了如下两件事:

  1. 统一算法差异,如backbone和loss function等
  2. 将retinanet的anchor数量设置为1,每个location仅预测一个格子,和anchor-free预测一个样本对应
    此时,两者的差异只剩下回归和分类的不同。回归差异主要来源于初始状态不同,一个从点回归预测距离,一个从框回归预测偏差:

    分类差异主要是划分正负样本的不同,retinanet通过iou来进行匹配,同时gt大小也要符合每个level的scale;而FCOS则是主要通过location是不是在点的内部以及各个level的scale:

    paper做的一个工作就是,把这两种不同的采样方式(基于iou/基于spatial和scale),以及两种不同的回归方式(box/point)两两组合,探究主要影响性能的因素,四组结果和对应的状态如下:

    红色代表已有算法,绿色代表新组合出来的算法;我们发现,其实回归方式对性能几乎没有影响,影响最大的是分类的方式,更确切地讲,是划分正负样本不同所带来的差异。
    作者没有说明这种现象产生的原因,个人理解,主要是因为anchor还涉及到一个初态的问题。即使anchor的中心点在目标内部,但是如果anchor设置的不好,也不容易得到比较好的正样本,anchor-free的方式则没有这个问题。因为anchor设置的有可能好,有可能不好,anchor设置得好,就需要高一点的iou去筛选样本;anchor初始状态不佳,就需要低iou去筛选样本。

3. 改进方法

作者提出了一种全新的ASTT模块,说白了其实就是一个自适应的Iou阈值计算模块,可以算每个level的阈值,方法如下:

简单来说:

  1. 针对每个gt,计算它在各个level上和它最接近的k个anchor(根据anchor和gt中心点的距离)
  2. 计算每个level上,k个anchor的iou的平均值,假设有L个level,可以得到L个均值
  3. 计算2中L个均值的平均值和方差,两者的和作为最终阈值

    说白了,这个模块其实做的事情就是:判断gt适合扔到哪个level上,同时根据anchor初始状态的好坏,给一个更恰当的阈值;之所以加上方差,就是为了防止有某个level的数据特别高(例如图(a))的情况;而平均值则可以计算anchor初始状态相对gt的好坏,作者说这样每个gt大概都可以得到0.2*kL个正样本

4. 实验结果

如果没有ASTT,anchor越多性能就越好,但是加上ASTT即使一个anchor性能也很不错。

ASTT也可以用到anchor-free上,具体方法是假设location位置处是一个8倍下采样率大小的正方形。另外这里的center sampling其实是类似foveabox的一种机制,只有gt中距离中心点最近的若干个点才被划分为正样本,有一定的提升效果但不如ASTT。

最终的实验结果:

原paper收录了特别多的检测算法的数据,ASTT应该是效果最好的。
最后关于这篇文章的思考和讨论,强烈建议大家去本文开始的链接看看作者本人的回答和一些讨论,珠玉在前,我就不献丑了。

转载系列【检测】| CVPR2020:Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Trai相关推荐

  1. 论文阅读【检测】CVPR2020 | Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Trai

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Abstract 一.Introduction 二.Difference Analysis of Anchor-based ...

  2. Missing Tag Identification in COTS RFID Systems: Bridging the Gap between Theory and Practice 理解+笔记

    Missing Tag Identification in COTS RFID Systems: Bridging the Gap between Theory and Practice 理解+笔记+ ...

  3. Missing Tag Identification in COTS RFID Systems: Bridging the Gap between Theory and Practice 翻译

    Missing Tag Identification in COTS RFID Systems: Bridging the Gap between Theory and Practice 翻译 名称: ...

  4. 【翻译】Bridging the Gap Between Anchor-based and Anchor-free Detection

    [翻译与个人理解]Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sampl ...

  5. 弥合鸿沟:一种生成内部威胁数据的实用方法(Bridging the Gap: A Pragmatic Approach to Generating Insider Threat Data )

    Bridging the Gap: A Pragmatic Approach to Generating Insider Threat Data 弥合鸿沟:一种生成内部威胁数据的实用方法 摘要:恶意内 ...

  6. C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  7. C#多线程学习(五) 多线程的自动管理(定时器) (转载系列)——继续搜索引擎研究...

    Timer类:设置一个定时器,定时执行用户指定的函数.               定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数. 初始化一个Timer对象: Timer timer ...

  8. C#多线程学习(三) 生产者和消费者 (转载系列)——继续搜索引擎研究

    前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生. ...

  9. Bridging the Gap between Training and Inference for Neural Machine Translation翻译

    Bridging the Gap between Training and Inference for Neural Machine Translation 翻译 原文链接:https://arxiv ...

最新文章

  1. CUDA Samples: approximate image reverse
  2. 【图论技巧】点边转化(拆点和拆边)
  3. Hinton最新演讲透露下一代神经网络模型的构想 | SIGIR 2020
  4. 深度学习——你应该掌握的数学知识
  5. LVM---逻辑盘卷管理
  6. android自定义游戏闯关图,Android自定义View(四) -- Canvas
  7. 垃圾软件!动不动就扣费!| 今日最佳
  8. java内部格式_详解java内部类的访问格式和规则
  9. Docker遇到的一些问题和感想
  10. mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'
  11. 《Go 语言程序设计》读书笔记(十)反射
  12. 【云图】如何创建云图(云存储)
  13. 网站图片全自动加密_外卖优惠平台内容加密参数分析!你见过一块钱买外卖的吗?...
  14. 学习笔记: yield迭代器
  15. Python实现批量Word转PDF
  16. 网络安全日志留存合规解决方案
  17. java 发送封包_【Java学习笔记】自动封包和解包(Autoboxing和AutoUnboxing)
  18. 使用VLC在web页面显示海康威视实时监控
  19. luogu p4995 跳跳
  20. mysql-sandbox_mysql-sandbox 安装

热门文章

  1. Centos磁盘挂载
  2. 美食杰项目---个人页和他人主页
  3. CRM项目,找工作怎么介绍?
  4. 快时尚行业线上零售数据分析报告
  5. 案例分享 | AI助力肯尼亚“Sheng”语研究
  6. Web Services研究者之一:Dr. Michael Sheng:盛权政
  7. c语言描述考试答案,c语言期末试题
  8. AS5600编码器的使用
  9. 市值蒸发300亿,娱乐行业如何渡劫?
  10. 本地数据库上传到云服务器数据库笔记