点击上方“视学算法”,选择加"星标"或“置顶

重磅干货,第一时间送达

作者丨SuperHui@知乎(已授权)

来源丨https://zhuanlan.zhihu.com/p/347515623

编辑丨极市平台

导读

本文提出了一种简单的NMS-free、end-to-end的目标检测框架,仅需要对现有one-stage检测器(FCOS、ATSS)做很小的修改,即可移除复杂的后处理NMS,达到甚至超过原有检测器的性能,并且几乎不影响推理速度。

简单介绍一下我们最近的一项关于end-to-end检测方面的工作:

Object Detection Made Simpler by Eliminating Heuristic NMS

论文链接:https://arxiv.org/pdf/2101.11782.pdf

代码链接:即将开源(https://github.com/txdet/FCOSPss)

1. Motivation

我们提出了一种简单的NMS-free、end-to-end的目标检测框架,仅需要对现有one-stage检测器(FCOS、ATSS)做很小的修改,即可移除复杂的后处理NMS,达到甚至超过原有检测器的性能,并且几乎不影响推理速度。试想一下,如果模型有能力为每个object仅激活一个正样本,那复杂的NMS是不是就可以移除了。为此,我们在现有NMS-based的one-stage detector基础上引入一个正样本选择器(positive sample selector,PSS),作为单独一个分支来辅助完成为每个object挑选最优正样本的工作,基础detector以FCOS为例,具体结构如下:

目标检测之前主要分为two-stage和one-stage,尤其是one-stage方法越来越受欢迎,基本是工业界做项目尤其是端上项目的首选。FCOS和FoveaBox等方法掀起了去anchor这种人工先验的潮流。那么现在对于实现真正的end-to-end检测只剩下NMS这个启发式的复杂的后处理操作了。最近,DETR、Deformable DETR等方法通过使用Hungarian matching方法实现one-to-one的匹配,提供了基于Transformer的attention机制在E2E检测方面的新思路。前段时间,培泽和剑锋分别提出了OneNet和DeFCN,不使用Transformer进行NMF-free的E2E检测,我们的方法也是主要受DeFCN的启发并进行改进和重新设计。总的来说,我们设计了一个更简单性能更强的E2E检测框架,基于现有NMS-based one-stage的检测器,引入PSS head并重新设计了目标函数。

2.Method

2.1 Overall Training Objective

整体损失函数包括三部分,原始detector的loss(这里以FCOS为例),PSS loss和ranking loss。我们尽可能不破坏原有NMS-based的detector,原有的loss也都保留,你可以认为是作为辅助loss,以FCOS为例,就是分类loss、回归loss和center-ness loss。DeFCN里面没用box loss作为aux loss,我们通过改进也用上可以work。

2.1.1 PSS loss 

是作用于PSS head的分类loss,是训练PSS head从而完成one-to-one pred的关键loss,在one-to-many pred中一个object往往对应多个正样本,PSS head就是用来从多个正样本中挑选最优的那一个作为唯一正样本。你可以认为它的输出是一个大小为  binary mask,计算的是  和gt之间的focal loss,其中  为sigmoid function,  为原始detector的分类score,  为center-ness。通过这种方式训练,使得PSS有能力为每个object激活一个最优的正样本。

2.1.2 Ranking loss

我们早期实验发现,预测结果中会出现FP 的max socre 高于 TP min score的现象,其实也很正常,为了进一步拉开差距,从而引入来Ranking loss:

通过在image level加margin,能进一步缓解之前的实验现象,并不影响训练效率的情况下能带来一定的性能提升。

2.2 One-to-one Label Assignment

当进行one-to-one label assign的时候,最重要的就是给每个gt挑选最优的那个正样本,那就需要给每个样本进行质量评估,DeFCN指出最优的匹配的时候应该同时考虑classification的匹配和localization的匹配,借鉴DeFCN,我们对样本评估matching score:

不同点在于,除了分类质量部分我们引入来PSS 的mask和center-ness score,我们对spatial prior进行了修改。因为我们发现原先比如DeFCN固定采用center sampling策略作为spatial prior会有问题,比如FCOS在每个level assign正样本的时候是配置了range的,再比如ATSS就不是用center sampling策略,这样会导致一个问题:one-to-one match部分的正样本可能是one-to-many match部分的负样本,从而产生优化冲突。于是我们引入positiveness prior,即我们把原来的空间先验换成了原始detector里的正样本先验。

2.3 Conflict in the Two Classification Loss Terms

其实,one-to-many的分类loss和one-to-one的分类loss是存在优化矛盾的。比如一个gt在one-to-many里对应K个正样本,但通过我们的PSS head仅选出了一个最优的正样本,也就是需要把其余K-1个样本置为负样本,也就是说多个样本可能同时被当作正样本和负样本,这使得模型难以训练,产生优化冲突。为了解决这个问题,我们引入 stop-grad,如框架图所示,作用于PSS head上,也是受到了Kaiming的那篇《Exploring Simple Siamese Representation Learning》启发。

2.4 Stop Gradient

因为我们发现上述优化冲突问题,尤其是可视化特征发现,原始鲁棒的reg 特征被PSS head搞sharp了。我们通过_detach()_操作来断绝PSS head的优化尽量不影响前面的特征,实现解耦,并且还能利用上前面收敛较快的鲁棒的reg 特征。我们实验发现这个操作能随着训练持续提高one-to-one pred (w/ NMS)的检测性能。如下图:

3. Experiments

我们主要在FCOS和ATSS上接上我们的PSS方法进行实验,结果如下:

我们大大缩小了E2E检测与NMS-based检测的gap,达到甚至超过了ATSS、FCOS的baseline,网络推理耗时仅少量增加,并且由于移除了NMS,我们的后处理耗时减小了。

3.1 Visualization

我们做了更多详细的ablation 实验,还请参考我们的论文全文。

4. Conclusion

我们提出了一个更简单和更有效的E2E检测框架,仅需要对FCOS、ATSS进行简单的修改,就能移除NMS,并且达到和超过ATSS、FCOS的baseline。因为我们保留了原始detector,所以模型训练完成后,你其实还可以继续选择使用NMS的结果,而去除NMS的pipeline使得我们模型更加容易部署。我们希望我们的工作能够带给大家一些关于End-to-End检测的新的启发。

点个在看 paper不断!

PSS:更简单有效的End-to-End检测相关推荐

  1. 论文阅读|目标检测之PSS:更简单有效的End-to-End检测

    Object Detection Made Simpler by Eliminating Heuristic NMS 摘要 1. Introduction 2. Related Work 3. Our ...

  2. PSS:简单有效的End-to-End检测

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨SuperHui@知乎(已授权) 来源丨https://zhu ...

  3. 修改所有列_多人编辑,自动汇总,领导可见所有?用 SeaTable 表格更简单

    在日常办公中,经常会遇到这种情况,需要大家协作填写某个表格的数据,以便快速高效地汇总数据,同时为了保证填写人不能看到和修改别人的数据,就需要每个填写人只能看到自己所填写的数据,而表格数据收集人能看到所 ...

  4. 机器学习本该用起来更简单

    机器学习本该用起来更简单 作者 | Caleb Kaiser译者 | 王强免责声明:本文内容是基于我对一些机器学习团队的观察结果,而不是对这个行业的一份学术调查.利益相关,我需要先表明自己是 Cort ...

  5. 项目管理六大制约因素_知道了这7点,软件项目管理会变得更简单!

    软件项目管理,很多产品经理(项目经理)都在吐槽,自己怎么样难以管理,不好做.但是,软件项目管理虽然不易,但是也可以适当把软件项目管理变得更简单,更易于管理.但是需要多做一些管理工作.下面的七点,好好看 ...

  6. 让CoreData更简单些

    从简书迁移到掘金 前言 本文并不是CoreData从入门到精通之类的教程, 并不会涉及到过多的原理概念描述, 而是介绍如何让CoreData的使用变得更加简单明了, 方便亲民. 全文约六千字, 预计花 ...

  7. [转载]ICollectionView让MVVM更简单

    ICollectionView让MVVM更简单 (一)ICollectionView的作用 允许集合具有当前记录管理.自定义排序.筛选和分组这些功能. (二)如果在MVVM中不用ICollectonV ...

  8. 圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单

    圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单 // //  CircleCore.h //  Quartz // //  Created by 仙人掌 on ...

  9. 未来CPU内核将更简单!

    英特尔高级研究员:未来CPU内核将更简单!   2004/10/22 [日经BP社报道] 在英特尔公司负责系统架构研究部门的英特尔高级研究员.企业技术部门高级经理.系统技术实验室的贾斯廷·莱特纳(Ju ...

最新文章

  1. 人脸识别引擎SeetaFaceEngine中Detection模块使用的测试代码
  2. ROS 不能再详细的安装教程
  3. 用python解“逆序三位数”问题
  4. 为什么 CTO、技术总监、架构师都不写代码,还这么牛?
  5. 简单的shell脚本实例
  6. vim常用命令总结 (转)
  7. XNA Billboard(公告板技术)
  8. kafka删除队列_没想到 Kafka 还会这样问,学会这些带你轻松搞定大厂面试!
  9. 深度学习之基于DCGAN实现动漫人物的生成
  10. amd服务器有什么优势,服务器市场才是AMD真正想要发挥作用的地方
  11. 开课吧9.9元学python靠谱吗-quot;我,90 后,月薪 5k,副业 2w ”年轻人搞副业到底有多野?...
  12. Java 重载、重写(Override、Overload)
  13. 计算机中答案没有小数怎么办,嵌入式编程中计算机是如何存储小数的
  14. 没有粉丝能开快手小店吗?做好有何技巧?
  15. 【文献学习】热电偶信号调理、IOT接入
  16. 关于绿色高山茶叶的营销方案
  17. MySql数据库三种关系详解
  18. 使用SolidWorks 导入STEP后,部件的浮动问题
  19. day37--十字链表
  20. JS调用万维易源、聚合数据提供的接口获取7天天气预报

热门文章

  1. Php Fatal error: Allowed memory size of 33554432 bytes exhausted 的解决办法
  2. 关系数据理论中的范式
  3. 【组队学习】【29期】2. 计算机视觉
  4. LeetCode实战:存在重复元素
  5. 利用BP神经网络教计算机进行非线函数拟合(代码部分单层)
  6. 分析与设计(AD)简介(2)
  7. 46W 奖金池等你来战!微众银行第三届金融科技高校技术大赛火热报名中!
  8. 谁说技术男不适合养猫!90后程序员2天做出猫咪情绪识别软件
  9. 英特尔第三代 Ice Lake 发布正面与 AMD EPYC PK,结果令人大跌眼镜!
  10. 再见 for 循环!pandas 提速 315 倍~