2017-09-25 15:12:51 zchang81 阅读数 3405
  • TensorFlow Lite移动端开发

    深度学习模型对于算力要求较高,为了能在算力羸弱的移动端进行部署,必须对原模型进行量化压缩,从而提升模型的计算性能,而TensorFlow Lite是一种用于设备端推断的开源深度学习框架,其能将TensorFlow模型转换为压缩的 FlatBuffer 文件,并通过将 32 位浮点数转换为更高效的 8 位整数进行量化,以到达模型快速运算的效果 . 伴随着深度学习技术的广泛使用,越来越多的深度学习模型被部署到移动端或IoT设备上运行,对于从事人工智能研发的相关人员,掌握对应的移动端开发技术是十分必要的,也将对自己的职业生涯产生极大的促进作用! 本课程将从TensorFlow Lite的基本组件及特性讲起,并结合丰富的技术实战案例,让您深入了解并掌握TensorFlow Lite的使用方法!

    174 人正在学习 去看看 袁明奇

百度今天 (2017 / 9 / 25 开源了移动端深度学习框架  MDL (mobile-deep-learning) 。该移动端深度学习框架,致力于让卷积神经网络极度简单的部署在手机端。目前正在手机百度内运行。并且支持iOS  gpu 计算。体积小,速度快。

1、体积 armv7  340k+;
2、速度 iOS GPU mobilenet 可以达到 40ms、squeezenet 可以达到 30ms。


GitHub 地址:https://github.com/baidu/mobile-deep-learning


与其他支持移动端的开源框架相比较:

框架 Caffe2 TensorFlow ncnn MDL MDL
CPU/GPU CPU CPU CPU CPU GPU
速度 极快
体积
系统 Android iOS Android iOS Android & iOS Android & iOS 仅 iOS
2018-12-18 10:48:13 weixin_33735077 阅读数 31
  • TensorFlow Lite移动端开发

    深度学习模型对于算力要求较高,为了能在算力羸弱的移动端进行部署,必须对原模型进行量化压缩,从而提升模型的计算性能,而TensorFlow Lite是一种用于设备端推断的开源深度学习框架,其能将TensorFlow模型转换为压缩的 FlatBuffer 文件,并通过将 32 位浮点数转换为更高效的 8 位整数进行量化,以到达模型快速运算的效果 . 伴随着深度学习技术的广泛使用,越来越多的深度学习模型被部署到移动端或IoT设备上运行,对于从事人工智能研发的相关人员,掌握对应的移动端开发技术是十分必要的,也将对自己的职业生涯产生极大的促进作用! 本课程将从TensorFlow Lite的基本组件及特性讲起,并结合丰富的技术实战案例,让您深入了解并掌握TensorFlow Lite的使用方法!

    174 人正在学习 去看看 袁明奇

采访嘉宾 | 何亮亮

AI前线导读: 随着深度学习领域的快速发展,以及移动端芯片计算能力的逐步提升,设备端上的深度学习推理正在变成一个巨大的需求和趋势,一个好用的深度学习框架成为深度学习应用落地的关键。小米团队打造的MACE (https://github.com/XiaoMi/mace),就是专门为移动端芯片优化的深度学习框架,且已开源供开发者使用。

开发这个移动端深度学习框架的过程并非一帆风顺,克服了一些困难之后,MACE才诞生并逐渐被越来越的开发者采用。在开发过程中,小米有哪些经验和踩坑经验可以分享给开发者?AI前线采访了小米深度学习框架负责人何亮亮来进行了深入的了解。

更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)

作为小米深度学习框架负责人,何亮亮目前负责服务端与移动端深度学习框架的研发工作。他在分布式系统、存储与数据库、异构计算、深度学习、计算机视觉等领域有丰富的实践经验。

何亮亮介绍道,他带领的团队的主要工作内容,包括移动端深度学习框架MACE的开发,服务端深度学习框架的定制与优化,图像处理与计算机视觉算法的开发与优化等工作。

MACE创建背后的故事

相对于PC,更加轻便、易于携带的移动端越来越普及,手机更是人手一部或者多部,这就让在移动端进行深度学习成为一个迫切的需求。鉴于此,专门为移动端而设计的深度学习框架——MACE应运而生。

何亮亮告诉AI前线记者,MACE最初是为了解决公司内部业务的落地而立项的。在2017年,为了落地拍照后处理的模型,小米曾考察了SNPE专有框架和主流的开源深度学习框架。结果,从性能角度看,仅有SNPE满足速度和功耗的要求,但因为SNPE是闭源软件,在部分特性和自定义算子的定制上有较大的制约,沟通成本影响了产品开发周期的可控性。为了同时满足性能和可控性两方面的要求,小米开始了MACE的自主研发。

在研发这个深度学习框架的过程中,遇见困难在所难免。在研发初期,MACE的重点是GPU的性能优化,何亮亮回忆,开发过程中他们遇到的最大困难,无疑是GPU算子的性能优化,由于当时没有任何开源实现可以参考,这项研发工作的难度非常大。

但是,经过多方尝试以及与高通的一些交流,MACE最终达到,甚至在内部私有模型上超过了SNPE的性能,同时还支持除Adreno GPU之外的芯片。后期,小米团队还对CPU和DSP也进行了支持和优化,也达到了较高的水平。

除了算子的性能之外,移动端框架还有其他的一些特有的问题。比如,相比服务端模型推理,移动端的推理对内存占用有着更苛刻的要求。为了优化计算节点间中间结果对内存的占用,小米借鉴了寄存器分配的图染色算法,通过提升内存缓冲区的复用效率,来达到减少内存占用的目标。对于权重的内存占用,小米则采用了半精度浮点和8比特整形量化的方法来进行压缩。另一个小米遇到问题是模型的推理计算对用户体验的影响,对于移动端的GPU,除了可以用作通用计算之外,更重要的作用是图形界面的渲染。如何解决深度学习模型的推理计算对图形渲染的干扰带来的卡顿问题,小米则采用了离线Tuning并自动进行细粒度Kernel拆分的形式来解决。

那么,为什么小米后来决定将这个艰难开发出来的移动端深度学习框架开源给开发者使用呢?何亮亮表示,这是考虑到当时市面上没有成熟的支持异构计算的开源框架可用,为了帮助更广大的开发者提升手机AI方面的体验,小米决定将MACE开源。

如今,MACE项目非常活跃,社区中有200多个Issue讨论和若干Pull Request,用户交流群(756046893)用户有1000多,主要集中在手机应用开发和IoT硬件设备开发领域。

据了解,MACE框架已经广泛应用到小米手机的各种场景和业务中,例如相机场景识别、人像模式、人脸解锁、行为预测、机器翻译、语音识别等。

MACE架构设计-异构计算

\"image\"

对于深度学习框架,尤其是推理框架,最核心的部分是高性能的kernel实现。MACE的NEON, GPU的kernel实现均达到较高水平,同时对于Hexagon DSP也进行了支持和优化。

目前,MACE支持主流的CNN模型,同时也支持机器翻译、语音识别的部分模型。除此之外,与MACE一同开源的,还有MACE Model Zoo项目(https://github.com/XiaoMi/mace-models),这个项目聚合了了一些常用的深度学习模型。

何亮亮介绍道,MACE的核心框架是C++,算子分别设计为OpenCL和汇编语言,具体选择哪个取决于底层的硬件,而周边工具则采用了更灵活的Python。

目前,MACE还无法做到在安卓和苹果系统之间自由切换,只支持安卓和Linux。

MACE在易用性、资源调度和兼容性方面的表现究竟如何?据悉,MACE提供了丰富的文档和Model Zoo,让开发者可以快速入手,且兼容主流的ARM CPU和常见的移动端GPU,开发者可以灵活地选择不同的CPU/GPU/DSP计算设备。

与三大移动端框架大比拼

当前移动端的三大框架Caffe2、TensorFlow Lite、Core ML无论是从知名度还是采用广度上都比MACE有很大的优势。但是,相比于这三大框架,MACE也有自己独特的优势。

相对于Caffe/Caffe2/TensorFlow Lite,MACE最大的优势是对GPU和DSP等异构计算的支持,劣势则是知名度和生态有不小的差距;而Core ML作为不同平台的专有框架,应用场合目前没有与MACE重叠。

对于开发者来说,MACE最大的吸引力在于它对CPU/DSP异构计算的支持,这让MACE具有其他开源框架不具备的性能优势。

另一方面,Caffe2、TensorFlow Lite、Core ML 均使用 offline 方式,可在无需网络连接的情况下确保用户数据的私密性。和其他框架一样,MACE也采用端侧离线模式。

那这是否代表移动端深度学习框架的趋势会倾向于offline呢?对此,何亮亮表示,移动端深度学习框架存在的意义在于端侧的本地计算。至于深度学习的推理在未来主要是online还是offline模式,他认为主要取决于场景,并不会趋同到一个模式。

具体而言,这主要取决于业务模式、产品体验、成本、隐私法规等几个因素。

业务模式主要是指特征数据的源头以及推理结果的去向,不管是从成本还是用户体验来说,数据和计算的保持局部性大多是有益的,例如,对于特征来自服务端的场景,天然适合online模式,比如广告信息流的点击率预估;而特征来自端测,则适合offline模式,例如拍照的后处理。而未来芯片的发展,以及5G的普及,也会导致online和offline的成本变化,也会影响两种模式的选择。另外,隐私法规的出台也是一个很重要的决定因素。

跟其他技术一样,随着行业的发展和成熟,移动端深度学习框架也会逐渐成熟并成为标准化的基础设施,但在此之前,仍会存在百家争鸣的局面,选择适合的框架解决产品落地的问题是最重要的。

目前,在移动端深度学习领域,无论是深度学习的异构计算芯片,还是芯片之上的深度学习框架,都处在蓬勃发展的阶段。这不仅给开发者提供了众多的选择,同时也带来了碎片化的负担和困扰。小米作为智能手机和IoT设备厂商,同样面临着深度学习推理软硬件选型的问题。为了更好的评估不同供应商的芯片和框架软件的性能指标,小米发起了开源移动端深度学习基准测试项目Mobile AI Bench ,希望借助小米在手机和智能硬件供应链方面的优势,与广大芯片厂商和开发者共同努力,推动移动端深度学习推理领域的发展。

会议推荐:

12 月 20-21,AICon 全球人工智能与机器学习技术大会将于北京盛大开幕,学习来自 Google、微软、BAT、360、京东、美团等 40+AI 落地案例年终总结,与国内外一线技术大咖面对面交流,不见不散。

\"image\"

2019-05-21 23:15:48 qq_42580947 阅读数 180
  • TensorFlow Lite移动端开发

    深度学习模型对于算力要求较高,为了能在算力羸弱的移动端进行部署,必须对原模型进行量化压缩,从而提升模型的计算性能,而TensorFlow Lite是一种用于设备端推断的开源深度学习框架,其能将TensorFlow模型转换为压缩的 FlatBuffer 文件,并通过将 32 位浮点数转换为更高效的 8 位整数进行量化,以到达模型快速运算的效果 . 伴随着深度学习技术的广泛使用,越来越多的深度学习模型被部署到移动端或IoT设备上运行,对于从事人工智能研发的相关人员,掌握对应的移动端开发技术是十分必要的,也将对自己的职业生涯产生极大的促进作用! 本课程将从TensorFlow Lite的基本组件及特性讲起,并结合丰富的技术实战案例,让您深入了解并掌握TensorFlow Lite的使用方法!

    174 人正在学习 去看看 袁明奇

一、常用移动端深度学习框架

深度学习发展很快,最近又出现了几个新的移动端前向框架,例如Tengine和 TVM.
我们还没有对这两个框架进行深入研究,但是在对应的wiki中,可以看到这两个框架的速度对于现有框架都具有一定优势,通过短暂的了解,Tengine还是很不错的,支持op跟模型种类都比较丰富,还支持GPU运算。感兴趣的读者可以多了解一下。

---------------- 2018.12.07 分割线 ----------------

各大公司开源了自己的移动端深度学习框架,其中包括TensorFlow Lite、Caffe2、MACE、paddle-mobile(MDL)、FeatherCNN、NCNN等。我们参考开源的测试结果,结合自己整理的数据,针对主流的异动单深度学习框架进行简单对比及介绍。

框架 机构 支持平台 Stars Forks
Caffe2 Facebook ARM 8270* 2080*
TF_lite Google ARM * *
MACE Xiaomi ARM/DSP/GPU 2442 412
paddle-mobile Baidu ARM/GPU 4038 774
FeatherCNN Tencent ARM 658 170
NCNN Tencent ARM 4606 1163

二、性能对比 (截至2018.09)

1. NCNN / FeatherCNN / MACE

CPU:kryo&2.15GHz*2 (ms)

框架 SqueezeNet_v1.1 MobileNet_v1 ResNet18
NCNN 47.64 68.71 142.28
FeatherCNN 36.39 58.92 100.13
MACE 42.37 65.18 160.7

2. paddle-mobile (MDL)

CPU:高通835 (ms)

框架 squeezenet mobilenet_v1 googlenet_v1
1 Thread 82.41 105.43 341.25
2 Threads 56.17 62.75 233.35
4 Threads 36.45 37.13 158.55

三、框架评价

框架 集成成本 库文件大小 模型支持程度 文档完整程度 速度
caffe2 一般 良好 优秀 良好 一般
TF_Lite 一般 良好 优秀 良好 优秀
MACE 良好 优秀 良好 良好 优秀
MDL 优秀 优秀 良好 良好 良好
FeatherCNN 良好 优秀 良好 良好 优秀
NCNN 优秀 优秀 良好 优秀 优秀

四、几款移动端深度学习框架分析

移动端的框架,基本不支持训练,只支持前向推理。

1.腾讯的FeatherCNN和ncnn

这两个框架都是腾讯出的,FeatherCNN来自腾讯AI平台部,ncnn来自腾讯优图。

重点是:都开源,都只支持CPU

ncnn开源早点,文档、相关代码丰富一些,使用者相对多一些。FeatherCNN开源晚,底子很好,从测试结果看,速度具有微弱优势。

2.百度的 paddle-mobile(MDL)

MDL可以支持CPU和GPU,FPGA在开发中。

3.小米的 MACE

它有几个特点:异构加速、汇编级优化、支持各种框架的模型转换。

小米支持的GPU不限于高通,这点很通用,很好,比如瑞芯微的RK3299就可以同时发挥出cpu和GPU的好处来。

4.其它

在移动端,caffe2、tensorflow lite都可以考虑,只是可能没有以上的框架效率高。

另外据说支付宝有xNN的深度框架,商汤有PPL框架,这两个都是企业自用没有开源。

国内杭州九言科技的开源方案,用的人不多,可以参考。

5.总结

上面的大部分框架都是主要面向android的,但是用于arm-Linux也是可以的。

现在越来越多的厂商开源移动端的深度学习框架,对于从业者是好事,有更多的选择,不用从头造轮子。

相信将来会有更多的技术手段用于移动端部署深度学习网络,包括模型压缩、异构加速、汇编优化等。

五、推荐框架

针对目前开源的移动端深度学习前向框架,结合我们使用、测试的结果,我们推荐以下几个框架。

1.NCNN

第一个高效使用的移动端开源库,支持模型丰富,更新快,文档逐渐完善,被大家采用较多,遇到坑相对少。

2.MACE

性能优秀,支持GPU,但是刚刚开源,可能会遇到一些开发问题。

3.MDL

百度出品,一定的品质保证,更新较快。

参考资料

移动端深度学习框架小结

NCNN性能分析

NCNN性能对比

MACE、NCNN、FeatherCNN性能对比

2018-10-31 15:13:45 DKhadoop 阅读数 114
  • TensorFlow Lite移动端开发

    深度学习模型对于算力要求较高,为了能在算力羸弱的移动端进行部署,必须对原模型进行量化压缩,从而提升模型的计算性能,而TensorFlow Lite是一种用于设备端推断的开源深度学习框架,其能将TensorFlow模型转换为压缩的 FlatBuffer 文件,并通过将 32 位浮点数转换为更高效的 8 位整数进行量化,以到达模型快速运算的效果 . 伴随着深度学习技术的广泛使用,越来越多的深度学习模型被部署到移动端或IoT设备上运行,对于从事人工智能研发的相关人员,掌握对应的移动端开发技术是十分必要的,也将对自己的职业生涯产生极大的促进作用! 本课程将从TensorFlow Lite的基本组件及特性讲起,并结合丰富的技术实战案例,让您深入了解并掌握TensorFlow Lite的使用方法!

    174 人正在学习 去看看 袁明奇

与云相比,移动系统受计算资源限制。然而众所周知,深度学习模型需要大量资源 。为使设备端深度学习成为可能,应用程序开发者常用的技术之一是压缩深度学习模型以降低其资源需求,但准确率会有所损失。尽管该技术非常受欢迎,而且已被用于开发最先进的移动深度学习系统,但它有一个重大缺陷:由于应用程序开发者独立开发自己的应用,压缩模型的资源-准确率权衡在应用开发阶段的静态资源预算的基础上就被预先确定了,在应用部署后仍然保持不变。

然而,由于开启新应用、关闭现有应用和应用优先级改变等事件,这些系统的可用运行时资源是动态变化的。因此,如果可用运行时资源无法满足压缩模型的资源需求,这些同时运行的应用就会互相争夺资源,导致流视频的处理帧率较低。另一方面,在有额外的运行时资源时,压缩模型也无法利用这些额外资源来修复准确率损失。

本文提出了一种新型框架 NestDNN,将运行时资源的动态变化纳入考量,生成一种资源感知的多重租赁设备端深度学习移动视觉系统。NestDNN 用灵活的资源-准确率权衡代替了固定的资源-准确率权衡。在运行时方面,该框架为每个深度学习模型动态地选择最优资源-准确率权衡,以满足模型对系统可用运行时资源的需求。采用这种方法,NestDNN 可以高效利用移动视觉系统中的有限资源,最大化所有并行应用程序的性能。

挑战与对策。NestDNN 的设计面临两大挑战。(i)现有方法的局限在于:压缩模型的资源需求和准确率之间的权衡是固定的。因此,第一大挑战在于设计一个能让深度学习模型提供灵活的资源-准确率权衡的方案。一种朴素的方法是在移动系统中安装所有具备可能资源-准确率权衡的模型变体。然而,由于这些模型变体各自独立,这种方法无法扩展,在移动系统同时运行多个深度学习模型(每个模型又有多个变体)时不具备可行性。(ii)为每个同时运行的深度学习模型选择资源-准确率权衡非常关键。这是因为不同的应用具有不同的推断准确率和处理延迟目标。以路况监督无人机为例:一个通过车辆计数来检测交通拥堵的应用不需要很高的准确率,但要求低延迟;而一个读取车牌的应用程序需要很高的车牌读取准确率,但不需要实时响应 [39]。

为应对第一个挑战,NestDNN 部署了一个新的模型剪枝和复原方案(recovery scheme),将深度学习模型转换为紧凑的多容量模型(multi-capacity model)。这一多容量模型由一组派生模型组成,每个派生模型提供不同的资源-准确率权衡。与彼此独立的传统模型变体不同,容量(即资源需求)较小的派生模型与拥有较大容量的派生模型共享模型参数,使其自身嵌入到较大容量的派生模型中,而无需占用额外的内存空间。采用这种做法,这种多容量模型可以提供多个资源-准确率权衡,其内存占用也较为紧凑。

为了应对第二个挑战,NestDNN 将每个并行应用的每个派生模型的推断准确率和处理延迟编码为一个成本函数。在给定所有成本函数的情况下,NestDNN 使用资源感知运行时调度器(resource-aware runtime scheduler)为每个深度学习模型选择最优资源-准确率权衡,并确定分配给每个模型的最佳运行时资源,以同时最大化整体推断准确率,最小化所有并行应用程序的总体处理延迟。

据我们所知,NestDNN 是第一个支持资源感知的多重租赁设备端深度学习移动视觉系统的框架。它为克服现有方法的局限性以及连续移动视觉中的独特挑战提供了新的技术。我们相信,我们的工作是将连续移动视觉的设想变为现实的重要一步

实验结果总结

我们开展了一系列实验来评估 NestDNN 的性能。为了评估多容量模型的性能,我们在六个移动视觉应用程序上对其进行了评估,这些应用针对移动视觉系统中一些最重要的任务。这些应用程序的开发基于两种广泛使用的深度学习模型——VGG Net [33] 和 ResNet [13],以及计算机视觉社区中常用的六个数据集。为了评估资源感知运行时调度器的性能,我们结合了两种广泛使用的调度方案,并在三部智能手机上实现了 NestDNN 和六款移动视觉应用程序。我们还实施了现有方法,该方法使用固定的资源-准确率权衡,因此是不考虑资源的。为了比较我们的资源感知方法和不考虑资源的现有方法之间的性能,我们设计了一个基准来模拟不同场景中的运行时应用程序查询。结果表明:

多容量模型能够提供嵌套在单个模型中的灵活、优化的资源-准确率权衡。通过参数共享,它显著减少了模型内存占用和模型切换开销。

资源感知运行时调度器在两种调度方案上都优于不考虑资源的调度器,推断准确率提高了 4.2 %,视频帧处理速度提高了 1 倍,能耗降低了 40%。

NestDNN 框架概览

图 1 展示了 NestDNN 的架构,由离线阶段和在线阶段组成。

离线阶段包含三个子阶段:模型剪枝(model pruning)、模型复原(model recovery)和模型配置(model profiling)。

图 1:NestDNN 架构示意图

在模型剪枝阶段,NestDNN 使用当前最佳的三联响应残差(Triplet Response Residual,TRR)方法,基于给定深度学习模型(即原版模型)滤波器的重要性对滤波器进行排序,并迭代地对滤波器进行修剪。在每次迭代中,重要性较低的滤波器被裁剪,然后剪枝模型被重新训练以补偿滤波器修剪导致的准确率降低(如果存在的话)。当剪枝模型无法达到用户设定的最低准确率时,迭代过程结束。最小的剪枝模型被称为种子模型(seed model)。最终,一个滤波器修剪路径图被创建出来,其中路径图中的每个占用是一个带滤波器修剪记录的剪枝模型。

图 2:滤波器剪枝的图示 [23]。通过修剪滤波器,模型大小和计算成本都有所降低

在模型复原阶段,NestDNN 使用了一种新的模型固化(model freezing)和滤波器增长(filter growing)方法(即 freeze-&-grow),以迭代的方式生成多容量模型。模型复原使用种子模型作为起点。在每一次迭代中,模型固化被首先应用于固化所有滤波器的参数。然后按照滤波器修剪路径图的逆向顺序,应用滤波器增长将修剪的滤波器加回去,从而生成一个拥有更大容量的派生模型,其准确率通过重新训练而恢复。通过重复迭代,新的派生模型基于之前的模型而生成。因此,最终的派生模型拥有所有之前模型的容量,因而被命名为多容量模型。

3:模型固化和滤波器增长图示

在模型配置阶段,给定一个移动端视觉系统的规范,NestDNN 为每个多容量模型生成一个配置文件,包括推断准确率、内存占用,以及每个派生模型的处理延迟。

4:多容量模型的模型切换(模型升级与模型降级)图示

最后,在在线阶段,资源感知运行时调度器持续监控改变运行时资源的事件。一旦检测到这种事件,调度器会检查所有并行应用程序的配置文件,为每个应用程序选择最佳派生模型,并为每个选择的派生模型分配最佳数量的运行时资源,以同时最大化整体推断准确率,最小化所有应用程序的总体处理延迟。

在不损失泛化性能的情况下,我们将 CIFAR-10、GTSRB 和 Adience-Gender 随机分配给 VGG-16,并将 ImageNet50、ImageNet-100 和 Places-32 分配给 ResNet-50,以分别创建被标记为 VC(即在 CIFAR-10 数据集上训练的 VGG-16)、RI-50、RI-100、VS、VG 和 RP 的六个移动视觉应用程序。我们严格遵循上述每个数据集提供的协议来训练和测试所有原版 DNN 模型和 NestDNN 生成的所有派生模型。

表 2 对这些数据集、DNN 模型和移动视觉应用程序进行了总结。

表 2:本研究使用的数据集、DNN 模型和移动视觉应用概览

多容量模型的性能

优化的资源-准确率权衡

如图 6 所示,我们从结果中得到两个关键结论。一,在这六个应用的不同大小的模型中,派生模型的准确率一直高于基线模型。派生模型的平均准确率比基线模型高 4.98%。这表明我们每个容量的派生模型都能够在给定内存条件下获得当前最优的推断准确率。二,规模较小的派生模型性能优于规模较大的派生模型。两个最小的派生模型的平均准确率比对应的基线模型高出 6.68%,而两个最大的派生模型的平均准确率比对应的基线模型高 3.72%。这是因为我们的 TRR 方法能够保存重要的滤波器,并剪掉不那么重要的滤波器。尽管容量小,但规模较小的派生模型从重要的滤波器中受益很多,而对应的基线模型无法从中获益。

图 6:派生模型和基线模型的 Top-1 准确率 vs. 模型大小对比

图 7 展示了六个应用的五个派生模型和对应原版模型的计算成本对比(指标:GFLOPs,即 GigaFLOPs)。如图所示,所有派生模型的 GFLOPs 都比对应原版模型低。这表明我们的滤波器剪枝方法能够有效减少这六个应用的计算成本,且该方法可泛化至在不同数据集上训练的不同深度学习模型。

图 7:派生模型和原版模型的计算成本对比

内存占用减少

表 3 列举了六个移动视觉应用的对比结果。显然,每个应用的多容量模型的规模小于对应的累积模型(accumulated model)规模。此外,模型尺寸较大的深度学习模型从参数共享中受益更多。例如,VC 是六个应用中模型规模最大的。在参数共享方面,它的内存占用减少了 241.5 MB。最后,如果我们考虑同时运行这六个应用,则多容量模型内存占用减少 587.4 MB,在内存占用减少方面受益最大。

表 3:多容量模型的内存占用减少状况

资源感知调度器(Resource-Aware Scheduler)的性能

推断准确率和帧率的改进

图 9(a) 展示了在 MinTotalCost 调度方案下,NestDNN 和基线模型的运行时性能对比。黄色圆圈代表基线模型的运行时性能。每个蓝色方块代表在公式(2)定义的损失函数中使用特定 α 进行调度时所获得的运行时性能。

图 9(b) 展示了在 MinMaxCost 调度方案下,NestDNN 和基线模型的运行时性能对比。当 NestDNN 和基线模型的平均 top-1 准确率一样时,NestDNN 的平均帧率速度是基线模型的 1.9 倍。当 NestDNN 和基线模型的平均帧率一致时,NestDNN 的平均准确率比基线模型高 4.2%。在「knee」处,NestDNN 相对基线模型达到了 1.5 倍的平均帧率加速和 2.1% 的平均准确率提升。

9:在 (a) MinTotalCost 和 (b) MinMaxCost 机制下,NestDNN (资源感知) 和现有方法(不考虑资源)的运行时对比


能耗减少

除了推断准确率和帧率方面的改进以外,NestDNN 的能耗也比较低。图 10(a) 展示了在 MinTotalCost 调度方案下,在「knee」处,NestDNN 和基线模型的能耗对比。在不同的推断数上,NestDNN 的平均能耗相比基线模型减少了 40%。类似地,图 10(b) 展示了在 MinTotalCost 调度方案下的能耗对比。NestDNN 的平均能耗相比基线模型减少了约 33%。

图 10:在 (a) MinTotalCost 和 (b) MinMaxCost 机制下,NestDNN(资源感知)和现有方法(不考虑资源)的能耗对比

2017-07-04 09:43:13 zchang81 阅读数 4070
  • TensorFlow Lite移动端开发

    深度学习模型对于算力要求较高,为了能在算力羸弱的移动端进行部署,必须对原模型进行量化压缩,从而提升模型的计算性能,而TensorFlow Lite是一种用于设备端推断的开源深度学习框架,其能将TensorFlow模型转换为压缩的 FlatBuffer 文件,并通过将 32 位浮点数转换为更高效的 8 位整数进行量化,以到达模型快速运算的效果 . 伴随着深度学习技术的广泛使用,越来越多的深度学习模型被部署到移动端或IoT设备上运行,对于从事人工智能研发的相关人员,掌握对应的移动端开发技术是十分必要的,也将对自己的职业生涯产生极大的促进作用! 本课程将从TensorFlow Lite的基本组件及特性讲起,并结合丰富的技术实战案例,让您深入了解并掌握TensorFlow Lite的使用方法!

    174 人正在学习 去看看 袁明奇

1、Caffe的移动端项目

caffe项目连接如下:

android-lib 
android-demo

2、mxnet的移动端项目

mxnet被 Amazon AWS 选为官方深度学习平台

mxnet实现的简介

项目连接如下:

android-lib

android demo

并且mxnet 提供了对caffe 模型的支持。使用caffe训练好的模型,也可以通过提供的工具讲其进行转化json格式,然后就可以在mxnet 上使用,同时然也可以在移动端使用。

caffe_converter

3、tensorflow的移动端项目

tensorflow对android端的支持也是官方提供的。

android build

4、torch移动端项目
torch android

5tiny-cnn移动端项目

tiny-cnn

tiny-cnn支持caffe模型的转化,最新的android版本也支持了caffe模型。

开源项目地址和详细介绍如下。

cnnforandroid

三.专注移动端的Caffe2go项目

4、caffe2go移动端项目

Github链接:

https://github.com/caffe2/caffe2

没有更多推荐了,返回首页