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

原创 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 https://blog.csdn.net/jxt1234and2010/article/details/78661965

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

移动端深度学习的几种实现方式
  • zchang81
  • zchang81
  • 2017-07-04 09:43:13
  • 2158

移动端深度学习

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

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

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

深度学习之在iOS上运行CNN

1 引言作为曾经的iOS开发者,在研究深度学习的时候,总有一个想法就是在iPhone上运行深度学习,不管是在手机上训练还是利用训练好的数据进行测试。 因为iOS的开发环境支持C++,因此,只要你的代...
  • songrotek
  • songrotek
  • 2015-07-14 21:34:53
  • 7846

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

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

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

本文授权转自OReillyData 如果你关注我的前一篇帖子,并按照其中的内容实践,你可能已经学会了如何在 Linux 上安装一个 GPU 加速的 TensorFlow,并构建了你自己的图像分类...
  • zhuiqiuk
  • zhuiqiuk
  • 2016-11-12 11:24:29
  • 3844

疯狂的程序员(绝影)

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

疯狂的程序员(绝影著)

  • 2009年06月23日 09:32
  • 1021KB
  • 下载

深度学习(六十五)移动端网络MobileNets

1、L2 decay权重对精度的影响:根据文献介绍,在引入可分离卷积层的时候,建议不用用L2权重,对降低精度,于是做了如下实验:第二行是采用L2 weight decay为0.00005的权重,明显最...
  • hjimce
  • hjimce
  • 2017-06-01 15:04:24
  • 2644

基于OpenGL ES 的深度学习框架编写

基于OpenGL ES的深度学习框架编写背景与工程定位背景项目组基于深度学习实现了视频风格化和人像抠图的功能,但这是在PC/服务端上跑的,现在需要移植到移动端,因此需要一个移动端的深度学习的计算框架。...
  • jxt1234and2010
  • jxt1234and2010
  • 2017-05-06 21:08:22
  • 7792
收藏助手
不良信息举报
您举报文章:移动端深度学习框架——绝影简介
举报原因:
原因补充:

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