作家
登录

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

作者: 来源: 2017-07-07 08:50:09 阅读 我要评论

两个子模块

引擎模块

1、数据层 
Image 为一个RGBA32F格局的2D Array纹理,SSBO为一种vbo, 
Program 为 着色器链接而成的 opengl program,NetInfo 由 proto 定义,用于规定收集构造。 
在 shader 中,image 和 SSBO 示例如下:

layout(rgba32f, binding = 0) writeonly uniform highp image2DArray uOutput;//Imagelayout(rgba32f, binding = 1) readonly uniform highp image2DArray uInput;//Imagelayout(binding = 2) readonly buffer kernel {    mat4 values[];} uKernel;//SSBO
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

2、算子层 
包含各类layer的实现,如卷积,正则,内积(全连接),Softmax等。 
每一个layer要负责申请本身的输出内存(image)。

3、构造层 
根据 NetInfo 的信息,创建各类算子并构成DAG(有向无环图),执交运算并输出结不雅。

lenet的dag示例

对象模块

包含一个构造转换器、参数初始化和拷贝对象。拷贝对象是比较轻易掉足的,因为卷积层和内积层的参数须要补零对齐及重排。

机能与效不雅


跟开源的 caffe-android-lib 比较 
https://github.com/sh1r0/caffe-android-lib

库大年夜小

caffe-android-lib 11M 
DeeplearningOGL 440K 
全自立开辟的,毫无疑问要小很多很多。

运行效力

Oppo R9 (MT6755, GPU: Mali-T860)上的测试结不雅: 
持续运行十次,去除第一次的结不雅(移动设备上一般都是动态调频的,第一次跑的时刻CPU/GPU的频率还没调起来,会比较慢)。 
Lenet 收集: 
caffe-android-lib:5.0~5.2ms(线程设为4) 
DeeplearningOGL:3.6-3.8 ms

较CPU版本(包含了neon与多线程优化)晋升了 50%阁下的效力,已经大年夜大年夜超出预期了,在GPU更好的机械上(如mate8上)表示会更佳。 
比拟于 CNNdroid 更是好很多了。

及时抠人像case

人像抠图的场景很流畅,且不须要隔帧计算。

【编辑推荐】

  1. 为什么 Linus Torvalds 偏爱x86而不是ARM架构
  2. 数据平滔喔赡计算才能:哪些GPU更合适深度进修和数据库?
  3. ARKit & OpenGL ES - ARKit 道理及实现
  4. 微办事架构:基于微办事和Docker容器技巧的PaaS云平台架构设计(微办事架构实施道理)
  5. 谈一下关于CQRS架构若何实现高机能
【义务编辑:张子龙 TEL:(010)68476606】

  推荐阅读

  DDD CQRS架构和传统架构的优缺点比较

比来几年,在DDD的范畴,我们经常会看到CQRS架构的概念。我小我也写了一个ENode框架,专门用来实现这个架构。CQRS架构本身的思惟其实异常简单,就是读写分别。是一个很好懂得的思惟。就像>>>详细阅读


本文标题:基于OpenGL ES 的深度学习框架编写

地址:http://www.17bianji.com/lsqh/36068.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)