CN108010113B - 一种基于像素着色器的深度学习模型执行方法 - Google Patents
一种基于像素着色器的深度学习模型执行方法 Download PDFInfo
- Publication number
- CN108010113B CN108010113B CN201711162304.8A CN201711162304A CN108010113B CN 108010113 B CN108010113 B CN 108010113B CN 201711162304 A CN201711162304 A CN 201711162304A CN 108010113 B CN108010113 B CN 108010113B
- Authority
- CN
- China
- Prior art keywords
- opengl
- output
- operator
- deep learning
- learning model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Abstract
本发明公开一种一种基于像素着色器的深度学习模型执行方法,包括a、创建Tensor缓冲区;b、加载和运行Operator;C、加载深度学习模型文件;d、逐层执行各个隐藏层等步骤,其中Operator、输入Tensor、输出Tensor分别用于表征通用计算中的算子、张量、结果。本发明利用手机上本来只能用于像素着色的GPU进行通用计算,从而实现手机上GPU加速的深度学习模型执行。
Description
技术领域
本发明涉及图像处理领域,尤其涉及一种基于像素着色器的深度学习模型执行方法。
背景技术
近年来,依托于人工智能技术的进步,图像内容识别与描述,物体识别与跟踪,人脸检测、关键点标注等图像处理难题,都能通过深度学习得到较好的解决,或者在原有的效果上得到提升。但是,深度学习模型的执行,运算量极其巨大,需要依赖高性能的GPU来进行加速,所以,在手机、平板电脑等计算能力有限的设备上,运行深度学习模型是非常困难的。虽然目前市面上的大多数手机都配备了GPU,但由于硬件本身或接口标准的限制,它们通常只能用于图像和游戏场景显示,而不能用于通用计算,也就是只具备像素着色功能。
手机GPU的主要功能是图形渲染,OpenGL ES 2.0是目前移动平台使用最为广泛,兼容性最好的图形渲染接口,无论是Android还是iOS操作系统都提供支持。此外还有OpenGL ES 3.0,以及OpenGL ES 3.1等更高的版本,但是由于硬件本身不支持,或者操作系统版本过低等原因,普及程度都远低于2.0版本。本发明中,以2.0为最低兼容版本,达到兼容市面上几乎所有手机的目的。同时,当设备支持更高版本时自动加载高版本,以利用高版本中的新特性,提升运算效率。
目前利用手机GPU执行深度学习模型的商业化方案中,iOS平台主要是使用Metal技术,Metal除了提供渲染功能,也直接提供了通用计算功能,系统要求iOS 8.0以上,硬件要求A7芯片以上,开源方案则是使用更高一层的Metal封装,比如CoreML,这需要iOS 10以上的系统才支持。对于Android平台,商业化方案中是使用OpenGL ES 3.1的通用计算功能来实现,系统要求Android 5.0以上,硬件环境复杂,仅有不到30%的机型能够支持,且目前未见到可用的开源方案。
发明内容
本发明旨在提供一种基于像素着色器的深度学习模型执行方法,利用手机上本来只能用于像素着色的GPU进行通用计算,从而实现手机上GPU加速的深度学习模型执行。
现代GPU拥有远比CPU强大的并行处理能力,因此,可以用来实现各种数学运算的加速,比如矩阵相乘,离散卷积,快速傅里叶变换等。这些运算也正是执行深度学习模型的基础。
为达到上述目的,本发明是采用以下技术方案实现的:
本发明公开的基于像素着色器的深度学习模型执行方法,包括以下步骤:
a、创建Tensor缓冲区:通过OpenGL ES提供的纹理创建Tensor缓冲区,用于存放输入或输出数据,所述缓冲区的数据类型为float类型和/或fp16类型,所述float类型为32位浮点数,所述fp16类型为16位浮点数,所述Tensor缓冲区包括输入Tensor缓冲区和/或输出Tensor缓冲区;所述Tensor缓冲区包括如下操作:
创建:使用glGenTextures与glTexImage2D接口创建纹理;
写入:使用glTexSubImage2D接口将CPU端的浮点数缓冲区中的内容,上传到所创建的纹理中,按照GL_RGBA的格式进行写入;
读取:创建一个FrameBuffer,然后将待读取的纹理绑定到FrameBuffer,再使用glReadPixels进行读取;
销毁:使用glDeleteTextures删除创建的纹理。
b、加载和运行Operator:使用OpenGL ES Shading Language所提供的渲染Shader,在顶点着色阶段,使用四个顶点,绘制一个充满整个输出区域的矩形,在片元着色阶段,通过当前的纹理坐标计算出当前绘制像素处于所述矩形的行数和列数的坐标信息,再根据坐标信息执行Operator,得到输出Tensor,当输出Tensor为float类型时,按照IEEE754标准,计算出Operator结果浮点数的sign,exponent,fraction部分,然后将其按字节序写入gl_FragColor,得到片元着色器的输出变量gl_FragColor;
当输出Tensor为float类型时,单个输出的长度为32bit,输出的单个像素也为32bit,所以采用的方法为,按照IEEE 754标准,计算出Operator结果浮点数的sign,exponent,fraction部分,然后将其按字节序写入gl_FragColor,通过CPU端得到对应的十六进制输出;当输出Tensor为fp16类型时,在运行片元着色器时,同时计算两次Operator的输出,然后将两个16bit的输出编码到32bit的gl_FragColor中,再通过CPU端读取;
对于输入Tensor,写入时直接将浮点数缓冲区直接上传至纹理,在输入缓冲区类型为float时,rbga四个分量分别为构成float的四个字节,按照IEEE 754标准,计算出sign,exponent,fraction部分,还原出所输入的浮点数值。
C、加载深度学习模型文件:将各个隐藏层训练所得到的参数按照Tensor的方式包装和传递,逐层加载完所有的权重;
d、逐层执行各个隐藏层;
所述Operator、输入Tensor、输出Tensor分别为通用计算中的算子、张量、结果。
进一步的,所述Operator包括卷积Operator,所述卷积Operator使用OpenGL ES的粒子系统提供的绘制点的算法进行分段卷积。
优选的,所述分段卷积的实现方法如下:
选择运算量最小的FFT算法和分块尺寸,对卷积核进行FFT变换;按照同样的分块尺寸对输入数据进行分块,准备对输入数据进行FFT变换;使用OpenGL ES在FrameBuffer上,按照分块方式相同的布局,绘制出与分块尺寸大小相同的点,对每一分块的输入数据与卷积核的频域表示,进行乘积运算,将乘积结果进行IFFT变换。
进一步的,在步骤a之前,初始化EGL环境,在初始化好EGL环境后,查询辅助的OpenGL ES扩展接口在当前设备上是否能得到支持,如果支持,则在后续的流程中使用所述辅助的OpenGL ES扩展接口。
进一步的,在初始化EGL环境后,尝试加载OpenGL ES 3.0,若当前设备支持OpenGLES 3.0,加载OpenGL ES 3.0接口。
进一步的,在步骤a中,当前设备支持OpenGL ES 3.0时,通过PBO进行数据的写入和读取。
优选的,在步骤a中,创建操作中所述纹理尺寸的计算方式为所需要的缓冲区字节数b除以4,得到所需GL_RGBA格式纹理的像素数量p,然后求sqrt(p),向上取整,得到所需纹理宽w和高h。
进一步的,在步骤a中,销毁操作还包括释放FrameBuffer和PBO资源。
本发明的有益效果如下:
1、具有极高的兼容性。解决了只有部分中高端手机才能使用GPU加速神经网络运行的问题,因为本发明所依赖的OpenGL ES 2.0是几乎所有智能手机都支持的接口。此外OpenGL ES 2.0是OpenGL的精简版本,对于支持OpenGL的桌面操作系统,包括(Windows/Linux/macOS)等,也均可通过本发明所述框架,得到GPU加速神经网络的支持。
2、将设备的计算性能最大化。在最差的情况下,本发明所述的深度模型运行框架,也快于同一设备上CPU的执行速度,可用于减小CPU负荷,亦可让CPU与GPU协同工作,发挥出设备最高算力,加快应用运行。
3、与现有图形图像技术的无缝衔接。当下移动平台最流行的美肤,美妆,滤镜,贴纸等功能大多是基于OpenGL ES实现,本发明所述框架也是基于OpenGL ES实现,换言之,神经网络的输出结果可以直接用于现有功能,例如,可以使用本发明所述框架运行一个实时人脸检测和人脸关键点标注模型,也可以运行一个实时的人像分割模型,检测和分割结果就直接存在于GPU当中,后续流程可直接使用,深度学习模型运行的过程也是作为一个渲染步骤存在,可以方便的启用与禁用。
附图说明
图1为初始化EGL及尝试加载OpenGL ES 3.0的流程图;
图2为Tensor的整个生命周期的流程图;
图3为Operator的工作流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。
在本发明中,将通用计算抽象表述为:使用某种Operator(算子)对输入Tensor(张量)进行运算,得到结果Tensor的过程。
例如:1+5=6中,1和5是两个输入Tensor,对这两个Tensor执行+的Operator,会得到输出Tensor:6。
再例如:深度神经网络中的Element-wise Add操作,是将两个Feature map逐元素相加,即有输入TensorA=[1,2,3,4,5],B=[4,2,3,5,1],对A和B执行Element-wise AddOperator,得到结果Tensor:C=[5,4,6,9,6]。
1、基于像素着色器实现通用计算
下面是实现通用计算的整个流程,各种类型的Operator,大体流程是一致的,只是输入Tensor的个数,或者核心计算部分稍有不同。
(1)初始化EGL环境
OpenGL ES的接口需要在EGL Context正确初始化以后才能调用,所以首先要初始化好EGL环境,在EGL Context初始化完成过后,便可以查询一些辅助的OpenGL ES扩展接口,在当前设备上是否能得到支持,如果支持,则会在后续的流程中尝试使用,以提升性能。比如GL_EXT_draw_buffers和GL_OES_texture_float这样的扩展,可以用于高效的Tensor输入与输出。即使当前设备不支持任何的辅助扩展,本发明所述框架,也能以最低的兼容方式正常运行。
(2)尝试加载OpenGL ES 3.0
若当前设备支持OpenGL ES 3.0,则会优先尝试加载OpenGL ES 3.0接口,以利用OpenGL ES 3.0中的新特性,以提升性能。比如OpenGL ES 3.0中的POB功能,可以提高Tensor的读写速度。
以上两步为初始化步骤,整个系统的生命周期中只需要执行一次即可,大体流程如图1所示。
(3)创建输入Tensor
创建Tensor的本质,是分配一块缓冲区,用于存放输入或输出数据,在本发明中,主要使用float与fp16两种类型的缓冲区。在OpenGL ES 2.0中,没有提供malloc,free类似的内存分配与释放接口,这也是使用像素着色器实现通用计算的一大阻碍。OpenGL ES提供了纹理创建与删除接口,本发明中使用这些接口来实现Tensor缓冲区的创建,销毁,写入与读取操作,具体方法如下:
创建:使用glGenTextures与glTexImage2D接口创建尺寸合适的纹理。所需的纹理尺寸的计算方式为所需要的缓冲区字节数b,除以4,得到所需GL_RGBA格式纹理的像素数量p,然后求sqrt(p),向上取整,就得到所需纹理宽w和高h。之所以使用GL_RGBA格式的纹理,正是因像素着色器在没有扩展接口的情况下,只支持GL_RGBA格式的读取和渲染。当前设备如果支持步扩展,此处的计算也需要稍做调整。
写入:使用glTexSubImage2D接口将CPU端的浮点数缓冲区中的内容,上传到所创建的纹理中,无论是float类型还是fp16类型,都直接按照GL_RGBA的格式进行写入。当前设备如果支持PBO功能,则通过PBO进行数据的写入。
读取:创建一个FrameBuffer,然后将待读取的纹理绑定到FrameBuffer,再使用glReadPixels进行读取。当前设备如果支持PBO功能,则通过PBO进行数据的读取
销毁:使用glDeleteTextures来删除创建的纹理,及其它步骤创建的FrameBuffer及PBO等资源也一并释放。
创建输出Tensor的步骤同上,不再赘述。Tensor的整个生命周期流程如图2所示。
(4)加载和运行Operator
Operator的本质形式为,使用OpenGL ES Shading Language所编写的渲染Shader。在顶点着色阶段,使用四个顶点,指定绘制一个充满整个输出区域的矩形。在片元着色阶段,通过当前的纹理坐标即可计算出,当前是在绘制矩形的第几行第几列的像素,根据坐标信息,执行Operator代码,得到最终的输出。此时的输出为浮点数据,片元着色器的输出变量gl_FragColor为vec4类型(即4个float),分别表示当前像素归一化后的rgba值,例如,当gl_FragColor的值为(1.0,0.0,0.0,1.0)时,CPU端或屏幕上呈现的RGBA值为0xFF0000FF,即十进制时的(255,0,0,255)的红色。要想让CPU端能接收到Operator的正确计算结果,需要将gl_FragColor设置为对应的正确输出。
当输出Tensor为float类型时,单个输出的长度为32bit,输出的单个像素也为32bit,所以采用的方法为,按照IEEE 754标准,计算出Operator结果浮点数的sign,exponent,fraction部分,然后将其按字节序写入gl_FragColor,在CPU端即可拿到对应的十六进制输出,也就是直接拿到Operator的浮点数输出结果,即引入一个浮点数编码到gl_FragColor的过程。当输出Tensor为fp16类型时,每次运行片元着色器,可同时计算出两次Operator的输出,然后按类似的方式将两个16bit的输出,编码到32bit的gl_FragColor中,CPU端在读取时,即可直接得到正确的Operator输出的fp16格式的结果。如果当前设备支持直接输出浮点纹理的扩展,就可以跳过浮点数编码的过程,且可以在一次Shader执行过程中,执行四次Operator,运算结果分别直接放入gl_FragColor的rgba分量中,CPU端也直接读取,就能拿到正确结果,这便是使用辅助扩展能提高效率的原因。
对于输入Tensor,写入时是直接将浮点数缓冲区直接上传至纹理(即当做一张GL_RGBA格式的图像),在片元着色器中,可以使用texture2D函数,传入坐标值来读取输入纹理,得到类型为vec4的结果,表示坐标所在像素的rgba颜色值。在输入缓冲区类型为float时,rbga四个分量,分别为构成float的四个字节,同样按照IEEE 754标准,计算出sign,exponent,fraction部分,便可还原出所输入的浮点数值,完成浮点数解码过程。在输入缓冲区类型为fp16时,计算流程完全一致。如果当前设备支持直接输入浮点纹理的扩展,就可以跳过浮点数解码过程,以减少运算量,提升运算效率。Operator的工作流程如图3所示。
至此,已经打通了将CPU端的Tensor上传至GPU,在GPU中正确读取传入的Tensor,运算后,将结果Tensor正确输出到CPU端的整个流程,这个流程对所有Operator都是通用的,不同功能的Operator之间,只在输入解码与输出编码之间的核心计算部分有所区别。
2、基于像素着色器的深度学习模型执行
在具备了使用像素着色器进行通用计算的能力后,还需以下三个步骤,便可实现深度模型的执行。
(1)深度学习模型文件的加载
深度学习的模型文件,本质上是一系列的权重值,即各个隐藏层训练所得到的参数,只需要看做普通的输入数据,按照上述使用Tensor的方法,来包装和传递,便可在运算中使用。逐层加载完所有的权重,整个模型也就加载完成,之后在各层计算时使用便可。
(2)各种Operator的实现
这里只需要按照通用的实现方式,使用OpenGL ES Shading Language来编写运算过程即可,以Element-wise Add为例,本发明中的实现如下:
(3)逐层执行各个隐藏层
所有隐藏层的运算Operator已经实现,参数也已经加载,逐层执行完所有的隐藏层,便可得到最终的预测结果。
至此,使用像素着色器在GPU中运行深度学习模型的流程已经完成。
3、进一步加速深度模型执行
基于上述流程,在实际项目的测试中,即使是不支持任何辅助扩展的低端设备,深度学习模型的执行时间,也快于使用CPU执行时间。为了进一步的发挥出GPU的并行能力,加速模型执行,本发明还使用OpenGL ES所提供的粒子系统结合卷积定理,来加速卷积Operator的执行。
(1)卷积定理
两个离散信号在时域做卷积相当于这两个信号的离散傅里叶变换在频域做相乘:
卷积运算就可以转换为:
y[n]=IFFTPFFTP(f[n])FFTP(g[n]),(P≥M+N-1)
通常将这种卷积运算方式称为快速卷积。
(2)分段计算卷积
为了最大化利用GPU的并行能力,可将f[n]分为多段,每一段和g[n]分别做快速卷积,再将结果合并。
(3)基于OpenGL ES粒子系统的分段卷积
在的通用计算实现方式中,是使用OpenGL ES绘制一个大的矩形,此外,OpenGL ES还提供了绘制点的功能,基于此便可实现分段卷积。实现步骤如下:
选择运算量最小的FFT算法(Radix-16,8等)和分块尺寸,对卷积核进行FFT。通用计算过程与前述一致,不再赘述。
按照同样的分块尺寸对输入数据进行分块,准备对输入数据进行FFT。
使用OpenGL ES在输出尺寸合适的FrameBuffer上,按照分块方式相同的布局,绘制出与分块尺寸大小相同的点。绘制的过程便是对输入数据的FFT,绘制结果就是分块的输入数据的频域表示。
对每一分块的输入数据与卷积核的频域表示,进行乘积运算。
将乘积结果进行IFFT和微调,得到最终卷积结果。
按此方式实现的卷积,在实际的项目中测试,比直接卷积有10-20倍的速度提升。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1.一种基于像素着色器的深度学习模型执行方法,其特征在于,包括以下步骤:
a、创建Tensor缓冲区:通过OpenGL ES提供的纹理创建Tensor缓冲区,用于存放输入或输出数据,所述缓冲区的数据类型为float类型和/或fp16类型,所述float类型为32位浮点数,所述fp16类型为16位浮点数,所述Tensor缓冲区包括输入Tensor缓冲区和/或输出Tensor缓冲区;所述Tensor缓冲区包括如下操作:
创建:使用glGenTextures与glTexImage2D接口创建纹理;
写入:使用glTexSubImage2D接口将CPU端的浮点数缓冲区中的内容,上传到所创建的纹理中,按照GL_RGBA的格式进行写入;
读取:创建一个FrameBuffer,然后将待读取的纹理绑定到FrameBuffer,再使用glReadPixels进行读取;
销毁:使用glDeleteTextures删除创建的纹理;
b、加载和运行Operator:使用OpenGL ES Shading Language所提供的渲染Shader,在顶点着色阶段,使用四个顶点,绘制一个充满整个输出区域的矩形,在片元着色阶段,通过当前的纹理坐标计算出当前绘制像素处于所述矩形的行数和列数的坐标信息,再根据坐标信息执行Operator,得到输出Tensor,当输出Tensor为float类型时,按照IEEE 754标准,计算出Operator结果浮点数的sign,exponent,fraction部分,然后将其按字节序写入gl_FragColor,得到片元着色器的输出变量gl_FragColor;
当输出Tensor为float类型时,单个输出的长度为32bit,输出的单个像素也为32bit,所以采用的方法为,按照IEEE 754标准,计算出Operator结果浮点数的sign,exponent,fraction部分,然后将其按字节序写入gl_FragColor,通过CPU端得到对应的十六进制输出;当输出Tensor为fp16类型时,在运行片元着色器时,同时计算两次Operator的输出,然后将两个16bit的输出编码到32bit的gl_FragColor中,再通过CPU端读取;
对于输入Tensor,写入时直接将浮点数缓冲区直接上传至纹理,在输入缓冲区类型为float时,rbga四个分量分别为构成float的四个字节,按照IEEE 754标准,计算出sign,exponent,fraction部分,还原出所输入的浮点数值;
C、加载深度学习模型文件:将各个隐藏层训练所得到的参数按照Tensor的方式包装和传递,逐层加载完所有的权重;
d、逐层执行各个隐藏层;
所述Operator、输入Tensor、输出Tensor分别为通用计算中的算子、张量、结果。
2.根据权利要求1所述的基于像素着色器的深度学习模型执行方法,其特征在于,所述Operator包括卷积Operator,所述卷积Operator使用OpenGL ES的粒子系统提供的绘制点的算法进行分段卷积。
3.根据权利要求2所述的基于像素着色器的深度学习模型执行方法,其特征在于,所述分段卷积的实现方法如下:
选择运算量最小的FFT算法和分块尺寸,对卷积核进行FFT变换;按照同样的分块尺寸对输入数据进行分块,准备对输入数据进行FFT变换;使用OpenGL ES在FrameBuffer上,按照分块方式相同的布局,绘制出与分块尺寸大小相同的点,对每一分块的输入数据与卷积核的频域表示,进行乘积运算,将乘积结果进行IFFT变换。
4.根据权利要求1、2或3所述的基于像素着色器的深度学习模型执行方法,其特征在于:在步骤a之前,初始化EGL环境,在初始化好EGL环境后,查询辅助的OpenGL ES扩展接口在当前设备上是否能得到支持,如果支持,则在后续的流程中使用所述辅助的OpenGL ES扩展接口。
5.根据权利要求4所述的基于像素着色器的深度学习模型执行方法,其特征在于:在初始化EGL环境后,尝试加载OpenGL ES 3.0,若当前设备支持OpenGL ES 3.0,加载OpenGL ES3.0接口。
6.根据权利要求5所述的基于像素着色器的深度学习模型执行方法,其特征在于,在步骤a中,当前设备支持OpenGL ES 3.0时,通过PBO进行数据的写入和读取。
7.根据权利要求1所述的基于像素着色器的深度学习模型执行方法,其特征在于,在步骤a中,创建操作中所述纹理尺寸的计算方式为所需要的缓冲区字节数b除以4,得到所需GL_RGBA格式纹理的像素数量p,然后求sqrt(p),向上取整,得到所需纹理宽w和高h。
8.根据权利要求6所述的基于像素着色器的深度学习模型执行方法,其特征在于,在步骤a中,销毁操作还包括释放FrameBuffer和PBO资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711162304.8A CN108010113B (zh) | 2017-11-21 | 2017-11-21 | 一种基于像素着色器的深度学习模型执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711162304.8A CN108010113B (zh) | 2017-11-21 | 2017-11-21 | 一种基于像素着色器的深度学习模型执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108010113A CN108010113A (zh) | 2018-05-08 |
CN108010113B true CN108010113B (zh) | 2021-07-27 |
Family
ID=62053005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711162304.8A Active CN108010113B (zh) | 2017-11-21 | 2017-11-21 | 一种基于像素着色器的深度学习模型执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108010113B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408028B (zh) * | 2018-09-21 | 2021-03-05 | 东软集团股份有限公司 | 浮点数运算方法、装置及存储介质 |
CN109410141B (zh) * | 2018-10-26 | 2021-03-02 | 北京金山云网络技术有限公司 | 一种图像处理方法、装置、电子设备及存储介质 |
US11481865B2 (en) | 2021-02-11 | 2022-10-25 | Qualcomm Incorporated | Methods and apparatus for tensor object support in machine learning workloads |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102654914A (zh) * | 2011-03-04 | 2012-09-05 | 富士通株式会社 | 使用图形处理单元加速图像去雾的方法 |
CN104036534A (zh) * | 2014-06-27 | 2014-09-10 | 成都品果科技有限公司 | 一种基于wp8平台的相机实时特效渲染方法 |
KR20160068204A (ko) * | 2014-12-05 | 2016-06-15 | 삼성전기주식회사 | 메시 지오메트리를 위한 데이터 처리 방법 및 이를 기록한 컴퓨터 판독 가능 저장 매체 |
CN105979244A (zh) * | 2016-05-31 | 2016-09-28 | 十二维度(北京)科技有限公司 | 一种基于深度学习的2d图像转3d图像的方法及系统 |
CN106598739A (zh) * | 2016-12-14 | 2017-04-26 | 合网络技术(北京)有限公司 | 视频渲染方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
CN103971396B (zh) * | 2014-05-24 | 2017-02-15 | 哈尔滨工业大学 | ARM+GPU异构架构下的光线投射算法的OpenGL ES实现方法 |
CN107093207B (zh) * | 2017-04-12 | 2019-07-09 | 武汉大学 | 一种基于gpgpu的天然气泄漏扩散的动态可视化方法 |
CN107341761A (zh) * | 2017-07-12 | 2017-11-10 | 成都品果科技有限公司 | 一种深度神经网络的计算执行方法和系统 |
-
2017
- 2017-11-21 CN CN201711162304.8A patent/CN108010113B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102654914A (zh) * | 2011-03-04 | 2012-09-05 | 富士通株式会社 | 使用图形处理单元加速图像去雾的方法 |
CN104036534A (zh) * | 2014-06-27 | 2014-09-10 | 成都品果科技有限公司 | 一种基于wp8平台的相机实时特效渲染方法 |
KR20160068204A (ko) * | 2014-12-05 | 2016-06-15 | 삼성전기주식회사 | 메시 지오메트리를 위한 데이터 처리 방법 및 이를 기록한 컴퓨터 판독 가능 저장 매체 |
CN105979244A (zh) * | 2016-05-31 | 2016-09-28 | 十二维度(北京)科技有限公司 | 一种基于深度学习的2d图像转3d图像的方法及系统 |
CN106598739A (zh) * | 2016-12-14 | 2017-04-26 | 合网络技术(北京)有限公司 | 视频渲染方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于GPU加速的并行粒子群算法及其应用;万单领;《中国优秀硕士学位论文全文数据库 信息科技辑》;20080515(第5期);I138-10 * |
Also Published As
Publication number | Publication date |
---|---|
CN108010113A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11232534B2 (en) | Scheme for compressing vertex shader output parameters | |
US7619630B2 (en) | Preshaders: optimization of GPU pro | |
US20140098117A1 (en) | Multi-primitive graphics rendering pipeline | |
CN109087384B (zh) | 光线跟踪系统和方法以及光线压缩方法和模块 | |
CN108010113B (zh) | 一种基于像素着色器的深度学习模型执行方法 | |
KR20180056316A (ko) | 타일-기반 렌더링을 수행하는 방법 및 장치 | |
US8907979B2 (en) | Fast rendering of knockout groups using a depth buffer of a graphics processing unit | |
US10600142B2 (en) | Compression and decompression of indices in a graphics pipeline | |
US11763514B1 (en) | Hard ware-assisted emulation of graphics pipeline | |
US10089964B2 (en) | Graphics processor logic for encoding increasing or decreasing values | |
US20210358174A1 (en) | Method and apparatus of data compression | |
WO2017172032A1 (en) | System and method of caching for pixel synchronization-based graphics techniques | |
US20210398325A1 (en) | Delta triplet index compression | |
GB2552136A (en) | Accessing encoded blocks of data in memory | |
US9563930B2 (en) | Techniques for clearing a shared surface | |
WO2021120577A1 (zh) | 神经网络模型中的数据计算方法、图像处理方法及装置 | |
US7268788B2 (en) | Associative processing for three-dimensional graphics | |
US20230377086A1 (en) | Pipeline delay elimination with parallel two level primitive batch binning | |
US20240087078A1 (en) | Two-level primitive batch binning with hardware state compression | |
CN115880127A (zh) | 一种渲染格式选择方法及其相关设备 | |
Ohmer | Computer vision applications on graphics processing units |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |