首次适应算法_CVPR 2020丨?商汤TSD目标检测算法获得Open Images冠军

ce25d5666bc67343e8046545e400d9f4.png

编者按:此前,在文章《商汤科技57篇论文入选ICCV 2019,13项竞赛夺冠》里,商汤君报道了商汤科技荣获Open Images Object Detection Challenge 2019 冠军。

由Google AI主办的Open Images大赛是目前通用物体检测和实例分割两个领域中数据量最大、数据分布最复杂、最有挑战性的竞赛。它比COCO数据大一个量级,标注更不规则,场景更复杂。

获得此项竞赛冠军的核心算法是基于任务间空间自适应解耦(task-aware spatial disentanglement,TSD)检测算法。如今,该算法的论文也被CVPR 2020收录,并即将在GitHub上开放源代码,有兴趣的同学可关注https://github.com/Sense-X/TSD。


随着深度学习的不断发展,目标检测精度的提升愈加困难,一般而言能提升1~2%的mAP(平均准确率)便算是很大的突破了。

但是,商汤研究团队发表的TSD算法提升了难以置信的3~5% mAP!而且是在行业难度最高的数据集Open Images和COCO。以该算法作为核心的解决方案(链接:

https://arxiv.org/pdf/2003.07557.pdf)荣获Open Images Object Detection Challenge 2019 冠军。

de9140929fbb57ecb8fc6e4a3f4ab6e2.png
图1:商汤研究院基础技术与MMLab的联合团队(参赛团队名:MMfruit)获得Open Images Object Detection Challenge 冠军

首次提出分类和回归任务分别学习

机器认识一个物体需要从两个维度:分类和回归。分类是指识别物体的属性,例如判断一幅图片上的动物是一只猫还是一只狗;回归是指识别物体的区域和位置。

传统目标检测方法(比如Faster RCNN)通常是分类和回归一起学习,共享Proposal(物体潜在存在的区域框)和Sibling head(特征提取器)。

它是怎样的过程呢?如图2的下半部分,分类和回归共享一个输入Proposal P(即红色框),以及同一个特征提取器f(·),输出结果W/o TSD。

但是我们发现,最终输出的图片框其分类置信度和检测框的准确度是不一致的,如下图检测框的置信度很高,但是没有框住飞机机翼,即区域框是不准确的。

3b6f2fff19a11105c73d148e9d4f842f.png
图2:传统目标检测方法和商汤TSD方法比较

那么为什么会造成这样的问题?商汤研究团队通过一个实验来探寻,发现分类和回归过程的特点,如下图:

7df71d66258d008210fd1696fde6994a.png

在实验中发现,分类任务(图中Classification)更关注语义信息丰富的地方,而回归任务(图中Localization)比较关注物体的边界处。所以传统的Faster RCNN对于分类任务和回归任务共享同一个Proposal和特征提取器就会出现一些内在的矛盾影响检测器的训练

本文提出的基于任务间空间自适应解耦(task-aware spatial disentanglement,TSD)的检测算法,对于分类任务和回归任务,分别让其学习各自适应的Proposal和特征提取器。

如图2上半部分,将输入Proposal P的分类任务变换成P_c,回归任务变换成P_r。再分别通过不同的特征提取器f_c(·)和f_r(·)做分类和回归。

这种方法的输入和特征提取器都是不共享的,从而最大程度地减少由于优化目标不一样带来的冲突,进而显著提升性能。

引入损失函数PC,大幅度提升检测器性能

本文还引入了渐进约束损失函数PC(Progressive Constraint),帮助TSD检测器性能稳定超越传统的检测器头部,让分类任务和回归任务的准确度比原始方法更高。

对于分类任务,通过以下公式保证分类任务准确度比传统方法更高:

fecb2f1ad93909385bc1cd5b8c22e4d1.png

其中

3c9264823672cf16ddd7301d2e96ddc3.png

表示对于第y类的预测置信度,

97c931c853f8528f610027f3cd938273.png

是预定的Margin。

对于回归任务,通过以下公式保证回归任务准确度比传统方法更高:

af4455081443787fde996fab3f47d7dd.png

47bbb7a782492443ff5b179c614d480a.png

是原始检测器头部得到的检测框,

7ad546166c504183d4de28e488036028.png

是TSD算法得到的检测框。如果当前的Proposal是一个负样本,那么该Loss会被Ignore。

综上,在整个训练过程中,整体检测器的优化为:

bb2c7a701d7c39116d7ff0e86726c8a8.png

在推理阶段,原始的检测器头部不再使用。Classical Loss是原始损失函数,TSD Loss是本文提出的损失函数。

实验结果

1、与不同网络解耦方式比较,TSD效果最好

0d265630424b29f6e54eccbb1e7ece49.png

首先将TSD与在不同的网络层进行任务间解耦的结构进行比较,如上图所示。

2ee235e9aa7fec84090ddd0c53d2223c.png
表1:各类解耦方式与TSD解耦方式比较

综合参数量和性能提升,TSD相比于其他解耦方式,具备明显的优势。

2、TSD与Sibling head联合训练效果更好

在TSD整体的训练中,传统的Sibling head仍然可以进行联合训练来优化Backbone,同时渐进约束损失(PC)可以进一步提升TSD的性能。

6ab6bc145ff31b3edd50890533d16156.png
表2:传统Sibling head与TSD联合训练可提升性能

2b5537d8bd22c139723af9d016e17a46.png
表3:加入PC损失函数对于分类和回归准确率影响

从表2可以看出两个Head联合训练可以进一步带来性能的提升。从表3可以看出,加入损失函数PC之后,无论对于分类还是对于回归,PC都可以进一步带来准确率提升,两者都用PC带来的效果是最好的。

3、TSD在COCO、Open Images和网络结构上均能大幅提升准确率

从表4可以看出,在不同网络结构上(包括ResNet-50、ResNet-101、ResNet-152等),本文提出的TSD方法在准确度上均有明显提升。且推理时间增长不超过10%。

88e1af69b5f6faa1882864bd9713b760.png
表4:在不同网络结构上,传统方法与TSD方法准确度对比

表5可以看出,在谷歌提出的Open Images大规模数据集上,TSD方法均有性能上的显著提升。

c6311316ca07244137c9fcc9a78bed3d.png
表5:在Open Images数据集上,传统方法与TSD方法对比

04f697c831146eabd5b086ecaa6b5b3f.png
表6:在COCO分割任务上,传统方法与TSD方法对比

在表6的COCO分割任务上,TSD方法也能带来明显性能提升,而且提升幅度较大。

4、与当前行业领先算法比较

41fa6e115bd36be0ccc3a2621be03378.png

基于ResNet-101的Backbone,TSD算法达到了新的state-of-the-art的性能,并且在SENet154-DCN的基础结构下,COCO的性能达到了51.2 map。

结论

本文针对通用物体检测算法中分类任务和回归任务之间因为优化目标不一致带来的潜在冲突,提出了基于任务间空间自适应解耦的检测算法TSD。

在检测器头部通过特定设计的偏移量生成策略以及联合训练优化渐进损失来有效的提升检测器性能,在额外的推理时间损耗不超过10%的情况下,能够稳定提升3%~5%的检测性能,并且成为Open Images 2019 Object detection challenge夺冠的核心算法。

大量实验证明,TSD可以比较容易的搭配各种不同的网络结构以及Anchor-based的检测框架来进行使用。

更多精彩内容可查看原文,链接:https://arxiv.org/pdf/2003.07540.pdf

招聘

商汤研究院-基础技术团队招聘研究员见习研究员:

1.强化学习方向:探索在复杂环境(如游戏AI、系统优化)中的强化学习方法,研究包括但不限于multi agent RL、imitation learning、model-free场景下sampling efficiency等基础问题;参与实际项目中的RL方法设计与探索。

2.巨型网络优化方向:研究在billion level数据下的超大型网络结构设计与搜索,包括但不限于人脸识别模型优化、sampling based NAS,optimizer设计与搜索等。

有兴趣的小伙伴请投递简历至liuyu@sensetime.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩JDK 12的Switch表达式

在博客文章“操作中的JDK语言功能预览:切换表达式 ”中,我讨论了JEP 325 [“切换表达式( 预览 )”)如何作为指定的“ 预览语言功能 ”的早期应用,如JEP 12所述。预览语言和VM功能”]。 JEP 325 适用于JDK 1…

