当前位置: 首页 > 编程日记 > 正文

目标检测的渐进域自适应,优于最新SOTA方法

640?wx_fmt=png

作者 | Han-Kai Hsu、Chun-Han Yao、Yi-Hsuan Tsai、Wei-Chih Hung、Hung-Yu Tseng、Maneesh Singh、Ming-Hsuan Yang
译者 | 刘畅
编辑 | Jane
出品 | AI科技大本营(ID:rgznai100)

【导读】目标检测的最新深度学习方法依赖于大量的边界框标注信息。收集这些标注既费力又费钱,而且在对来自不同分布的图像进行测试时,受监督的模型不能很好地泛化。域自适应方法是通过使现有标签去适应目标测试数据。但是,两个域之间的巨大差距可能会使自适应成为一项艰巨的任务,从而导致训练过程不稳定和结果欠佳。
本文中,作者提出了用中间域来连接不同域,并逐步解决更容易的自适应子任务。方法是通过转换源图像以模仿目标域中的图像来构造此中间域。为了解决域转移(domain-shift)问题,作者采用对抗学习在特征级去调整分布。另外,还应用了加权任务损失函数去处理中间域中的图像质量不平衡问题。实验结果表明,在目标域的效果上,本文的方法优于最新(SOTA)方法。

640?wx_fmt=png

论文地址:
https://arxiv.org/abs/1910.11319

引言
目标检测是一项重要的计算机视觉任务,它旨在对图像中的目标进行定位和分类。最新的神经网络方法已大大提高了目标检测的性能。但是,这样的深度模型通常需要大规模的带标注的数据集以进行监督学习,并且当训练集和测试集不同时,不能很好地泛化。例如,两个域可能在场景,天气,光照条件和相机设置方面有所不同。此类域差异或域转移(domain-shift)可能会引起模型泛化问题。尽管增加同属于一个目标域的其他训练数据可以提高性能,但是收集标注信息是耗时耗力的。
640?wx_fmt=png
图1
图1很好的描述了渐进域自适应方法。传统的域自适应是解决从源域到目标域的域迁移问题,用IS→T表示。这里使用了一个中间合成域来填补这个间隙,该域让我们可以逐步解决具有更小间隙的独立子任务(如lS→F和lF→T)。此外,根据目标域数据的质量(黄色三角形的大小代表它们的权重),对合成域中的每个数据进行不平等处理(越接近目标,权重越大)。
无监督域自适应方法解决了在不使用目标域的地面真值标签的情况下的域转移问题。自给定源域注释的情况下,目标是以无监督的方式对齐源分布和目标分布,以便模型可以在无需注释的情况下推广到目标数据。在图像分类中,人们开发了大量的方法,但在语义分割和目标检测等复杂任务上的研究却很少。这种域自适应任务非常具有挑战性,因为通常在源域和目标域之间存在很大的差异性。
在本文中,作者的目标是简化不同数据域之间的协调工作。该方法通过对齐中间特征表示,解决了域偏移问题。通过利用位于源域和目标域之间的中间域,避免了在两个分布之间存在显着差异的直接映射。

具体来说,源图像首先由一个图像到图像的迁移网络进行转换,使其具有与目标图像相似的外观。这里将包含合成目标图像的域称为中间域。然后,去对齐源域和中间分布来构造中间特征空间,这比对齐最终目标域要简单得多。一旦这个中间域对齐后,就将它拿去连接目标域的桥梁。

因此,通过提出的中间域渐进自适应方法,将源域和目标域之间的初始对齐分解为两个子任务,这两个子任务都能以较小的域间隙解决较简单的问题。
在对齐过程中,由于中间空间是以无监督方式构造的,所以存在一个潜在的问题,那就是在基于迁移质量的基础上,每个合成目标图像可能会有不对等的结果。为了减少低质量图像的离群影响,在本文方法中提出了一个加权版本,该版本的权值是根据到目标分布的距离来确定的。也就是说,更接近目标域的图像应该被认为是更重要的样本。在实际应用中,在图像平移模型中获取到的鉴别器距离,会将其作为任务损失的权重纳入检测框架。
本文作者使用了许多的数据集,来评估该方法在各种不同适应场景下的效果,这些数据集包括包括KITTI, Cityscapes, Foggy Cityscapes和BDD100k。本文作者在多个现实世界的不同情况下进行实验,例如天气变化、相机差异和对大规模数据集的适应。通过提出的渐进域自适应算法,证明了本文方法在目标领域的精度中,优于当前最先进的算法。

