首发 | 驭势科技推出“东风网络”:如何找到速度-精度的最优解?| 技术头条...

「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑
作者 | 驭势科技
给定目标硬件,如何确定最优的速度-精度折衷边界?换言之:给定推断延时的限制,模型能达到的最高精度是多少?给定精度要求,模型所需的最短延时是多少?
为此,驭势科技AI研究院联合新加坡国立大学在CVPR 2019的一篇论文中提出了偏序关系剪枝(Partial Order Pruning)方法,直接考虑模型在目标硬件上的延时,利用偏序关系假设对搜索空间进行剪枝,平衡模型的宽度与深度,以提高速度-精度折衷的边界。研究人员称,应用该方法所得的东风(DF)骨干网络,取得了目标硬件(TX2)上的最优速度-精度折衷;应用该方法于语义分割网络Decoder的结构搜索,所得的东风分割网络(DF-Seg)也取得了TX2/1080Ti上最优的速度-精度折衷。
在实际运用当中,具备多重实用价值,主要体现在以下几个方面:
(一)DF/DF-Seg网络的实用价值
(1)DF网络取得了目标硬件(TX2)上最优的速度-精度折衷。
(2)DF网络节约显存。以DF2A网络为例,其精度介于ResNet50/101之间,而仅需1/3至1/2的显存(以BVLC Caffe测试)。
(3)DF网络结构简单,仅使用基本的残差模块,相当于更“精耕细作”的ResNet。
(4)DF-Seg网络是TX2/1080Ti/Titan X(Maxwell)上速度-精度折衷最好的分割网络。
省时间、省显存、结构简单,使得DF/DF-Seg网络有助于在嵌入式设备TX2上部署高精度、低延时、多路图像并行处理的CNN模型;有助于高端GPU上的视频处理、大规模图像数据处理等任务的部署;有助于科研人员,尤其是计算资源不足的科研人员,节省计算资源,实现更复杂的算法。
(二)偏序关系剪枝算法的实用价值
DF网络更适合GPU平台,我们也利用偏序关系剪枝算法,在骁龙845 CPU平台上进行了骨干网络结构与分割网络Decoder结构的搜索,所得语义分割网络得到了目前CPU平台上最好速度-精度折衷。
以下为该论文内容翻译:
一、偏序关系剪枝算法
(一)搜索空间设计与模型结构编码
图2(a)为本文的模型搜索空间,图2(b)为本文使用的残差模块结构。网络由6个Stage构成,Stage1~5均通过设步长为2降低输入特征的分辨率,Stage6通过全局池化与全连接层产生分类结果。
本文的模型搜索不搜索基本模块的结构,而是在基本残差模块的基础上,对网络整体的宽度与深度进行平衡。在Stage3~5,模型分别包含L/M/N个残差模块,Stage s中的第i个残差模块的宽度记为 ,因此本文将一个结构表示为:
(二)模型延时估计与子搜索空间
图2(a)所表达的搜索空间记为S,实践中我们仅关心延时在中的子集,即
。为估计各网络的延时,我们使用TensorRT提供的性能分析工具,在目标硬件TX2上,测量了不同的残差模块所需的延时,并建立一个查找表
。
这里,分别是输入输出特征的通道数,而
是相应的空间尺寸。利用该查找表将各残差模块延时进行加和记为对一个网络延时的估计。在图3(a)中,我们对若干网络的估计延时与实际延时进行了比较,可见估计延时与实际延时基本一致。
(三)偏序关系假设
我们借用集合论中的偏序(Partial Order)关系来描述模型结构之间的联系:集合中的元素为不同的模型结构(见图2(a)),集合中的二元关系定义为:若x比y更浅且更窄,则称x是y的前序,记为x<y。如此,整个搜索空间中的模型结构就满足了严格偏序关系,包括反自反性、反对称行、传递性。
图4给出了若干模型结构间偏序关系的示意图。偏序关系假设为:若x是y的前序(意味着x比y更浅且更窄),则x的速度更快,精度更低。这可以写为
在图3(b)中,我们基于已训练的模型,对偏序关系假设的合理性进行了验证,其中。可见,在本实验所关心的模型子空间中,偏序关系假设是合理的。
(四)偏序关系剪枝
基于偏序关系假设,我们可以在模型搜索中对搜索空间进行剪枝。图5是该剪枝过程的一个示意图。集合为已训练的模型结构,集合
中的模型代表了当前迭代中所能达到的最优速度-精度折衷边界。对于一个非边界模型
其任意前序模型m<w,应有:
而我们已有速度-精度折衷更好的边界点:
因此w的部分前序元素,延时将比
高,而精度将比
低,也即处于图5的阴影部分。这些
中的模型结构无法提供更好的速度-精度折衷,可以据此对搜索空间进行剪枝:
。如此反复迭代,在迭代中不断对搜索空间进行剪枝,直至速度-精度折衷的边界趋于稳定,如算法1所描述。
(五)语义分割网络的Decoder设计
本文中语义分割网络的结构设计如图6所示,在Stage 5中加入了pyramid pooling module,使用图6(b)所示的Fusion node融合不同分辨率的特征,其中Channel Controller(CC)为1x1卷积,用以控制Decoder在不同分辨率下的宽度。不同的,构成了不同复杂度的Decoder结构。这些Decoder结构之间也存在着偏序关系假设,因此也可以使用偏序关系剪枝算法对搜索空间进行剪枝。
二、实验数据
(一)TX2上的骨干网络搜索
我们在TX2上进行骨干网络的搜索,最终选取3个最有代表性的网络,记为3个东风(DF)骨干网络。如图7与表1所示,DF网络取得了TX2上最好的速度-精度折衷。
DF1网络FLOPs明显高于MobileNet于ShuffleNet等,但在TX2上实际延时更低。这是因为FLOPs作为间接指标,仅考虑了浮点计算量而没有考虑内存访问的延时。以ShuffleNetV2与DF1为例,其内存访问代价(也即中间层的特征),分别为4.9M与2.9M。
NASNet与PNASNet在网络结构搜索中均未考虑模型延时,所得模型结构复杂,内存访问量大,实际延时较高。有一些同期工作(ProxylessNAS/FBNet)也在模型搜索中考虑了模型延时,DF网络在速度-精度折衷上也优于这些模型。这是因为:一、这些模型未针对TX2平台进行模型搜索;二、这些网络均基于MobileNetV2的inverted bottleneck模块,相比本文使用的残差模块,内存访问量更高。
(二)TX2/1080Ti上的Decoder网络结构搜索
基于TX2上搜索的东风骨干网络,我们也在TX2/1080Ti上分别进行了Decoder结构搜索。如表3所示,东风分割网络(DF-Seg)是目前1080Ti上速度-精度折衷最好的语义分割网络。DF-Seg网络的速度(FPS)与精度(mIoU)均在1024x2048的分辨率下,使用TensorRT提供的性能分析工具在1080Ti上进行测试。为与ICNet公平对比,在FPS(Caffe)栏中使用“Caffe Time”工具,在Titan X(Maxwell)上进行速度测试。
表4与表5分别为Titan X(Maxwell)/TX2上的速度测试,DF-Seg的速度大幅优于现有结果,能够在TX2上实现对720P分辨率图像的30FPS的语义分割。
模型:https://github.com/lixincn2015/Partial-Order-Pruning
论文链接:https://arxiv.org/abs/1903.03777
(本文为 AI大本营整理文章,转载请微信联系 1092722531)
◆
精彩推荐
◆
「2019 Python开发者日」演讲议题全揭晓!这一次我们依然“只讲技术,拒绝空谈”10余位一线Python技术专家共同打造一场硬核技术大会。更有深度培训实操环节,为开发者们带来更多深度实战机会。更多详细信息请咨询13581782348(微信同号)。
推荐阅读:
特斯拉Q1销量大跌,马斯克吹出的“交付100万”如何破?| 极客头条
复旦邱锡鹏教授公布《神经网络与深度学习》,中文免费下载 | 极客头条
你肯定想学习的顶级Python项目(附代码)
李航《统计学习方法》最新资源:笔记、Python代码一应俱全!
靠找Bug赚了6,700,000元!他凭什么?
2019年技术盘点微服务篇(二):青云直上云霄 | 程序员硬核评测
京东淘汰“三类人”,近 18 万员工懵了?!
救救中国 996 程序员!GitHub 近 230,000 Star、Python 之父伸张正义!
V神最新亲笔:“你是如何被欺骗的?”
❤点击“阅读原文”,了解「2019 Python开发者日」
相关文章:

