2017-09-25 15:12:51 zchang81 阅读数 3462

百度今天 (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
2019-05-21 23:15:48 qq_42580947 阅读数 196

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

深度学习发展很快,最近又出现了几个新的移动端前向框架,例如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 阅读数 142

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

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

本文提出了一种新型框架 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 阅读数 4148

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

2018-06-29 21:13:10 Sky_Monkey 阅读数 743

小米人工智能与云平台副总裁崔宝秋博士在开源中国开源世界高峰论坛上发表《小米 AI 时代的开源》演讲,并在会上宣布,开源小米自研的移动端深度学习框架 Mobile AI Compute Engine (MACE)。


小米开源自研移动端深度学习框架 MACE

6 月 28 日,小米人工智能与云平台副总裁崔宝秋博士在开源中国开源世界高峰论坛上发表《小米 AI 时代的开源》演讲,并在会上宣布,开源小米自研的移动端深度学习框架 Mobile AI Compute Engine (MACE)。

地址:https://github.com/XiaoMi/mace

近年来,随着移动互联网的深入发展和 IoT 智能设备的普及,以及用户对智能性,低延迟和隐私保护的诉求变得越来越高,移动设备上的离线深度学习应用变得越来越普遍。

据雷锋网了解,MACE 是专门为移动设备优化的深度学习模型预测框架,MACE 从设计之初,便针对移动设备的特点进行了专门的优化:

  • 速度:对于放在移动端进行计算的模型,一般对整体的预测延迟有着非常高的要求。在框架底层,针对 ARM CPU 进行了 NEON 指令级优化,针对移动端 GPU,实现了高效的 OpenCL 内核代码。针对高通 DSP,集成了 nnlib 计算库进行 HVX 加速。同时在算法层面,采用 Winograd 算法对卷积进行加速。

  • 功耗:移动端对功耗非常敏感,框架针对 ARM 处理器的 big.LITTLE 架构,提供了高性能,低功耗等多种组合配置。针对 Adreno GPU,提供了不同的功耗性能选项,使得开发者能够对性能和功耗进行灵活的调整。

  • 系统响应:对于 GPU 计算模式,框架底层对 OpenCL 内核自适应的进行分拆调度,保证 GPU 渲染任务能够更好的进行抢占调度,从而保证系统的流畅度。

  • 初始化延迟:在实际项目中,初始化时间对用户体验至关重要,框架对此进行了针对性的优化。

  • 内存占用:通过对模型的算子进行依赖分析,引入内存复用技术,大大减少了内存的占用。

  • 模型保护:对于移动端模型,知识产权的保护往往非常重要,MACE 支持将模型转换成 C++ 代码,大大提高了逆向工程的难度。

此外,据了解,MACE 支持 TensorFlow 和 Caffe 模型,提供转换工具,可以将训练好的模型转换成专有的模型数据文件,同时还可以选择将模型转换成 C++ 代码,支持生成动态库或者静态库,提高模型保密性。

小米开源自研移动端深度学习框架 MACE

目前 MACE 已经在小米手机上的多个应用场景得到了应用,其中包括相机的人像模式,场景识别,图像超分辨率,离线翻译(即将实现)等。

此外,随着 MACE 一起开源的还有 MACE Model Zoo 项目,目前包含物体识别,场景语义分割,图像风格化等多个公开模型。后续会增加更多模型。

小米开源自研移动端深度学习框架 MACE

上方是用 MACE Model Zoo 中的 fast style transfer(快速风格迁移)模型在手机端生成的风格化图片。

据雷锋网了解,此前小米曾参与多个国际重大的开源项目,比如 Hadoop,HBase,Spark,TensorFlow 等,同时,小米也积极参与自研、具有通用性的软件系统。过去几年,小米相继推出了 Linden(分布式实时搜索系统),Open-Falcon(互联网企业级监控系统)、Pegasus(分布式 KV 存储系统)等一系列开源项目。

在 AI 方面,小米开源了自研的针对移动端设备优化的深度学习框架 MACE,目前已经支持内部的多个业务。

另外,6 月 29 日至 7 月 2 日雷锋网将在深圳举办 CCF-GAIR 大会,小米首席架构师、小米人工智能与云平台副总裁崔宝秋将作为嘉宾出席并发表演讲。

全球人工智能与机器人峰会(CCF-GAIR) 由中国计算机学会(CCF)主办,雷锋网、香港中文大学(深圳)承办,得到了深圳市政府的大力指导,是国内人工智能和机器人学术界、工业界及投资界三大领域的顶级交流盛会,旨在打造国内人工智能领域最具实力的跨界交流合作平台。

CCF-GAIR 2018 延续前两届的“顶尖”阵容,提供 1 个主会场和 11 个专场(仿生机器人专场,机器人行业应用专场,计算机视觉专场,智能安全专场,金融科技专场,智能驾驶专场,NLP 专场,AI+ 专场,AI 芯片专场,IoT 专场,投资人专场)的丰富平台,意欲给三界参会者从产学研多个维度,呈现出更富前瞻性与落地性相结合的会议内容与现场体验。


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