python 验证码_4行Python代码生成图像验证码

点击上方蓝色字体,关注我们最近无意看到网上有人使用Python编写几十行代码生成图像验证码,感觉很是繁琐,这里为各位朋友推荐两种方法,使用4行Python代码即可生成验证码。1captcha库第1步:安装captcha库pip install cap…

python3 多线程_Python3多线程爬虫实例讲解

多线程概述多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率。python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补。并且在Python3中废弃了thread…

java多条件组合查询6_elasticsearch组合多条件查询实现restful api以及java代码实现

elasticsearch组合多条件查询实现restful api以及java代码实现实际开发中,基本都是组合多条件查询。elasticsearch提供bool来实现这种需求;主要参数:must文档 必须 匹配这些条件才能被包含进来。must_not文档 必须不 匹配这些条件才能被包含进…

基于java家教管理系统_基于jsp的家教信息管理-JavaEE实现家教信息管理 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的家教信息管理, 该项目可用各类java课程设计大作业中, 家教信息管理的系统架构分为前后台两部分, 最终实现在线上进行家教信息管理各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类家教信息管理相关的实体…

如何从云功能调用外部REST API

在之前的博客文章中,我展示了如何创建您的第一个云功能 (以及一个视频 )。 您的云函数很可能需要调用外部REST API。 以下教程将向您展示如何创建此类功能(非常简单)。 登录到IBM Cloud帐户 点击目录 删除标签&…