【AI】caffe使用步骤(一):将标注数据生成lmdb或leveldb
1、简述 caffe使用工具 convert_imageset 将标注数据转换成lmdb或leveldb格式,convert_imageset 使用方法可以参考脚本examples/imagenet/create_imagenet.sh。 convert_imageset 在./build/tools/中。 2、convert_imageset命令行参数 ./build/tools/convert_ima…

日本的GMO增加了比特币现金,和另外3种用于贷款项目的加密货币
2019独角兽企业重金招聘Python工程师标准>>> 日本的加密货币交易所 GMO正在不断地向其贷款项目中增加更多的货币,这使得它的客户可以将加密货币借给公司。最初,该项目是为BTC启动的,但现在GMO已经走得更远,并添加了比特…

功能演示:戴尔PowerConnect 8024交换机VLAN的创建与删除
戴尔PowerConnect 8024是一款带24个10 Gb以太网10GBASE-T端口的高密度10 Gb以太网交换机,专为具有高吞吐量和高可用性需求的数据中心、聚合和统一结构部署而设计。 这些高密度10 Gb交换机可用于汇聚型以太网环境,支持密集型虚拟化、iSCSI存储和10 Gb流量…

【AI】caffe使用步骤(二):设计网络模型prototxt
【一】以 lenet_train_test.prototxt 为例 name: "LeNet" layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {scale: 0.00390625}data_param {source: "examples/mnis…

南大和中大“合体”拯救手残党:基于GAN的PI-REC重构网络,“老婆”画作有救了 | 技术头条...
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑编译 | 一一出品 | AI科技大本营(ID:rgznai100)对于喜欢画画的你来说,总是画得七零八落,不堪入目,但现在,有一…

区块链技术应用领域和优势
区块链的应用正成为很多人关注的领域 ,有很多的新应用正在逐步的实施当中,各种的区块链应用也是让众人惊喜不断, 随着区块链技术的发展 ,各行各业在应用中所获取的成效也是越来越大, 这大大激发了人们对于区块链技术的…

Kataspace:用HTML5和WebGL创建基于浏览器的虚拟世界
源自斯坦福的创业公司Katalabs发布了一个用于创建基于浏览器的虚拟世界的开源框架。名叫KataSpace的软件,利用了新兴的HTML5技术,以及WebGL和WebSockets,允许用户无需安装任何插件,直接在浏览器的3D环境中展开互动。Katalabs已经推…

十问陆奇:努力、能力和机遇,谁能帮你跑赢未来?
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | 陆奇转载自36氪陆奇说:在创业者从0到1的过程中,我们看到的主要挑战有以下几个方面:对需求的理解和判断不够,与目标用户/客户的…

【AI】caffe使用步骤(三):编写求解文件solver.prototxt
【一】参考博客 caffe solver 配置详解:http://www.mamicode.com/info-detail-2620709.html Caffe学习系列(7):solver及其配置:https://www.cnblogs.com/denny402/p/5074049.html 【二】solver求解文件详解 1、solver求解文件例子如下 ne…

MySQL 8.0 Invisible Indexes 和 RDS 5.6 Invisible Indexes介绍
mysql 在8.0的时候支持了不可见索引,称为隐式索引 索引默认是可以的,控制索引的可见性可以使用Invisible,visible关键字作为create table,create index,alter table 来进行定义。RDS 5.6 Invisible Indexes 也是最近刚刚上线的功能。新购买实例目前已经支…

大有可为的“正则表达式”(二)
5.3. 基本和扩展正则表达式Unix支持两种的正则表达式的版本:(1)现代版本:扩展正则表达式(extended regular expression,ERE),属于IEEE1003.2标准,拥有比BRE更多的功能。…

【AI】caffe使用步骤(四):训练和预测
一、训练 1、直接训练 ./build/tools/caffe train --solverexamples/mnist/lenet_solver.prototxt ./build/tools/caffe train --solverexamples/mnist/lenet_solver.prototxt -gpu all //使用全部的gpu来训练2、采用微调funing-tuning训练法 ./build/tools/caffe train --s…

Github免费中文书《Go入门指南》,带你从零学Go | 极客头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | 无闻整理 | Jane出品 | AI科技大本营(ID:rgznai100)【导语】Go(也称 Golang)是 Google 开发的一种静态强类型、编…

sql语句中having的作用是?
HAVING对由sum或其它集合函数运算结果的输出进行限制。比如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从句。语法格式为: SELECT "column_name1", SUM("column…

微软重新释出MS10-015 解决蓝屏问题
微软于周二(3/2)重新释出MS10-015修补程序。由于先前使用者安装该程序时,若电脑中含有Alureon rootkit就会出现更新错误,因而微软也提醒使用者先行杀毒,并避免安装后可能造成的蓝屏画面。 MS10-015是微软在今年2月用来…

share_ptr_c++11
C智能指针 shared_ptr shared_ptr 是一个标准的共享所有权的智能指针, 允许多个指针指向同一个对象. 定义在 memory 文件中(非memory.h), 命名空间为 std. std::shared_ptr<int> sp1 std::make_shared<int>(10);std::shared_ptr<std::string> sp2 std::…

【Python】ubuntu14安装pycaffe环境:python2.7及依赖库
1、问题描述 ubuntu14自带的python2.7版本是python2.7.5,安装pycaffe环境时,出现错误,提示版本低。在bing上搜索源码安装python2.7.16的步骤,后续使用时,又报错,缺少SLL模块: Cant connect to…

周志华、张潼亲自辅导AI课程,DeeCamp 2019正式启动
4 月 8 日,创新工场对外宣布 DeeCamp 2019 人工智能训练营正式启动。 据介绍,DeeCamp 2019 将于 7 月 15 日至 8 月 23 日在北京、上海、南京、广州四地同时举办。今年招生规模也将扩大,计划招收 600 名大学生,进行为期 5 周的理…

No.2 条件
2019独角兽企业重金招聘Python工程师标准>>> clojure中不仅有if 还有when 还有什么when-do when-first when-let 一堆 首先介绍if (defn if? [x](if (pos? x)x(- x))) 这事一个取绝对值的方法,方法名改了下,pos? 是判断是否为正数 参数只能为数字 能看明白吧…

如何用Python和BERT做中文文本二元分类?| 程序员硬核评测
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | 王树义来源 | 王树芝兰(ID:nkwangshuyi)兴奋去年, Google 的 BERT 模型一发布出来,我就很兴奋。因为我当时正在用 fast.ai 的…

【C++】Google Protocol Buffer(protobuf)详解(二)
代码走读:caffe中protobuf的详细使用过程 【一】proto文件,以caffe.proto中BlobShape为例 syntax "proto2"; //指明protobuf版本,默认是v2,其它版本:"proto3"package caffe; // 最终生成c代码…

Linux使用
软件操作 软件包管理 yum安装 yum install ...卸载 yum remove ...搜索 yum serach ...清理缓存 yum clean packages列出已安装 yum list软件包信息 yum info ...硬件资源信息 内存free -m 硬盘df -h 负载(w或top)w 12:53:49 up 2:33, 3 users, load ave…

通过进程ID获得该进程主窗口的句柄
一个进程可以拥有很多主窗口,也可以不拥有主窗口,所以这样的函数是不存在的,所幸的是,相反的函数是有的。所以我们可以调用EnumWindows来判断所有的窗口是否属于这个进程。 typedef struct tagWNDINFO{ DWORD dwProcessId; …

【AI】caffe源码分析(一)
【一】caffe依赖开源库 【C】google gflags详解 【C】google glog详解 【C】Google Protocol Buffer(protobuf)详解(一) 【C】Google Protocol Buffer(protobuf)详解(二) 【C】goog…

专访博世王红星:大数据和AI将是中国制造业升级新动力
数据分析挖掘与工业大数据是智能制造与工业互联网的核心,其本质是通过促进数据的自动流动与智能决策去解决控制和业务问题,有效减少决策过程所带来的不确定性,并尽量克服人工决策的缺点,从而推动智能制造进程与智能工厂的建设&…

C进阶 - 内存四驱模型
一.内存四驱模型 不知我们是否有读过 《深入理解 java 虚拟机》这本书,强烈推荐读一下。在 java 中我们将运行时数据,分为五个区域分别是:程序计数器,java 虚拟机栈,本地方法栈,java 堆,方法区。…

ATEN—第十章OSPF的高级配置(4)
实验使用的工具:小凡模拟器一、在路由器R1上,配置接口,启动ospf路由进程和rip,宣告网段,并配置路由重分发★☆R1☆★☆→Router>Router>enableRouter#config terminalRouter(config)#hostname R1-jinR1-jin(config)#interfa…

【ubuntu】ubuntu14.04、16.04、18.04 LTS版本支持时间
0、历史版本下载地址 http://old-releases.ubuntu.com/releases/ http://mirrors.163.com/ubuntu-releases/ 1、官网说明 https://wiki.ubuntu.com/Kernel/LTSEnablementStack 2、简要记录 如下图: 14.04.0(v3.13) 14.04.1(v3.13) 14.04.5(v4.4) LTS 支持至 20…

BERT拿下最佳长论文奖!NAACL 2019最佳论文奖公布
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | 刘静编辑 | 李尔客本文经授权转自公众号图灵Topia(ID:turingtopia)今日,自然语言处理顶会NAACL 2019最佳论文奖公布ÿ…

Git Bash修改默认路径
Git Bash默认安装在C:/user目录下,如果管理其他目录的代码库,需要切换目录。 修改Git Bash的默认路径,不需要每次切换了。 方法: 桌面Git Bash快捷方式,右键-->属性-->“快捷方式”标签 1,修改“起止…