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

告别低分辨率网络,微软提出高分辨率深度神经网络HRNet | CVPR 2019

640?wx_fmt=jpeg


来源 | 微软研究院AI头条(ID:MSRAsia)

作者简介:孙可,中国科学技术大学信息学院在读博士生,目前在微软亚洲研究院视觉计算组实习,导师是王井东和肖斌老师。他的研究兴趣包括人体姿态估计、语义分割、图像分类等,曾在BMVC、ICCV、CVPR等国际顶级会议上发表过论文。


【编者按】对于视觉识别中的区域层次和像素层次问题,分类网络(如ResNet、VGGNet等)学到的表征分辨率比较低,在此基础上恢复的高分辨率表征空间区分度仍然不够强,使其在对空间精度敏感的任务上很难取得准确的预测结果。为此,微软亚洲研究院视觉计算组提出高分辨率深度神经网络(HRNet),对网络结构做了基础性的改变,由传统的串行连接高低分辨率卷积,改成并行连接高低分辨率卷积,通过全程保持高分辨率和对高低分辨率表征的多次信息交换来学到丰富的高分辨率表征,在多个数据集的人体姿态估计任务中取得了最佳的性能。


前言


视觉识别主要包括三大类问题:图像层次(图像分类),区域层次(目标检测)和像素层次(比如图像分割、人体姿态估计和人脸对齐等)。最近几年,用于图像分类的卷积神经网络成为解决视觉识别问题的标准结构,比如图1所示的LeNet-5。这类网络的特点是学到的表征在空间分辨率上逐渐变小。我们认为分类网络并不适合区域层次和像素层次的问题,因为学到的表征本质上具有低分辨率的特点,在分辨率上的巨大损失使得其在对空间精度敏感的任务上很难取得准确的预测结果。


640?wx_fmt=png

图1. 典型的卷积神经网络:LeNet-5。其它典型的卷积神经网络,如AlexNet、VGGNet、GoogleNet、ResNet、DenseNet等,表征的空间分辨率均从大逐渐变小。


为了弥补空间精度的损失,研究者们在分类卷积神经网络结构的基础上,通过引入上采样操作和/或组合空洞卷积减少降采样次数来提升表征的分辨率,典型的结构包括Hourglass、U-Net等(如图2)。


在这类网络结构中,最终的高分辨表征主要来源于两个部分:第一是原本的高分辨率表征,但是由于只经过了少量的卷积操作,其本身只能提供低层次的语义表达;第二是低分辨率表征通过上采样得到的高分辨率表征,其本身虽然拥有很好的语义表达能力,但是上采样本身并不能完整地弥补空间分辨率的损失。所以,最终输出的高分辨率表征所具有的空间敏感度并不高,很大程度上受限于语义表达力强的表征所对应的分辨率。


640?wx_fmt=png

图2. 从低分辨率表征恢复高分辨率表征


我们认为不应该局限于从分类卷积神经网络生成的低分辨率表征来恢复高分辨率表征这一路线,而应该为高分辨率表征学习建立新的网络结构。基于此,我们提出了高分辨率深度神经网络(High-Resolution Network,HRNet),在网络整个过程中始终保持高分辨率表征,同时多次在高低分辨率表征之间进行信息交换,从而学到足够丰富的高分辨率表征。


实验证明HRNet在人体姿态估计,以及图像分割、人脸对齐和目标检测等问题上取得了不错的结果。我们相信HRNet将取代分类深度神经网络成为计算机视觉识别等应用的新的标准结构。关于人体姿态估计的论文已发表在CVPR 2019 [1],相关代码已在GitHub上开源[2, 3]。


GitHub链接:

https://github.com/HRNet


高分辨率网络

  

我们在HRNet的整个网络中始终保持高分辨率表征,逐步引入低分辨率卷积,并且将不同分辨率的卷积并行连接。同时,我们通过不断在多分辨率表征之间进行信息交换,来提升高分辨率和低分辨率表征的表达能力,让多分辨率表征之间更好地相互促进,结构如图3所示。HRNet与先前的分类卷积神经网络有着基础性的区别:先前的分类将分辨率从高到低的卷积串行连接,HRNet则是并行连接。


