开发 | 百度开源移动端深度学习框架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 条评论
登录 后参与评论

相关文章

来自专栏理论坞

【教程】复古电影海报效果设计

2、新建一个图层命名cloud,用吸管工具吸取人像上最暗地方的颜色,选择滤镜—渲染—云彩,如下。

432
来自专栏磐创AI技术团队的专栏

YOLO_Online: 将深度学习最火的目标检测做成在线服务(附项目代码)

1114
来自专栏PHP技术

初学者玩好Linux的建议

我把之前的一些学习经验和方法跟大家分享下,希望对大家有所帮助: 一、玩好Linux一定要经常折腾,说白了,就是动手能力一定要强。 我初学Linux那...

3596
来自专栏逍遥剑客的游戏开发

从Native到Web(五), emscripten学习笔记: 初体验

1313
来自专栏玉树芝兰

如何用云端 GPU 为你的 Python 深度学习加速?

下午,我用 Python 深度学习框架 Keras 训练了一个包含3层神经网络的回归模型,预测波士顿地区房价。

481
来自专栏V站

当你360搜索引擎收录为0与1,被K时应该这么做?

在被360搜索引擎满收录的那些日子,突然有一天,许多站点都被K光(不包含新站),当然月宅酱的博客也不例外,被K了只有www一个首页,也没有拒绝360爬虫,更没有...

1732
来自专栏人工智能LeadAI

OpenCV人脸识别之一:数据收集和预处理

本系列人脸识别文章用的是opencv2,最新版的opencv3.2的代码请参考文章: 《OpenCV之识别自己的脸——C++源码放送》; 《人脸识别源码运行指南...

5115
来自专栏CreateAMind

ROS深入探索(四)——简单的机器人仿真

这本书是关于国外关于ROS出版的第一本书,主要针对Electric和Fuerte版本,使用机器人主要是TurtleBot。书中详细讲解了关于机器人的基...

722
来自专栏java一日一条

Android开发者必知的开发资源

随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2016年刚刚入行的Android开发新兵,恭...

432
来自专栏沈唁志

总结5条对学习Linux系统有帮助的经验心得

1274

扫描关注云+社区