主要贡献如下:(1)提出的自适应框架中,引入一个中间域为目标检测定位 (2)基于中间域中样本的重要性,提出了域对齐过程中的加权任务损失。(3)进行广泛的适应实验在不同对象检测场景,实现先进的性能。在多个真实世界的差异情况下进行实验,例如天气变化、相机差异和对大规模数据集的适应。

方法
简单说一下渐进域自适应方法,该方法将域自适应问题分解成两个更小的子任务,由位于源域和目标域分布之间的中间域来当桥接。利用此合成域,作者采用了一种渐进式适应策略,该策略逐渐缩小了中间域的差距。
作者将源域,合成域和目标域分别表示为S,F和T。从标记域S到未标记域T的常规自适应表示为S→T,而提出的自适应子任务表示为S→F和F→T。图2展示了渐进式自适应框架。
640?wx_fmt=png
图2
该算法包括适应的两个阶段,如图2中的a和b所示。首先使用通过CycleGAN [36]获悉的生成器G转换源图像以生成合成图像。之后,使用标记的源域并执行对合成域的第一阶段自适应。然后在(b)中,模型应用第二阶段自适应,该阶段采用具有标签合成域,并使合成域特征与目标分布对齐。另外,从CycleGAN中的鉴别器Dcycle获得权重w,以平衡检测损失中的合成图像质量。

图2中的(c)显示来自适应网络的整体结构。带标签的图像和未带标签的图像都通过编码器网络E来提取CNN特征featL和featU。然后,将它们作用于从featL中使用检测器网络学习监督对象检测,以及将两个特征都转发给GRL和域鉴别器,以对抗性方式学习域不变特征。

实验
作者在不同域差异的三种现实条件下,来评估本文方法的性能。这三种条件分别是跨相机适应,天气适应和对大规模数据集的适应。同时,本文作者分别使用了ITTI, Cityscapes, Foggy Cityscapes和BDD100k数据集,来评估本文方法在各种适应场景下的效果。图3展示了自这三种条件下,使用本文的域自适应方法前后的检测结果。
640?wx_fmt=jpeg
图3
图3是本文实验的三个自适应任务的检测结果示例。前两行分别是任务KITTI→城市景观和城市景观→有雾的城市景观,而后两行是任务Cityscapes→BDD100k。
总结
在本文中,作者提出了一种渐进的自适应方法,该方法使用中间域来弥合域间隙,从而将较困难的任务分解为具有较小间隙的两个较简单的子任务。通过将源图像转换为目标图像来获得中间域。使用此域后,该方法通过从源域适应到中间域,然后最终适应目标域,逐步解决适应子任务。另外,该方法的第二阶段引入了加权损失,以平衡中间域中的不同图像质量。实验结果表明,本文的方法与最新方法相比具有良好的性能,并且可以在跨场景,天气条件和适应大规模数据集等各种情况下进一步减少域差异。