640?wx_fmt=png

图3. 高分辨率网络 (High-Resolution Network,HRNet)


关于多分辨率表征信息交换,这里以三个分辨率输入和三个分辨率输出为例,如图4所示。每一个分辨率的输出表征都会融合三个分辨率输入的表征,以保证信息的充分利用和交互。将高分辨率特征降到低分辨率特征时,我们采用stride为2的3x3卷积;低分辨率特征到高分辨率特征时,先利用1x1卷积进行通道数的匹配,再利用最近邻插值的方式来提高分辨率。相同分辨率的表征则采用恒等映射的形式。


640?wx_fmt=png

图4. 多分辨率表征信息交换

    

实验


HRNet保持高分辨率表征,利用重复的多分辨率表征信息交换增强其表达能力,使模型所学的表征在空间精度上有显著的提升。实验中,我们首先在MS COCO数据集中的关键点检测任务上进行了消融实验,验证了表征分辨率的重要性和重复的多分辨率表征信息交换的有效性;然后在MS COCO、PoseTrack等标准数据集中与最先进的方法进行公平对比,都取得了更好的性能。


1. 表征分辨率对性能的影响


HRNet可输出4种分辨率的表征(1x、2x、4x、以及8x),我们针对不同的网络输出分辨率在两组模型上做了对比实验,如图5所示。    


640?wx_fmt=png

图5.  网络输出分辨率对结果的影响,1x、2x和4x分辨率表征在人体姿态估计的性能。


从图5中,我们可以清楚地看到,网络输出表征的分辨率降低会使得模型的性能有巨大的损失。分辨率在2x时,性能降低了接近6% AP,4x时降低了20% AP。这体现了表征分辨率对于空间精度的重要性。


2. 多分辨率表征信息交换对性能的影响


640?wx_fmt=png

图6.  蓝色框内为阶段内的多分辨率表征信息交换(Int. exchange within),绿色框为阶段间的多分辨率表征信息交换(Int. exchange across),红色框为最终的多分辨率表征信息交换(Final exchange)。


640?wx_fmt=png

表1. 多尺度特征融合对性能的影响,实验中每个网络是从随机初始化开始训练的。


我们考虑了三种信息交换(如图6),结果如表1。可以看到,多分辨率表征信息交换可以将不同分辨率的表征信息进行充分的交换利用,对表征增强的作用十分明显,可以到达2.6% AP的提升。


3. 在标准数据集上的性能


MS COCO数据集是关键点检测的最权威的数据集之一,我们在该数据上对我们的方法进行验证,结果如表2所示。


640?wx_fmt=png

表2.  COCO test-dev上与最先进方法的性能比较


我们可以看到,在相同的输入图像大小下,我们的小模型HRNet-W32在参数量和计算量都小于SimpleBaseline(ResNet-152)一半的情况下,取得了1.2% AP的提高,而大模型HRNet-W48取得了1.8% AP的提升,在引入额外数据的情况下,大模型展现了更强的表达能力,有更显著的提升。


640?wx_fmt=png

表3. 在Pose-Track数据集上与最先进方法的性能比较


在表3中,我们在Pose-Track数据集的两个任务上进行了验证:(1)多帧人体姿态估计,可以利用其他帧的信息估计某帧的姿态;(2)多帧人体姿态跟踪,需要把不同帧间的同一个人的姿态关联起来。前者性能用mAP来评价,后者性能用MOTA来评价。可以看到在两个任务上,我们都取得了最好的性能。


结语


我们改变了现有的基于分类网络的人体姿态估计的网络结构,提出了高分辨率深度神经网络(HRNet)。该网络能够成功学到足够丰富的高分辨率表征的原因在于,整个过程保持高分辨率,以及多次对高低分辨率表征进行信息补足。HRNet在多个数据集的人体姿态估计任务中取得了当前最好的性能,也在图像分割、人脸对齐和目标检测等问题上取得了不错的结果。我们相信HRNet将取代以分类网络为基础的网络架构,成为计算机视觉识别等应用的新标准结构。


