开发 | 百度开源移动端深度学习框架MDL,可在苹果安卓系统自由切换

AI科技评论消息,日前,百度在 GitHub 上开源了移动端深度学习框架 mobile-deep-learning(MDL)的全部代码以及脚本,这项研究旨在让卷积神经网络(CNNC)能更简单和高速的部署在移动端,支持iOS GPU,目前已经在百度APP上有所使用。

大小:340k+(在arm v7上)

速度:对于 iOS Metal GPU Mobilenet,速度是40ms,对于 Squeezenet,速度是30ms

展示案例

如果想先运行demo或快速使用这个框架,你可以扫下面的二维码安装编译好的apk/ipa文件,不用知道详细的安装细节。

iOS-MobileNet:

Android-Googlenet:

想要了解源码实现可以继续往下看,源码位于examples文件夹里。

执行样例

1、复制项目代码

2、安装apk\ipa文件,或导入到IDE

3、运行

前期准备

  • android端安装NDK
  • 安装Cmake
  • Android端 NDK CMake 文件地址:https://developer.android.google.cn/ndk/guides/cmake.html
  • 安装 Protocol Buffers

使用MDL lib步骤

在OSX或Linux上测试:

# mac or linux: ./build.sh mac cd build/release/x86/build ./mdlTest

使用MDL lib

#android Copy so file to your project. According to the example of writing your code.

#ios The example code is your code.

多线程执行

# After a Net instance in MDL is created, you could set its thread numbers for execution like this. net->set_thread_num(3); # Now MDL is tuned to run in 3 parallel threads.

开发

在android端编译MDL资源

# android: # prerequisite: install ndk from google ./build.sh android cd build/release/armv-v7a/build ./deploy_android.sh adb shell cd /data/local/tmp ./mdlTest

在iOS端编译MDL资源

# ios: # prerequisite: install xcode from apple ./build.sh ios copy ./build/release/ios/build/libmdl-static.a to your iOS project

把caffemodel转换成mdl格式

#Convert model.prototxt and model.caffemodel to model.min.json and data.min.bin that mdl use ./build.sh mac cd ./build/release/x86/tools/build # copy your model.prototxt and model.caffemodel to this path # also need the input data ./caffe2mdl model.prototxt model.caffemodel data # after this command, model.min.json data.min.bin will be created in current # some difference step you need to do if you convert caffe model to iOS GPU format # see this: open iOS/convert/iOSConvertREADME.md

特征

  • 一键部署,可以通过修改参数在iOS和android端之间转换
  • iOS GPU上支持运行 MobileNet和Squeezenet模型
  • 在MobileNet、GoogLeNet v1和Squeezenet模型下都很稳定
  • 占用空间极小(4M),不需要依赖第三方的库
  • 支持从32比特float到8比特unit转化
  • 接下来会与与ARM相关的算法团队进行线上线下沟通,优化ARM平台
  • NEON使用涵盖了所有的卷积、归一化、池化等
  • 利用循环展开,可以让性能更加优化,防止不必要的CPU损失
  • 对于overhead进程,可以转发大量繁重的计算任务

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

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-09-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

NNabla:索尼开源的一款神经网络框架

NNabla是一款用于研究、开发和生产的深度学习框架。NNabla的目标是要能在台式电脑、HPC集群、嵌入式设备和生产服务器上都能运行。 安装 安装NNabla...

1966
来自专栏陈满iOS

[iOS学习笔记]·第三方网络图片处理框架:SDWebImage(官方文档翻译篇)

该库提供了具有缓存支持的异步图像下载器。为方便起见,我们为UI元素例如UIImageView,UIButton,MKAnnotationView等类添加了cat...

1332
来自专栏流媒体人生

视频的容器与格式

   一般而言,视频文件的扩展名就是视频的容器名。比如“avi文件”或者“mp4文件,avi和mp4只是容器格式。好比zip文件,里面可以包含各种文件,视频容器...

913
来自专栏瓜大三哥

读懂用好Timing Report

静态时序分析 静态时序分析(Static Timing Analysis)简称STA,采用穷尽的分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径...

2385
来自专栏SDNLAB

如何像Facebook一样构建数据中心 – BGP在大规模数据中心中的应用(3)

作者简介:史梦晨,曾就职于国内金牌集成商, 现就职于EANTC( 欧洲高级网络测试中心),研究方向:网络架构,测试,运维(大规模数据中心,SD-WAN,EVPN...

851
来自专栏北京马哥教育

qperf测量网络带宽和延迟

我们在做网络服务器的时候,通常会很关心网络的带宽和延迟。因为我们的很多协议都是request-reponse协议,延迟决定了最大的QPS,而带宽决定了最大...

2976
来自专栏跟边禾玩建模

关于使用ZBrush,你可能不知道的10个技巧

作为数字雕刻的行业标准,ZBrush的工具集非常灵活,以至于能够让用户选择最适合他们自己的工作流,人们会因为它的众多可用选项而选择经常使用它,程序里的旧功能也许...

872
来自专栏数据和云

细致入微:Oracle RAC DRM引起性能问题案例一则

熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 客户一套运行在Oracle 10.2.0.5 RAC上的系统,间歇性地出现性能问...

3557
来自专栏吉浦迅科技

如何在Jetson TX2上使用CSI相机(续)

8573
来自专栏FreeBuf

如何通过一张照片来获取ip地址?

今天早上起床之后,我看到一篇关于“使用sql注入语句获取ip地址”的文章,对此我很感兴趣,就仔细阅读了一下,在读完这篇文章之后,我有了一个新的想法:通过对hta...

17410

扫码关注云+社区