(*本文为 AI科技大本营编译文章,转载请微信联系 1092722531


精彩推荐



2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。5 折票倒计时 4 天!

640?wx_fmt=png

推荐阅读

相关文章:

讨论下IDS的绕过

自从知道dedecms自带了80sec的内置Mysqlids后,一直以来也没有想到绕过的办法。或者是自己mysql的根底太差了吧。于是分析dedecms源码时,只找模板执行,本地包含,上传等,完全没有想到注入存在的可能性了。 可以看看某牛的…

GCC编译选项参数介绍

gcc和g分别是gnu的c和c编译器,下面是整理的常用编译选项参数: #(1). -x: 设定文件所使用的语言,使文件后缀名无效,如下,执行完后生成test.o gcc -c -x c test.jpg #(2). -c: 只编译生成目标文件即*.o,只编译不链接生成…

程序员自学到底有没有用?网友们吵翻了...

最近就有个程序员吐槽说,自己大学没怎么听老师讲课,老师讲的知识要么太旧,要么老师不会讲,自己大部分时间是在网上看视频学的。引发了以下激烈的讨论。很多网友觉得,学校老师的代码能力不行,现在技术更新又…

更新 FrameWork

这里把想要改变的东西封装到FrameWork以便实现热更新,提一下关于BundiD 一定要一致,在打包的时候一定在Edit scheme —— >Run 选择Release如图: 因为你要跑在真机上,所以这个要选择Release 另外将包含你想要放出的方法类添加…

把Illustrator矢量图转化为代码:Drawscript

2019独角兽企业重金招聘Python工程师标准>>> DrawScript是一款Illustrator插件,可以将Illustrator的矢量图片转换成代码,目前免费,支持转换的语言有 OBJ-CCJAVASCRIPTCREATEJS/EASELJSPROCESSINGACTIONSCRIPT 3JSONRAW BEZIER PO…

必读:ICLR 2020 的50篇推荐阅读论文

来源 | 香侬科技本文整理了ICLR2020的相关论文,此次分享的是从Openreview中选取的部分论文,共50篇,其中大部分为NLP相关。文中涉及的相关论文推荐指数与推荐理由仅为个人观点,利益无关,亦不代表香侬科技立场。希望大家…

14个Xcode中常用的快捷键操作

在Xcode 6中有许多快捷键的设定可以使得你的编程工作更为高效,对于在代码文件中快速导航、定位Bug以及新增应用特性都是极有效的。 当然,你戳进这篇文章的目的也在于想要快速的对代码文件进行操作,或者是让Xcode的各面板更为适应你小本子的屏…

C++中标准模板库std::pair的实现

以下用C实现了标准模板库中的std::pair实现,参考了 cplusplus 和 vs2013中的utility文件。关于std::pair的介绍和用法可以参考: https://blog.csdn.net/fengbingchun/article/details/52205149 实现代码pair.hpp如下: #ifndef FBC_STL_PAIR_H…

【人在职场】能力与价值

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yunli.blog.51cto.com/831344/1547051 最近给团队(指#UC浏览器电脑版#开发团队)分享了我的《基层技术管理原则》。…

Windows与Linux之间互传文件的方法

以下方法均是以Windows为操作机:1. 通过WinSCP:WinSCP是一款开源的SFTP客户端,运行于Windows系统下,遵照GPL发布。WinSCP除了SFTP,还支持SSH、SCP(SecureCopy Protocol)。WinSCP的开发始于2000年4月,由布拉格经济大学所…

一文读懂简化的图卷积网络GCN(SGC)| ICML 2019

作者 | yyl424525来源 | CSDN博客文章目录1 相关介绍1.1 Simple Graph Convolution (SGC)提出的背景1.2 SGC效果2 Simple Graph Convolution 简化的图卷积2.1 符号定义2.2 图卷积网络GCNGCN vs MLPFeature propagation 特征传播Feature transformation and nonlinear transitio…

iOS UITableViewCell重用问题

TableView的重用机制,为了做到显示和数据分离,iOS tableView的实现并且不是为每个数据项创建一个tableCell。而是只创建屏幕可显示最大个数的cell,然后重复使用这些cell,对cell做单独的显示配置,来达到既不影响显示效果…

NLP常用工具

为什么80%的码农都做不了架构师?>>> NLP常用工具 各种工具包的有效利用可以使研究者事半功倍。 以下是NLP版版友们提供整理的NLP研究工具包。 同时欢迎大家提供更多更好用的工具包,造福国内的NLP研究。 *NLP Toolbox CLT http://compl…

Swift快速入门之getter 和 setter

属性可以用getter和setter方法的形式提供。 <code class"hljs lasso has-numbering" style"display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: Source Code Pro, monospace;font-size:u…

Linux下getopt函数的使用

getopt为解析命令行参数函数&#xff0c;它是Linux C库函数。使用此函数需要包含系统头文件unistd.h。 getopt函数声明如下&#xff1a; int getopt(int argc, char * const argv[], const char * optstring); 其中函数的argc和argv参数通常直接从main的参数直接传递而来。o…

20行Python代码说清“量子霸权”

作者 | 马超 来源 | 程序人生&#xff08;ID:coder_life&#xff09;近日谷歌的有关量子霸权&#xff08;Quantum Supremacy&#xff09;的论文登上了Nature杂志150年刊的封面位置&#xff0c;而再次罢占各大媒体的头条位置&#xff0c;其实这篇文章之前曾经短暂上过NASA的网站…

Android组件系列----BroadcastReceiver广播接收器

​【声明】 欢迎转载&#xff0c;但请保留文章原始出处→_→ 生命壹号&#xff1a;http://www.cnblogs.com/smyhvae/ 文章来源&#xff1a;http://www.cnblogs.com/smyhvae/p/3960623.html 【正文】 一、广播的功能和特征 广播的生命周期很短&#xff0c;经过调用对象-->…

Swift 代码调试-善用XCode工具(UI调试,五种断点,预览UIImage...)

原创Blog&#xff0c;转载请注明出处 http://blog.csdn.net/hello_hwc?viewmodelist 我的stackoverflow 工欲善其事&#xff0c;必先利其器&#xff0c;强烈建议新手同学好好研究下XCode这个工具。比如Build Settings&#xff0c;Build Info Rules&#xff0c;Build Parse…

Linux下getopt_long函数的使用

getopt_long为解析命令行参数函数&#xff0c;它是Linux C库函数。使用此函数需要包含系统头文件getopt.h。 getopt_long函数声明如下&#xff1a; int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);…

Expect自动化控制简单介绍

telnet&#xff0c;ftp&#xff0c;Passwd&#xff0c;fsck&#xff0c;rlogin&#xff0c;tip&#xff0c;ssh等等。该工具利用Unix伪终端包装其子进程&#xff0c;允许任意程序通过终端接入进行自动化控制&#xff1b;也可利用Tk工具&#xff0c;将交互程序包装在X11的图形用…

C++中标准模板库std::vector的实现

以下实现了C标准模板库std::vector的部分实现&#xff0c;参考了 cplusplus. 关于C中标准模板库std::vector的介绍和用法可以参考 https://blog.csdn.net/fengbingchun/article/details/51510916 实现代码vector.hpp内容如下&#xff1a; #ifndef FBC_STL_VECTOR_HPP_ #defi…

Swift学习 OOP三大特性:继承、多态、封装

先看个例子 从上面的例子可以总结那么一句话:”学生是人”。也就是Student类继承People类。简而言之&#xff0c;学生是人&#xff0c;这句话是说得通的&#xff0c;但是”人是学生”这句话是说不通的&#xff0c;不是学生就不是人了嘛? 从代码中&#xff0c;我们可以看出S…

5折票倒计时3天 | 超干货议程首度曝光!2019 中国大数据技术大会邀您共赴

&#xff08;大会官网https://t.csdnimg.cn/U1wA&#xff09;2019年&#xff0c;大数据与人工智能的热度已经蔓延到了各个领域&#xff0c;智能交通、AIoT、智慧城市&#xff0c;智慧物流、AI中台、工业制造等各种黑科技成为热搜名词。而在今年的乌镇互联网大会上&#xff0c;大…

mysql select * f

mysql> select * from tb;-------------| id | name |-------------| 1 | tbone || 3 | 2d2 || 5 | 55 || 6 | 66 |-------------4 rows in set (0.00 sec)转载于:https://www.cnblogs.com/bashala/p/3974088.html

C++/C++11中用于定义类型别名的两种方法:typedef和using

类型别名(type alias)是一个名字&#xff0c;它是某种类型的同义词。使用类型别名有很多好处&#xff0c;它让复杂的类型名字变得简单明了、易于理解和使用&#xff0c;还有助于程序员清楚地知道使用该类型的真实目的。在C中&#xff0c;任何有效类型都可以有别名。 有两种方法…

iOS学习笔记--01swift实现提示框第三方库:MBProgressHUD

本文使用swift语言使用MBProgressHUD。 开源项目MBProgressHUD可以实现多种形式的提示框。使用简单&#xff0c;方便。GitHud的下载地址是&#xff1a;https://github.com/jdg/MBProgressHUD/ 下载完成后&#xff0c;将MBProgressHUD.h和MBProgressHUD.m拖入已经新建好的Swift项…

2019北京智源大会在京开幕, 中外学术大咖共话人工智能研究前沿

10月31日&#xff0c;由北京智源人工智能研究院主办的2019北京智源大会在国家会议中心开幕&#xff0c;会期两天。智源大会是北京创建全球人工智能学术和创新最优生态的标志性学术活动&#xff0c;定位于“内行的AI盛会”&#xff0c;以国际性、权威性、专业性和前瞻性为特色&a…

linux中登录类型及配置文件

linux中登录shell的类型1.交互式登录&#xff1a;直接通过终端输入用户信息登录1&#xff09;login&#xff1a;2&#xff09;在shell中 su - usernamesu -l username2.非交互式登录1&#xff09;su username2&#xff09;图形界面的终端3&#xff09;执行脚本的过程用户配置文…

Swift项目引入第三方库的方法

分类&#xff1a;iOS&#xff08;55&#xff09; 目录(?)[] Swift项目引入第三方库的方法 转自 http://blog.shiqichan.com/How-To-Import-3rd-Lib-Into-Swift-Project/ 以下&#xff0c;将创建一个Swift项目&#xff0c;然后引入3个库&#xff1a; Snappy 简化autolayout代码…

最新NLP架构的直观解释:多任务学习– ERNIE 2.0(附链接)| CSDN博文精选

作者 | Michael Ye翻译 | 陈雨琳&#xff0c;校对 | 吴金笛来源 | 数据派THU&#xff08;ID&#xff1a;DatapiTHU&#xff09;百度于今年早些时候发布了其最新的NLP架构ERNIE 2.0&#xff0c;在GLUE基准测试中的所有任务上得分均远高于XLNet和BERT。NLP的这一重大突破利用了一…