[1] Ke Sun, Bin Xiao, Dong Liu, Jingdong Wang: Deep High-Resolution Representation Learning for Human Pose Estimation. CVPR 2019

[2] https://github.com/leoxiaobin/deep-high-resolution-net.pytorch

[3] https://github.com/HRNet


(*本文为 AI科技大本营转载文章,转载请联系原作者)



CTA核心技术及应用峰会


5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。议程设置请请识别海报二维码查看。


目前CTA峰会倒计时1天!还没有拿到入场券的小伙伴可以识别海报二维码或者点击阅读原文,即刻抢购。你也添加小助手微信15101014297,备注“CTA”,了解票务以及会务详情。

640?wx_fmt=jpeg

推荐阅读

  • 危机加剧:ARM釜底抽“芯”,华为腹背受敌

  • 面对996,程序员如何利用“碎片时间”涨薪?

  • 权威解读 GitHub、Apache 疑云:主流开源软件究竟是否会被闭源?

  • Kaggle季军新手笔记:利用fast.ai对油棕人工林图像进行快速分类(附Python代码)

  • 程序员连拿3份Offer,每份高达45K?他说做对了这些!

  • ARM到底是一家什么样的公司?

  • 为什么你写了一万小时的代码,却没能成为架构师?| 程序员有话说

  • 别怀疑,孩子在家里也能学编程!

  • 百花村区块链山的选民们, 超有趣!

640?wx_fmt=png


点击阅读原文,了解CTA核心技术及应用峰会

相关文章:

sudo提权实战讲解 对用户对组的权限配置分析

Linux是多用户多任务的操作系统, 共享该系统的用户往往不只一个。出于安全性考虑, 有必要通过useradd创建一些非root用户, 只让它们拥有不完全的权限; 如有必要,再来提升权限执行。 sudo就是来解决这个需求的: 这些非root用户不需要知道root的密码,就可以…

【Qt】在Ubuntu16.04中安装QSerialPort模块

1、问题描述 在pro中添加:QT serialport 编译时报错:Project ERROR Unknown module(s) in QT:serialport 2、解决方法 安装QSerialPort模块库 sudo apt-get install libqt5serialport5-dev

Velocity文档(3)

2019独角兽企业重金招聘Python工程师标准>>> velocity.properties 的一些配置项 velocimcro.library属性:指定自己的模板库,多个模板库以逗号分隔。默认情况下,velocity查找唯一的一个库:VM_global_library.vmvelocima…

Java 24岁!Google加持的Kotlin真能取代它?

作者 | 屠敏出品 | CSDN(ID:CSDNnews)1995 年 5 月 23 日,Sun 公司在 Sun world 会议上正式宣布了 Java 的到来,从此一代编程语言界的翘楚就此诞生。而在不断地迭代与适配中,今时今日,Java 以需…

三,ES6中需要注意的特性(重要)

-----书接上文,前文中我们总结了关于JS的组成部分以及如何快速开展学习JS,相信已经有很多朋友掌握到这些方法。接下来就从更深的ECMAScript开始说起。 1.什么是ES6? ECMAScript(European Computer Manufacturers Association) 6: 是JavaScript语言的下一…

【SVN】在阿里云上创建svn服务器

1、创建用户及相关设置 阿里云搭建ubuntu18.04工作台,默认只有root超级用户。为了安全起见,我们使用普通用户来创建svn: useradd hello // 创建用户hello mkdir -p /home/hello // 在hello用户的根目录 cd /home/hello chown hello . // 设…

【转】on delete cascade

关系表的级联更新: on update cascade on delete cascade 是级联删除的意思 意思是 当你更新或删除主键表时,那么外键表也会跟随一起更新或删除 CREATE TABLE Countries(CountryId INT PRIMARY KEY) INSERT INTO Countries (CountryId) VALUES (1) INSER…

倒计时1天!CTA核心技术及应用峰会报名通道即将关闭(附参会攻略)