机器学习分类算法_机器学习分类算法

人们曾在自身的神经元得到启发,将机器学习中给出的特征输入与权重之积作为输出与阈值作比较,得到0或者1的输出。这就是我们感知器的实现原理感知器在实现过程中的步骤如下:①将权值初始化称为一个很小的向量②迭代训练所有样本:计…

apache camel_Apache Camel –从头开始开发应用程序(第1部分/第2部分)

apache camel开始之前 前段时间,我写了一篇关于Spring Integration的教程,以演示如何在受现实发票处理系统启发的示例应用程序中使用Spring Integration。 我对此非常满意,因此我决定向您展示如何使用Apache Camel(Spring Integra…

weblogic创建域后启动不了_摩托车淋雨后启动不了什么原因?如何解决?

图文是工作,视频是生活。大家好,我是 骑士分享 欢迎您的关注!摩托车淋雨后启动不了什么原因?如何解决?这种现象对于电喷车型来说发生的几率并不大,原因就在于电喷车型的线路防水能力会更强,供油…

前端开始学java_[Java教程]开启前端学习之路

[Java教程]开启前端学习之路0 2014-06-10 17:00:06前言第一次在博客园写博客,写写自己开启前端学习之路。应该是受邢师兄的影响吧,不得不说邢师兄人很好,学习也很认真,师兄的前端也是自学的,但是学的很好,大…

xalan_如何以10倍速加速Apache Xalan的XPath处理器

xalan一段时间以来, Apache Xalan中存在一个令人尴尬的错误,该错误是XALANJ-2540 。 此错误的后果是Xalan每次XPath表达式求值将内部SPI配置文件加载数千次 ,可以很容易地进行如下测量: 这个: Element e (Element)do…

vim循环下表复制_Vimrc Init.vim太长了?不存在的

精简配置刚开始接触vim,你会被它各种好看的外观以及实用的插件吸引,各种折腾,不知不觉你的vimrc或者init.vim变得特别长,我之前的init.vim有多长?596行?wtf?每次维护的时候不知道有多麻烦&#…

visual studio odbc数据源设计器_NEW!WinForm界面开发设计时正式支持.NET 5

点击“了解更多”获取DevExpress v20.2完整版下载早在今年7月,官方技术团队宣布对DevExpress控件进行功能增强,使其支持最新的.NET 5 Preview。 但是尽管技术团队一直在努力确保WinForms控件与.NET 5兼容但在Visual Studio中对设计器的支持却是另一回事。…

java 接口的观察者模式_java观察者模式

观察者模式又叫做发布-订阅(Publish/Subscribe)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自己更新自己。Observer结构图.pngSubj…

webgis从基础到开发实践_ArcGIS API For Javascript 开发笔记(四)

二、应用篇1、应用部署部署也就意味着一个 DEMO 或者系统即将完工,也意味着系统即将上线,相对来说Javascript 应用的部署不是很复杂,但是这是有前提的,要对部署中的一些概念有所了解,比如部署中常常提到的虚拟目录&…

Spock 1.2 –轻松进行集成测试中的Spring Bean模拟

探索如何使用Spock 1.2将Spock的模拟和间谍自动注入到Spring上下文中。 Spock中的存根/模拟/间谍(及其生命周期)一直与Spock Specification类紧密结合。 只能在测试类中创建它们。 因此,使用共享的预定义模拟(在单元测试和集成测…

geteditor p 取消自动_2020百度网盘超级会员怎么取消自动续费?

首先我们打开百度网盘,开通超级会员以后,可以看到个人中心有一个管理自动续费的,点击打开。2然后可以看到自己开通的界面旁边显示的有一个取消按钮。3点击取消以后,会提示我们自动续费享受的有优惠,我们继续点击确认取…

分布式机器学习_229页,CMU博士张昊毕业论文公布,探索机器学习并行化的奥秘...

CMU 机器人研究所张昊(Hao Zhang)博士论文新鲜出炉,主要围绕着机器学习并行化的自适应、可组合与自动化问题展开。机器之心报道,机器之心编辑部。随着近年来,机器学习领域的创新不断加速,SysML 的研究者已经…

利用Excel或LibreOffice的业务输入进行单元测试约束

业务专家向我们(开发人员)解释业务限制。 但是,如何确保我们正确理解它们呢? 或更糟糕的是,一旦约束条件正式化,我们如何测试他们之间是否同意? 好吧,有一种很棒的方法可以做到这一…

矩阵连乘 动态规划_Java动态规划

1. 介绍动态规划典型的被用于优化递归算法,因为它们倾向于以指数的方式进行扩展。动态规划主要思想是将复杂问题(带有许多递归调用)分解为更小的子问题,然后将它们保存到内存中,这样我们就不必在每次使用它们时重新计算它们。要理解动态规划的…