移动端深度学习框架——绝影简介

原创 2017年11月30日 13:52:37

绝影(Prestissimo)

绝影是九言科技开发的高性能移动端深度学习框架,其项目地址见

https://github.com/in66-dev/In-Prestissimo

背景

绝影前身是一个GPU方案:http://blog.csdn.net/jxt1234and2010/article/details/71056736

为了最好的兼容性,我们把引擎模块(各个Layer的运算逻辑)用 cpu 重写,并做汇编级优化,经过3个多月的开发后,绝影性能超过了当时所有的开源框架(caffe、tensorflow等等),人像分割的性能也达标了,于是商用上线。

后面绝影进一步优化以及扩展功能,这段时间, ncnn、 mdl 先后开源,作为过来人,我们深知中小企业缺乏移动端框架的痛苦,因此我们将绝影开放,以期推动AI行业共同进步。

特性说明

性能

绝影分float和int两个计算分支,int性能高,但会牺牲一定精度。大部分网络用int的精度便已经足够,对于少数复杂的网络int的计算会有误差,可以用float分支作对比。

项目文档中有性能测试的对比报告,绝影的int计算分支单线程的性能就快于所有开源框架的多线程版本。

具体使用的优化技巧不外乎 浮点转定点、除转乘、指令重排、neon、unroll、winograd 等等,难点不在于优化技巧,而在于每一步都下苦功夫去实现。

支持网络

详细的支持情况参看项目文档,简单来说,是支持人像分割(Resnet)、人脸检测(mtcnn)、目标检测(faster-rcnn)这几个网络。

另外,为了开发者调试方便,所有网络中间结果都会保留着,这会使得绝影占用的系统内存稍大。

API使用

API的使用重点看 android demo 的 jni 部分,先建factory,然后由模型和factory建net,每次运算时先填inputImage,运行完成后由outputImage取数据。

之所以将factory和net分开,以及用 vUpload 和 vDownload 上传下载数据,是为了支持异构计算(CPU、GPU版本可共用一套框架)。

InAPI

由于去除了专作接口层和基本图像处理优化的 fastcv 支持,绝影的入和出(Bitmap->buffer 和 buffer->Bitmap)可能会产生额外性能损耗。如果超出了预期请自行用neon解决。

框架对比

已经开源的框架的性能测试对比附在项目文档中。绝影和ncnn、mdl等等的性能并不在一个层级上,没什么好对比的。可以对比的是一些不开放的商用框架。

商汤的 PPL

作为中国著名的AI创业公司,商汤的ppl一直是他们的核心竞争力之一。

参考这里面高洋的回答
https://www.zhihu.com/question/62871439
Cortex-A57单核2.1GHz
PPL 单线程 跑 SqueezeNet v1.1 68ms

没有同类机器对比,也不确定他们是64位还是32位的版本,参考绝影在 Mate 8 (2.3GHz)上的速度57ms,大致持平。

支付宝的xNN

http://geek.csdn.net/news/detail/238369

“xNN在Qualcomm 820 CPU上能够输出29.4 FPS的前向预测帧率,在苹果A10 CPU (iPhone 7)上的帧率则达到52.6 FPS”。

按这个数据,iphone7上面的SqueezenetV1.1的耗时为 19ms,跟绝影多线程版差不大多。

模型支持度、以及模型压缩方面比绝影做得好(单看它的宣传来说),这方面的技术我们还在开发中。

鸣谢

感谢老大冬冬的支持,兄弟团队的小伙伴也十分给力,列一下花名,排名不分先后:乐涤、汤圆、咖啡、可召、晨晨。

版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/jxt1234and2010

支持移动端深度学习的几种开源框架

移动端深度学习的几种实现方式
  • zchang81
  • zchang81
  • 2017年07月04日 09:43
  • 1710

移动端深度学习

一.移动端深度学习的几种实现方式 (1)Caffe的移动端编译项目 caffe(命令式框架)算是在国内最流行的深度学习开源框架,使用它进行商业,研究的人很多。对于移动端的实现,也有开源项目...
  • liyiafeia
  • liyiafeia
  • 2016年11月29日 20:33
  • 3243

让深度学习进入移动端:在安卓上运行 TensorFlow

如果你关注我的前一篇帖子,并按照其中的内容实践,你可能已经学会了如何在Linux上安装一个GPU加速的TensorFlow,并构建了你自己的图像分类器。老实讲,在笔记本上对图片进行分类是很花时间的:需...
  • x32sky
  • x32sky
  • 2016年11月12日 16:56
  • 2486

百度开源移动端深度学习框架mobile-deep-learning

2017 年 9 月 25 日,百度在 GitHub 开源了移动端深度学习框架 mobile-deep-learning(MDL)的全部代码以及脚本,希望这个项目在社区的带动下能够更好地发展。 ...
  • qq_36852006
  • qq_36852006
  • 2017年09月26日 13:07
  • 1183

疯狂的程序员--绝影

该博客转自新浪博客,作者:疯狂之桥 网址: http://blog.sina.cn/dpool/blog/s/blog_a46817ff010157cf.html?vt=4 今天看到绝影的CSDN博...
  • qq_26707177
  • qq_26707177
  • 2016年04月09日 11:28
  • 4853

疯狂的程序员(绝影)

这是CSDN上连载的小说!很有趣,刚开始学习计算机的那段历史,读起来是那样的熟悉.................... 我也是从那种激动的过程中走过来的,发现有激情来能做成事情,这是最伟大的动力 读...
  • yazhouren
  • yazhouren
  • 2013年11月12日 09:01
  • 1340

Jpeg 库的解码OpenCL优化

libJpeg库解码OpenCL优化这两周在闲暇时基于通用的libjpeg库重新做了一个opencl解码实现。重新熟悉下算法。代码路径https://github.com/jxt1234/platfo...
  • jxt1234and2010
  • jxt1234and2010
  • 2015年04月22日 20:41
  • 2396

2017年深度学习框架之争——看谁主沉浮?

原文链接:点击打开链接 摘要: 本文总结并分析了2017年的相关深度学习框架之间的竞争,包含一些主流的框架比如TensorFlow、PyTorch等,以及一些相关的应用程序接口,比如Kera...
  • qq_40954115
  • qq_40954115
  • 2017年12月27日 15:34
  • 148

主流深度学习框架对比

深度学习研究的热潮持续高涨,各种开源深度学习框架也层出不穷,其中包括TensorFlow、Caffe、Keras、CNTK、Torch7、MXNet、Leaf、Theano、DeepLearning4...
  • u012017783
  • u012017783
  • 2017年02月20日 20:20
  • 11744

GitHub新项目Deepo:一键安装11项深度学习框架与环境

最近,一项关注于快速构建深度学习环境的 GitHub 项目十分流行,这个名为 Deepo 的项目由一系列 Docker 镜像组成,包含了 TensorFlow、MXNet、Caffe 和 Torch ...
  • Uwr44UOuQcNsUQb60zk2
  • Uwr44UOuQcNsUQb60zk2
  • 2017年12月20日 06:43
  • 587
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:移动端深度学习框架——绝影简介
举报原因:
原因补充:

(最多只允许输入30个字)