全球智能化趋势当前,人工智能技术正蓬勃发展。为了直击开发者在机器学习与人工智能技术研究与落地过程中的痛点与瓶颈,深入解析机器学习和知识图谱技术在行业中的实践和落地。2019 年 5 月 26 - 27 日,由中国 IT 社区 CSDN 与数字经济人才发展…

【Qt】在QtCreator中使用Ctrl+Shift+f快捷键打开高级查找窗口失效的解决方法

1、问题描述 Win10操作系统环境下,在QtCreator中使用Ctrl+Shift+f快捷键打开高级查找窗口失效。 2、原因分析 Ctrl+Shift+f快捷键在各种输入法中,常用来做中文简体和繁体输入的切换。QtCreator中该快捷键失效的的原因,多半是因为和输入法的快捷键冲突。可以在输入法的快捷…

Python修行之字符串(一):连接、切割、大小写、排版

字符串:1.是由一个个字符组成有序的序列,是字符的集合2.字符串是不可变对象3.使用单引号、双引号、三引号引住的字符序列4.python3中、字符串就是unicode类型、在2中分两种一种unicode一种非unicode字符串元素访问--下标:1.字符串支持使用索引访问2.有序的字符集合&…

UI自动化测试随笔

昨天给开发的同事讲我们正在做的自动化测试,同事问了句:为什么API的测试不需要写代码了,而UI的测试还需要写那么多代码呢? 能不写代码么? 目前我们的自动化测试的现状: 目前主要覆盖两个部分:A…

【跃迁之路】【554天】程序员高效学习方法论探索系列(实验阶段311-2018.08.13)...

(跃迁之路)专栏 【跃迁之路】奖励金计划正式开始 从2018.7.1起,【跃迁之路】奖励金计划正式起航,从今以后,, 每月1日,我会将自己个人上月收入的1%计入【跃迁之路】奖励金池,积累到足够金额后,将…

TensorFlow 2.0来了,为什么他却说“深度学习框架之争,现在谈结果为时尚早”?...

记者 | 琥珀出品 | AI科技大本营(ID:rgznai100)半个多世纪前,浙江大学老校长竺可桢曾有两个非常经典的教育问题:“诸位在校,有两个问题应该自己问问,第一,到浙大来做什么?第二&#…

【FFmpeg】ffmpeg工具源码分析(一):main函数

