本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:【j2开奖】基于OpenGL ES的深度学习框架编写(2)

时间:2017-05-10 02:49来源:本港台现场报码 作者:118开奖 点击:
local size 一般而言越大越好,但 computer shader 所需要的寄存器越多,local size 的最大值就越小,考虑到最耗时的卷积shader所能使用的local size 一般也就 64,保

  local size 一般而言越大越好,但 computer shader 所需要的寄存器越多,local size 的最大值就越小,考虑到最耗时的卷积shader所能使用的local size 一般也就 64,保守起见都定为64(8乘8)。

  不能对齐的情况在shader中处理,比如下面的代

  

报码:【j2开奖】基于OpenGL ES的深度学习框架编写

  3. 适当地合并/去除layer

  如正则层可以直接和上一层合并(末尾加个max处理就行),dropout层可以直接丢弃。

  合并可以提升性能(不过不会太多),但最重要的是减少了中间内存。

  框架设计

  分为两个子模块,引擎模块在客户端上运行,工具模块用来转换caffe的模型文件。

  

报码:【j2开奖】基于OpenGL ES的深度学习框架编写

  引擎模块

  1. 数据层

  Image 为一个RGBA32F格式的2D Array纹理,SSBO为一种vbo,

  全称为GL_SHADER_STORAGE_BUFFER,用于存储自定义类型的数据(主要就是卷积层和内积层的参数)。

  Program 为 着色器链接而成的 opengl program,NetInfo 由 proto 定义,用于规定网络结构。

  在 shader 中,image 和 SSBO 示例如下:

  

  2. 算子层

  包括各类layer的实现,如卷积、正则、内积(全连接)、Softmax等。 每一个layer要负责申请自己的输出内存(image)。

  3. 结构层

  根据 NetInfo 的信息,创建各类算子并构成DAG(有向无环图),执行运算并输出结果。

  下图是lenet的dag示例:

  

报码:【j2开奖】基于OpenGL ES的深度学习框架编写

  工具模块

  一个结构转换器、参数初始化和拷贝工具。拷贝工具是比较容易出错的,因为卷积层和内积层的参数需要补零对齐及重排。

  性能与效果

  跟开源的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 更是好很多了。

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

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容