ffmpeg工具经常用来转换、生成媒体文件,下面是它的源码分析(一):main函数 ffmpeg版本:4.2.1 int main(int argc, char **argv) {int i, ret;BenchmarkTimeStamps ti; # 用于基准测试init_dynload(); # 初始化动态库加载路径,只在win3

Android之传感器(一)

传感器的种类:1. 动作传感器加速度传感器、重力传感器和陀螺仪(判断手机姿态)等2. 位置传感器方向传感器和磁力传感器3. 环境传感器温度传感器 、压力传感器和亮度传感器 使用传感器的方法:1. 获取SensorManager对象SensorManage…

【Qt】Qt单例模式三种实现

1、饿汉式 在头文件中:将构造函数私有化,并创建静态函数instance来获取实例 class A : public QObject {Q_OBJECT public:static A* instance(QObject *parent = nullptr);private:explicit A(QObject *parent = nullptr); }

程序员敲代码时,戴着耳机究竟在听什么?

今天,某妹子突然凑到我的耳边轻声说:“我们公司的程序员,清一色的戴着耳机,你说他们是不是故意不想听我们提的需求?”我很方,因为我也喜欢戴耳机。(思考ing)思考了一秒钟后&#xff…

关于Oracle.ManagedDataAccess数据库表加字段后,必须重启的问题

关于Oracle.ManagedDataAccess数据库表加字段后,必须重启的问题,解决方法如下:在数据库连接字串中,增加一个参数:Metadata Poolingfalse如“Data Source(DESCRIPTION(ADDRESS_LIST(ADDRESS(PROTOCOLTCP)(HOST1.1.6.200…

配置导出MOSS2010列表数据到Excel并根据列表记录自动刷新数据

第一章 简介 场景描述 根据最近客户的需求,他们需要自动维护MOSS2010列表数据导出到Excel的数据实时同步,就是列表添加记录后,导出的Excel列表自动同步数据过来。 第二章 配置方法 1. 打开MOSS2010站点http://moss:8001的要导出的列表 2. 点【…

一个让Python代码运行更快的最佳方式!

作者 | Serdar Yegulalp译者 | 姜松浩,责编 | 屠敏转载自 CSDN(ID:CSDNnews)Python因其强大、灵活且易于使用等特性,而赢得了声誉。这些优点使其在各种各样的应用程序、工作流程和领域中得到了广泛应用。但是就语言的设…

《Python基础教程第二版》第五章-条件、循环和其他语句(一)

print和import print打印多个表达式,用逗号,隔开 print abc:, 42, nonono #输出在每个参数之间添加空格 print在结尾处加上逗号,,接下来的语句会与前一条语句打印在同一行 print hello, print word! #hello word! import从模块中导入函数 import module from module…

【Qt】QStackedWidget:将多个窗口控件放入堆中,每次只显示一个窗口控件

1、简介 QStackedWidget可以容纳多个窗口控件,每次只显示其中一个。例如:登录页面、各种功能页面等不同时显示的窗口,可以放入QStackedWidget中。 2、demo // 创建三个页面 QWidget *firstPageWidget = new QWidget; QWidget *secondPageWidget = new QWidget; QWidget *…

Android模仿iPhone View旋转刷新数据动画详解

因为小马很喜欢在不同的页面之间跳转时加点好玩的动画,今天无意间看到一个动画效果感觉不错,几种效果图如下,既然好玩就写在博客中,直接说就是:该效果类似于iPhone中View的切换动画效果,今天就只介绍上面展…

【SQL】sql语句LEFT JOIN(拼接表)详解

1、语法 SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_nametable2.column_name;2、说明 按照一定规则,将表table1和表table12拼接起来。下面以学生管理系统为例,学生管理系统数据库各表如下 课程表: 学生表 成绩…

找啊找啊找木偶,图灵奖得主G. Hinton第一篇论文曝光!

作者 | Geoffrey Hinton 译者 | 李倩编辑 | 一一出品 | AI科技大本营(ID:rgznai100)摘要针对在具有重叠结构的透明矩形中寻找木偶这一问题,Hinton大神想到使用松弛算法,通过从冲突局部解释网络中提取全局最佳图形的方式找木偶。介…

终于,「最近邻搜索」有通用方法了

作者:Kevin Hartnett 编译:Bing 如果你打算开一家咖啡馆,你一定想知道:“附近最近的一家咖啡馆在哪?”了解这些信息有助于应对商业竞争。 这种现象是计算机科学中广泛研究的问题,称为“最近邻搜索”。它的问…

tar自动打包指定文件夹中的文件到指定目录

这是我离开上一家公司,到XX人寿保险公司的第一个工作内容,很简单,可以减少每天重复的工作量。写一个脚本,将指定文件夹下的所有文件打包成以日期命名的格式并存放到其父目录中,自动检测该压缩包,保留时间为…

【SQL】sql语句GROUP BY

1、语法 SELECT column_name, aggregate_function(column_name) FROM table_name GROUP BY column_name;2、说明 先对数据集分组,再根据规则批量处理每组数据。 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将…

色情低俗、暴力恐怖内容...如何用AI“一网打尽”?

作者 | Rachel、Just出品 | AI科技大本营(ID:rgznai100)移动互联网时代催生了大量的多媒体数据,每天在社交平台、长短视频、直播平台、新闻资讯等内容平台产生了数以亿计的图片和视频,这些数据的内容审核面临严峻的挑战。人工审核…

想要学好Go语言的必须知道的一个小技巧

2019独角兽企业重金招聘Python工程师标准>>> 由于我转Go语言比较早,很多认识我的,转Go或学习Go的同学遇到问题,经常会过来问我,然后,我发现。 除了学习Go语言可以看那些资料,这个问题以外&#…