CN110163790A - 图像处理方法、装置、系统、存储介质和计算机设备 - Google Patents
图像处理方法、装置、系统、存储介质和计算机设备 Download PDFInfo
- Publication number
- CN110163790A CN110163790A CN201810593519.3A CN201810593519A CN110163790A CN 110163790 A CN110163790 A CN 110163790A CN 201810593519 A CN201810593519 A CN 201810593519A CN 110163790 A CN110163790 A CN 110163790A
- Authority
- CN
- China
- Prior art keywords
- image
- data type
- cache area
- shared cache
- processed
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 277
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000008569 process Effects 0.000 claims abstract description 31
- 238000003062 neural network model Methods 0.000 claims description 58
- 238000005070 sampling Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 8
- 239000013589 supplement Substances 0.000 claims description 7
- 230000001502 supplementing effect Effects 0.000 claims description 6
- 238000013528 artificial neural network Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 18
- 230000008859 change Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 5
- 239000002184 metal Substances 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 210000005036 nerve Anatomy 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 210000002478 hand joint Anatomy 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000004218 nerve net Anatomy 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明涉及一种图像处理方法、装置、系统、存储介质和计算机设备,该方法应用于中央处理器,包括:将第一数据类型的待处理图像写入共享缓存区;所述共享缓存区由中央处理器与图像处理器共享;向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。本申请提供的方案提高了图像处理效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种图像处理方法、装置、系统、存储介质和计算机设备。
背景技术
随着计算机技术的发展和图像处理技术的进步,基于图像的处理方式变得越来越多样。目前常用的图像处理技术如图像的特征转化处理,比如图像颜色特征转化、图像光影特征转化或者图像风格特征转化等。
正是由于图像所包括的信息量越来越大、且图像的数据量也越来越大,在这样在通过传统的图像处理方式直接对图像进行处理时耗时会越来越多,从而导致图像处理的效率变低。
发明内容
基于此,有必要针对目前图像处理效率比较低的问题,提供一种图像处理方法、装置、系统、存储介质和计算机设备。
一种图像处理方法,应用于中央处理器,包括:
将第一数据类型的待处理图像写入共享缓存区;所述共享缓存区由中央处理器与图像处理器共享;
向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;
当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
一种图像处理装置,应用于中央处理器,包括:
写入模块,用于将第一数据类型的待处理图像写入共享缓存区;所述共享缓存区由中央处理器与图像处理器共享;
处理模块,用于向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;
读取模块,用于当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
一种图像处理系统,包括中央处理器和图像处理器,其中:
所述中央处理器用于将第一数据类型的待处理图像写入共享缓存区;向图像处理器发送图像处理指令;所述共享缓存区由中央处理器与图像处理器共享;
所述图像处理器用于从共享缓存区读取待处理图像;将待处理图像由第一数据类型转为第二数据类型后进行图像处理;将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区;所述第一数据类型的精度大于所述第二数据类型的精度;
所述中央处理器还用于在接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被中央处理器执行时,使得所述中央处理器执行以下步骤:
将第一数据类型的待处理图像写入共享缓存区;所述共享缓存区由中央处理器与图像处理器共享;
向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;
当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
一种计算机设备,包括存储器和处理器,所述存储器中储存有计算机程序,所述计算机程序被所述中央处理器执行时,使得所述中央处理器执行以下步骤:
将第一数据类型的待处理图像写入共享缓存区;所述共享缓存区由中央处理器与图像处理器共享;
向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;
当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
上述图像处理方法、装置、系统、存储介质和计算机设备,中央处理器在将第一数据类型的待处理图像写入共享缓存区后,向图像处理器发送图像处理指令,由于共享缓存区由中央处理器与图像处理器共享,那么图像处理器便可从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理,再将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区,这样中央处理器在接收到图像处理结果获取指令后便可从共享缓存区中读取第一数据类型的目标图像,也就是图像处理结果。由于第一数据类型的精度大于第二数据类型的精度,这样在第二数据类型的精度满足图像处理需求时,即可通过减小数据量极大地提高图像处理效率,而且图像处理过程由图像处理器,大幅度降低了中央处理器的占用。
附图说明
图1为一个实施例中图像处理方法的流程示意图;
图2为一个实施例中图像处理前后的对比图;
图3为另一个实施例中图像处理前后的对比图;
图4为一个实施例中待处理图像的多个特征图的示意图;
图5为一个实施例中待处理图像的纹理图的示意图;
图6为一个实施例中逐个存储特征图与存储纹理图的对比示意图;
图7为一个实施例中SDK的架构图;
图8为一个实施例中CPU与GPU的交互示意图;
图9为一个实施例中图像处理装置的模块结构图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中图像处理方法的流程示意图。本实施例主要以该图像处理方法应用于计算机设备来举例说明,该计算机设备可以是终端也可以是服务器。参照图1,该方法具体包括如下步骤:
S102,将第一数据类型的待处理图像写入共享缓存区;共享缓存区由中央处理器与图像处理器共享。
其中,数据类型是数据的格式所属的类型。比如长整型、短整型、单精度浮点型或者双精度浮点型等。第一数据类型是数据类型中的一种,与后文中提到的第二数据类型是不同的数据类型。第一数据类型的待处理图像,表示待处理图像中各像素点的像素值为第一数据类型。
待处理图像是待进行处理的图像。比如,待进行手势识别的图像、待进行图像颜色特征转化的图像、待进行图像光影特征转化的图像或者待进行图像风格特征转化的图像等。待处理图像可以是计算机设备通过内置的或外部连接的摄像头采集的图像,也可以是其他计算机设备传递给本机的图像。
共享缓存区是计算机设备的数据存储空间,由中央处理器与图像处理器共享,也就是说中央处理器与图像处理器均可从共享缓存区写入和读取数据。中央处理器(CPU,Central Processing Unit)是计算机设备的运算核心和控制核心。图像处理器(CPU,Graphics Processing Unit)是计算机设备进行图像运算工作的微处理器。
具体地,计算机设备可通过中央处理器,将第一数据类型的待处理图像写入共享缓存区。
在一个具体的实施例中,计算机设备为终端,终端上安装有图像处理应用。终端可根据用户指令启动图像处理应用,终端的中央处理器即创建对应于该图像处理应用的进程,该进程运行于中央处理器中,可调用中央处理器的资源。
中央处理器调用终端的摄像头采集图像,将采集的图像作为代理处图像存储在中央处理器的数据存储区,再将该待处理图像写入共享缓存区。也就是说,图像处理应用的进程(或属于该进程的线程)调用终端的摄像头采集图像,将采集的图像作为代理处图像存储在中央处理器的数据存储区,再将该待处理图像写入共享缓存区。这里不限制线程的数量,也就是说执行采集、存储与写入的线程可以是同一线程,也可以是不同的线程。
S104,向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度。
其中,图像处理指令是用于触发图像处理操作的计算机可读指令。将待处理图像由第一数据类型转为第二数据类型,表示将待处理图像中各像素点的像素值由第一数据类型转化为第二数据类型。图像处理指令可包括待处理图像的存储地址、图像处理参数以及图像处理结果的存储地址等。图像处理指令可以是一个计算机指令,统一指定了这些操作和数据;也可以是一系列计算机指令,分别指定了各操作和各数据。
具体地,计算机设备在通过中央处理器将第一数据类型的待处理图像写入共享缓存区后,可向图像处理器发送图像处理指令。图像处理器即根据图像处理指令中待处理图像的存储地址从共享缓存区读取待处理图像,将待处理图像由第一数据类型转为第二数据类型后进行图像处理;然后根据图像处理指令中图像处理参数对第二数据类型的待处理图像进行处理,得到图像处理结果,也就是目标图像;再根据图像处理结果的存储地址存储目标图像。这样计算机设备便不再通过中央处理器对待处理图像进行处理,而通过中央处理器控制图像处理器对待处理图像进行图像处理,大幅度降低了中央处理器的占用。既避免了图像处理过多占用中央处理器,导致计算机设备其他进程或线程效率下降,比如界面响应卡顿等;又避免了中央处理器占用过多而导致的中央处理器过热,影响用户体验。
在一个实施例中,第二数据类型是中央处理器不适配的数据类型,且第二数据类型满足图像处理的精度需求。这样,中央处理器可以在保证精度需求在满足时,处理第二数据类型的待处理图像以减少运算数据量,减少运算耗时。由于中央处理器自身无法对第二数据类型的待处理图像进行处理,则控制图像处理器来将待处理图像由第一数据类型转为第二数据类型后进行图像处理。
在一个具体的实施例中,第一数据类型为32位浮点型;第二数据类型为16位浮点型。可以理解,基于目前的计算机技术,中央处理器可运算的最低位数的浮点型数据为32位浮点型数据,而图像处理器则可运算16位浮点型数据。通常情况下,基于16位浮点型的图像数据能够满足图像处理中的精度要求。那么,中央处理器则可控制图像处理器将32位浮点型的图像数据转化为16为浮点型的图像数据后进行处理,通过减少数据量来提高数据处理效率。
S106,当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
其中,图像处理结果获取指令,是用于触发图像处理结果获取操作的计算机可读指令。图像处理结果获取指令可以定时触发,比如在采集到图像20毫秒后触发;也可以通过预设操作触发,比如用户执行图像处理结果获取操作时触发;还可以是发生特定的事件时触发,比如采集到的图像包括手势时触发。
可以理解,图像处理器在对第二数据类型的待处理图像进行处理时,不会改变数据类型,那么得到的目标图像的数据类型也为第二数据类型。
具体地,计算机设备通过中央处理器控制图像处理器对第二数据类型的待处理图像进行处理,得到第二数据类型的目标图像后,继续将目标图像由第二数据类型转化为第一数据类型,再将第一数据类型的目标图像写入共享缓存区中。这样,计算机设备在接收到图像处理结果获取指令后,即可通过中央处理器从共享缓存区中读取第一数据类型的目标图像,以进行后续操作。
上述图像处理方法,中央处理器在将第一数据类型的待处理图像写入共享缓存区后,向图像处理器发送图像处理指令,由于共享缓存区由中央处理器与图像处理器共享,那么图像处理器便可从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理,再将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区,这样中央处理器在接收到图像处理结果获取指令后便可从共享缓存区中读取第一数据类型的目标图像,也就是图像处理结果。由于第一数据类型的精度大于第二数据类型的精度,这样在第二数据类型的精度满足图像处理需求时,即可通过减小数据量极大地提高图像处理效率,而且图像处理过程由图像处理器,大幅度降低了中央处理器的占用。
在一个实施例中,该图像处理方法还包括:加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对第二数据类型的待处理图像进行图像处理。
其中,神经网络模型是由多层网络层互相连接而形成的复杂网络模型。神经网络模型可包括多层特征转换层,每层特征转换层都有对应的非线性变化算子,每层的非线性变化算子可以是一个或多个,每层特征转换层中一个非线性变化算子对输入的图像进行非线性变化,得到特征图(Feature Map)作为运算结果。每个特征转换层接收前一层的运算结果,经过自身的运算,对下一层输出本层的运算结果。神经网络模型具体可以是卷积神经网络(CNN,Convolutional Neural Network)。
模型文件包括神经网络模型中各网络层的层参数,以及各网络层之间的连接关系。各网络层的层参数可以包括计算逻辑(如卷积运算或者池化运算等)和模型参数(如卷积核大小或者采样大小等)。计算机设备可事先训练(或通过模型训练平台训练)用于进行图像处理的神经网络模型,得到训练完成的神经网络模型的模型文件。可以理解,不同的图像处理对应不同的神经网络模型,比如,进行手势识别的神经网络模型与进行图像颜色特征转化的神经网络模型,是不同的模型,这两个模型可以包括相同的网络层,以及拥有相同的层连接关系,但层参数则不同。这样,计算机设备在判定需要进行的图像处理的种类后,即可加载用于该种类的图像处理的神经网络模型的模型文件。这里的图像处理的种类,比如手势识别、图像颜色特征变化或者图像风格特征变化等。
具体地,计算机设备可通过中央处理器确定当前需要进行的图像处理的种类,加载该种类的神经网络模型的模型文件,继而解析该模型文件,得到神经网络模型各网络层的层参数和连接关系,从而将该层参数和连接关系写入共享缓存区,再向图像处理器发送图像处理指令。该图像处理指令还包括神经网络模型各网络层的层参数和连接关系的存储地址。
进一步度地,计算机设备的图像处理器则可在接收到图像处理指令后,从共享缓存区中读取神经网络模型各网络层的层参数和连接关系,按照神经网络模型中各网络层的连接关系,以利用各网络层的层参数对第二数据类型的待处理图像进行图像处理。这样计算机设备即通过中央处理器控制图像处理器实现了利用神经网络模型的各网络层逐层对待处理图像进行图像处理得到目标图像。
可以理解,通常在利用神经网络模型对图像进行处理时前馈计算的运算量较大,尤其是在模型复杂程度高,模型参数多的情况下尤为明显。在本实施例中,巧妙地通过中央处理器来控制图像处理器利用神经网络模型对待处理图像进行图像处理,而且图像处理器在处理前先将待处理图像由第一数据类型转为精度较小的第二数据类型后进行图像处理,减少运算量,进而减少运算耗时,从而提高了图像处理效率。这里的前馈计算就是利用神经网络模型对图像进行计算的过程。
举例说明,图2示出了一个实施例中图像处理前后的对比图。在本实施例中,神经网络模型是用于进行手部关节识别的卷积神经网络模型。参考图2(a)所示是终端通过摄像头采集的原始图像。终端的中央处理器将该图像以第一数据类型写入共享缓存区后,终端的图像处理器即根据中央处理器的指令,将待处理图像由第一数据类型转为第二数据类型后进行图像处理,得到目标图像;再将目标图像以第一数据类型写入共享缓存区,供中央处理器读取使用。参考图2(b)所示是图像处理得到的目标图像,可以看到目标图像中标识出了识别出的手部关节。在实际应用中,采用本发明的图像处理方法后,单帧图像计算耗时从107ms下降到了35.8ms。同时CPU占用也下降了30%。
举例说明,图3示出了一个实施例中图像处理前后的对比图。在本实施例中,神经网络模型是用于进行图像风格转换的卷积神经网络模型。如图3(a)所示是终端通过摄像头采集的原始图像。终端的中央处理器将该图像以第一数据类型写入共享缓存区后,终端的图像处理器即根据中央处理器的指令,将待处理图像由第一数据类型转为第二数据类型后进行图像处理,得到目标图像;再将目标图像以第一数据类型写入共享缓存区,供中央处理器读取使用。参考图3(b)所示是图像处理得到的目标图像,明显可以看到目标图像的图像风格较原始图像发生了变化。
可以理解,待处理图像在未进行图像处理时,可对应第一数量的特征图。比如,RGBA四个特征图。图像处理器在将待处理图像的第一数量的特征图转化为纹理图后,每通过神经网络模型的一层网络层对该纹理图像处理后,特征图的数量可以发生改变,图像处理器可直接将得到的这些特征图以纹理格式存储为纹理图。比如,神经网络模型的第一层卷积层对RGBA四个特征图进行卷积运算,得到8个特征图,神经网络模型的第二层卷积层对这8个特征图进行卷积运算,得到16个特征图。这些网络层的输出均由图像处理器直接以纹理格式存储为纹理图。特征图的数量反映特征通道的数量,神经网络模型的运算会改变特征通道的数量,以从待处理图像中提取特征,得到图像处理结果。比如,识别出手势骨架节点位置,或者改变图像风格特征等。
在一个实施例中,该图像处理方法还包括:将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区;其中,写入共享缓存区的输入存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入;写入共享缓存区的输出存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,将输出按照该网络层相应的输出存储地址进行存储。
具体地,计算机设备的中央处理器可将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区。这样,计算机设备的图像处理器则可在每通过神经网络模型中的一层网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入,通过运行后将输出该网络层相应的输出存储地址进行存储。
可以理解,这里计算机设备的中央处理器在将神经网络模型中各网络层的层参数、输入存储地址与输出存储地址,分别写入共享缓存区时,按照中央处理器可访问的数据存储格式存储即可。图像处理器不需要再对这些数据转换数据存储格式。
在一个实施例中,计算机设备的图像处理器具体通过多个图像处理器线程组,根据神经网络模型对待处理图像的纹理图进行处理。其中,每个图像处理器线程组负责通过神经网络模型的一个网络层的运算。比如,一组图像处理器线程组负责第一层网络层的运算,那么该组图像处理器线程组并行地从该网络层的输入存储地址读取作为输入的纹理图(即以纹理格式存储的多个特征图),在运算结束后,将输出的多个特征图以纹理格式存储在该网络层的输出存储地址。其中,输入的特征图的数量与输出的特整体的数量可以相同也可以不相同。
在本实施例中,通过将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区,保证了图像处理器能够通过神经网络模型中各网络层对待处理图像顺畅有序地进行处理。
在一个实施例中,S104包括:调用图像处理器接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后并行进行图像处理。S106包括当接收到图像处理结果获取指令、且多个图像处理器线程将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后并行写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
其中,图像处理器接口是图像处理器提供的、供中央处理器与图像处理器交互的接口。图像处理器线程是运行在图像处理器中的线程,可调用图像处理器的资源。线程是计算机程序的执行单元,在图像处理器中可并发多个线程。
具体地,计算机设备的中央处理器在将第一数据类型的待处理图像写入共享缓存区后,可调用图像处理器接口,创建多个图像处理器线程,向这多个图像处理器线程发送图像处理指令。
在一个实施例中,每个图像处理器线程接收到的图像处理指令可以是统一的图像处理指令,该图像处理指令指定了各图像处理器线程待执行操作所关联的数据。各图像处理器线程根据自己的线程标识,获取图像处理指令指定给自己的待执行操作所关联的数据。每个图像处理器线程接收到的图像处理指令也可以是与自身的线程标识对应的图像处理指令。每个图像处理指令指定了对应的图像处理器线程待执行操作所关联的数据。
在一个实施例中,多个图像处理器线程可以是一组图像处理器线程,从共享缓存区读取待处理图像、将待处理图像由第一数据类型转为第二数据类型,及对待处理图像进行图像处理的操作均由这组图像处理器线程并行执行。这组图像处理器线程每个中的每个图像处理器线程负责待处理图像中部分区域。
举例说明,待处理图像为的尺寸为2*2,一组图像处理器线程为线程1、线程2、线程3和线程4。那么,线程1则负责像素位置(1,1)的像素点的读取、数据类型转换和图像处理,线程2则负责像素位置(1,2)的像素点的读取、数据类型转换和图像处理,线程3则负责像素位置(2,1)的像素点的读取、数据类型转换和图像处理,线程4则负责像素位置(2,2)的像素点的读取、数据类型转换和图像处理。
在一个实施例中,多个图像处理器线程可以是多组图像处理器线程,每组图像处理器线程包括多个图像处理器线程。一组图像处理器线程负责执行一个操作后,即结束运行;再由另一组图像处理器线程接力执行下一个操作,以此类推,直至将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区。这里的多组图像处理器线程可以是同时创建,也可以是逐组创建。
举例说明,待处理图像为的尺寸为2*2,每组图像处理器线程均包括线程1、线程2、线程3和线程4。那么,第一组图像处理器线程的线程1则负责像素位置(1,1)的像素点的读取和数据类型转换,线程2则负责像素位置(1,2)的像素点的读取和数据类型转换,线程3则负责像素位置(2,1)的像素点的读取和数据类型转换,线程4则负责像素位置(2,2)的像素点的读取和数据类型转换;第二组图像处理器线程的线程1则负责像素位置(1,1)的像素点的图像处理过程中第一个图像转换操作,线程2则负责像素位置(1,2)的像素点的图像处理过程中第一个图像转换操作,线程3则负责像素位置(2,1)的像素点的图像处理过程中第一个图像转换操作,线程4则负责像素位置(2,2)的像素点的图像处理过程中第一个图像转换操作,以此类推,直至将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区。
可以理解,数据的读取和写入并未对数据进行运算,可不用单独作为一个单独的操作由一个图像处理器线程组专门执行。
上述实施例中,通过并发多个图像处理器线程,利用这多个图像处理器线程并行进行图像处理,极大地提高了图像处理效率。
在一个实施例中,待处理图像包括多个特征图;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应。S102包括:将第一数据类型的多个特征图逐个写入共享缓存区;其中,图像处理指令,还用于指示图像处理器将多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
其中,特征图是反映图像中像素点某种特征的数据所构成的特征矩阵。待处理图像的多个特征图,即为待处理图像所对应的多维特征矩阵(Mat)。多维特征矩阵是多个特征矩阵构成的特征矩阵集。
举例说明,图4示出了一个实施例中待处理图像的多个特征图的示意图。在本实施例中,待处理图像包括多个特征图可以是RGBA四通道的特征图。参考图4,待处理的图像包括4个特征图。待处理的图像中的像素点P1,对应R通道特征图中的像素点p1(也就是在R通道的特征值),对应G通道特征图中的像素点p2(也就是在G通道的特征值),对应B通道特征图中的像素点p3(也就是在B通道的特征值),对应A通道特征图中的像素点p4(也就是在A通道的特征值)。
纹理图是将图像的多个特征图中对应同一像素点的特征数据按照纹理格式集中表示的数据矩阵。纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
举例说明,图5示出了一个实施例中待处理图像的纹理图的示意图。在本实施例中,待处理图像包括多个特征图可以是RGBA四通道的特征图。参考图5,纹理图中纹理点Q1,包括待处理的图像中的像素点P1在R通道的特征值p1、G通道的特征值p2、B通道的特征值p3以及A通道的特征值p4。
具体地,计算机设备的中央处理器则将第一数据类型的多个特征图逐个写入共享缓存区,再向图像处理器发送图像处理指令。图像处理器再将多个特征图转化为纹理图后进行图像处理。多个特征图逐个写入共享缓存区的数据存储格式具体可以是Buffer格式,也就是中央处理器可访问的存储空间的数据存储格式。纹理图的数据存储格式具体可以是Texture格式,也就是图像处理器独特的数据存储格式。
可以理解,将多个特征图逐个写入共享缓存区或计算机设备的其他存储空间时,一个像素点的多个特征值是分开存储的,这样中央处理器或图像处理器要获取一个像素点的多个特征值进行计算时,必然需要对共享缓存区或计算机设备的其他存储空间进行跳跃访问,而在计算机系统中,跳跃的存储空间访问会大幅度降低存储空间输入输出(IO)效率,进而影响整体计算速度。而将多个特征图已纹理格式存储为纹理图,一个像素点的多个特征值是集中存储的,这样便避免了跳跃访问的问题,提高了整体计算效率。
举例说明,图6示出了一个实施例中逐个存储特征图与存储纹理图的对比示意图。参考图6(a)为逐个存储特征图的示意图,明显可以看出一个像素点的多个特征值是分开存储的,再参考6(b)为存储纹理图的示意图,明显可以看出一个像素点的多个特征值是集中存储的。
在一个实施例中,向图像处理器发送图像处理指令,包括:调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取多个特征图、将多个特征图转化为纹理图并由第一数据类型转为第二数据类型后,再并行对纹理图中不同的纹理点进行处理。
具体地,计算机设备的中央处理器在将第一数据类型的待处理图像写入共享缓存区后,可调用图像处理器接口,创建多个图像处理器线程,向这多个图像处理器线程发送图像处理指令。每个图像处理器线程接收到的图像处理指令可以是统一的图像处理指令,该图像处理指令指定了各图像处理器线程待执行操作所关联的数据。各图像处理器线程根据自己的线程标识,获取图像处理指令指定给自己的待执行操作所关联的数据。每个图像处理器线程接收到的图像处理指令也可以是与自身的线程标识对应的图像处理指令。每个图像处理指令指定了对应的图像处理器线程待执行操作所关联的数据。
进一步地,多个图像处理器线程可以是一组图像处理器线程,从共享缓存区读取待处理图像、将待处理图像由第一数据类型转为第二数据类型、将多个特征图转化为纹理图,及对纹理图中不同的纹理点进行处理的操作均由这组图像处理器线程并行执行。这组图像处理器线程每个中的每个图像处理器线程负责纹理图中部分纹理点。多个图像处理器线程可以是多组图像处理器线程,每组图像处理器线程包括多个图像处理器线程。一组图像处理器线程负责执行一个操作后,即结束允许;再由另一组图像处理器线程接力执行下一个操作,以此类推,直至将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区。这里的多组图像处理器线程可以是同时创建,也可以是逐组创建。
在本实施例中,通过并发多个图像处理器线程,利用这多个图像处理器线程并行进行图像处理,极大地提高了图像处理效率。
在一个实施例中,该图像处理方法还包括:通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
其中,纹理采样器(Texture Sampler)指定了被采样纹理、纹理过滤方式和纹理寻址模式。使用纹理坐标获取纹理颜色叫做采样(Sampling)。预设采样尺寸即采样的纹理坐标范围。
具体地,计算机设备的图像处理器调用纹理采样器接口以通过纹理采样器访问纹理图,这样在采样坐标超出纹理图的纹理边界时,纹理采样器即自动根据采样坐标超出纹理图的纹理边界的偏移量,返回指定常量或者纹理边界量,从而实现在纹理图边界补充纹理点,按采样坐标读取到纹理图。举例说明,假设纹理图为3*3,采样坐标为5*5,那么纹理采样器可在3*3纹理图的边界补一圈0边,得到5*5的纹理图。
可以理解,在卷积神经网络的卷积层计算等场景下,通常需要对作为输入的数据进行补边操作,也就是扩大输入尺寸,而当输入为多个特征图且各特征图逐个存储时,补边操作会带来较大的性能消耗。在本实施例中,通过将多个特征图存储为纹理图,再利用纹理采样器自动对纹理图进行补边,降低了补边操作带来的性能消耗。
上述实施例中,图像处理器将多个特征图转化为纹理图后再进行图像处理,这样,图像处理器在图像处理的运算过程中,每次按像素点读取特征值的时候不需要再进行跳跃访问存储空间,提高了整体计算效率。
在一个实施例中,纹理图中一个纹理点可存储预设数量个特征值,当特征图的数量大于预设数量时,则需要通过多个纹理图来表示这多个特征图。其中预设数量为4。举例说明,比如待处理图像包括10个特征图,10/4=2.5,那么则需要3个纹理图来表示这10个特征图。
在一个具体的实施例中,计算机设备为基于IOS操作系统的移动终端。IOS操作系统提供的Metal框架支持GPU加速高级3D图像渲染,以及数据并行计算工作。Metal还提供了API供CPU调用。移动终端上安装有图像处理应用,该图像处理应用中集成有神经网络模型的模型文件,以及根据模型文件对输入数据进行处理后获得输出数据的运算加速代码包(SDK)。其中,该SDK包括作为静态库使用的Framework和打包GPU指令作为数据资源的Metallib文件组成。Metallib文件由现实各种算法的Metal文件编译得到。
图7示出了一个实施例中SDK的架构图。参考图8,SDK由维护模型结构、模型参数以及GPU计算资源的Net程序块、驱动计算流程的Extractor程序块以及实现各层算法的一系列Layer程序块构成。Layer程序块的数量即为神经网络模型中网络层的数量。CPU加载模型文件后,实例化Net程序块为一个Net实例,Net实例通过实例化一系列Layer程序块并记录各Layer的输入输出依赖关系维护整个神经网络模型的网络结构。同时,CPU新建一份Metal计算上下文MetalContext并维护当前神经网络模型的生命周期,管理当前神经网络模型计算所需要的Metal资源。不同的神经网络模型由不同的MetalContext维护和管理。
实际计算时,Net实例化Extractor程序块为一个Extractor实例,Extractor实例读取Net实例中维护的各Layer的输入输出依赖关系,依次调用相关Layer程序块,将神经网络模型各网络层的层参数写入共享缓存区供GPU计算时读取。Mat是模型中各层的输入与输出数据。待处理图像初始的多个特征图的Mat由CPU逐个存入CPUBuffer中。GPU再将其以纹理格式存储在MTLTexture中,并在每次运算完成后,以纹理格式将计算结果存储在MTLTexture中。Conv(Convolutional)是神经网络中的卷积运算,Bn(BatchNormalization)是神经网络中的数据标准化运算,Scale是神经网络中的线性变换运算。
参考图8,图8示出了一个实施例中CPU与GPU的交互示意图。终端可根据用户指令启动图像处理应用,终端的CPU即创建对应于该图像处理应用的进程,该进程运行于CPU中,可调用CPU的资源。CPU调用终端的摄像头采集图像,采集的图像以位图格式存储在CPU的数据存储区。CPU可再将该待处理图像的多个特征图以第一数据类型逐个写入共享缓存区(Buffer)。CPU再调用MetalAPI创建第一组GPU线程(如32个),并向这组GPU线程发送指令,控制这组GPU线程并行地将第一数据类型的多个特征图转化为第二数据类型的纹理图。
这时,CPU可结束第一组GPU线程,创建第二组GPU线程(如32个),向这组GPU线程发送指令,控制这组GPU线程并行地按照神经网络模型第一层网络层的层参数对第二数据类型的纹理图中不同的纹理点进行运算,并将运算结果写入指定的存储地址。CPU可结束第二组GPU线程,创建第三组GPU线程(如32个),向这组GPU线程发送指令,控制这组GPU线程并行地按照神经网络模型第二层网络层的参数对第二组GPU线程的计算结果进行运算,依次类推,直至按照神经网络模型末层网络层的参数运算得到目标图像的纹理图,再通过一组CPU线程并行地将目标图像的多个特征图以第一数据类型写入共享缓存区,供CPU读取使用。也就是说,每组GPU线程仅进行一种类型的运算。
其中,CPU可一次性将神经网络模型各网络层的层参数和连接关系写入共享缓存区;也可在每次创建一组GPU线程时,才将该组GPU线程需要执行的运算所对应的网络层的层参数,输入存储地址以及输出存储地址写入共享缓存区。
应该理解的是,虽然上述各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图9所示,在一个实施例中,提供了一种图像处理装置900。参照图9,该图像处理装置900包括:写入模块901、处理模块902和读取模块903。
写入模块901,用于将第一数据类型的待处理图像写入共享缓存区;共享缓存区由中央处理器与图像处理器共享。
处理模块902,用于向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度。
读取模块903,用于当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,处理模块902还用于加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对第二数据类型的待处理图像进行图像处理。
在一个实施例中,处理模块902还用于调用图像处理器接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后并行进行图像处理;读取模块还用于当接收到图像处理结果获取指令、且多个图像处理器线程将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,待处理图像包括多个特征图;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应。写入模块901还用于将第一数据类型的多个特征图逐个写入共享缓存区;其中,图像处理指令,还用于指示图像处理器将多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
在一个实施例中,处理模块902还用于调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取多个特征图、将多个特征图转化为纹理图并由第一数据类型转为第二数据类型后,再并行对纹理图中不同的纹理点进行处理。
在一个实施例中,处理模块902还用于通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
在一个实施例中,第一数据类型为32位浮点型;第二数据类型为16位浮点型。
图10示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是终端或服务器。如图10所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,处理器包括中央处理器和图像处理器。存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被中央处理器执行时,可使得中央处理器实现图像处理方法。该内存储器中也可储存有计算机程序,该计算机程序被中央处理器执行时,可使得中央处理器执行图像处理方法。本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的图像处理装置可以实现为一种计算机程序的形式,计算机程序可在如图10所示的计算机设备上运行,计算机设备的非易失性存储介质可存储组成该图像处理装置的各个程序模块,比如,图9所示的写入模块901、处理模块902和读取模块903等。各个程序模块组成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的图像处理方法中的步骤。
例如,图10所示的计算机设备可以通过如图9所示的图像处理装置900中的写入模块901将第一数据类型的待处理图像写入共享缓存区;共享缓存区由中央处理器与图像处理器共享。通过处理模块902向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度。通过读取模块903当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,提供了一种图像处理系统,包括中央处理器和图像处理器。其中,中央处理器用于将第一数据类型的待处理图像写入共享缓存区;向图像处理器发送图像处理指令;共享缓存区由中央处理器与图像处理器共享。
图像处理器用于从共享缓存区读取待处理图像;将待处理图像由第一数据类型转为第二数据类型后进行图像处理;将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区;第一数据类型的精度大于第二数据类型的精度。
中央处理器还用于在接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,中央处理器还用于加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区。
图像处理器还用于按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对第二数据类型的待处理图像进行图像处理。
在一个实施例中,中央处理器还用于调用图像处理器接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令。
图像处理器还用于通过多个图像处理器线程并行从共享缓存区读取待处理图像,通过多个图像处理器线程并行将待处理图像由第一数据类型转为第二数据类型后并行进行图像处理,通过多个图像处理器线程并行将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后并行写入共享缓存区。
在一个实施例中,待处理图像包括多个特征图;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应。
中央处理器还用于将第一数据类型的多个特征图逐个写入共享缓存区。
图像处理器还用于将多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
在一个实施例中,中央处理器还用于调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令。
图像处理器还用于通过多个图像处理器线程并行从共享缓存区读取多个特征图,通过多个图像处理器线程并行将多个特征图转化为纹理图并由第一数据类型转为第二数据类型,通过多个图像处理器线程并行对纹理图中不同的纹理点进行处理。
在一个实施例中,图像处理器还用于调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
在一个实施例中,第一数据类型为32位浮点型;第二数据类型为16位浮点型。
在一个实施例中,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被中央处理器执行时,使得中央处理器执行以下步骤:将第一数据类型的待处理图像写入共享缓存区;共享缓存区由中央处理器与图像处理器共享;向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度;当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,计算机程序还使得中央处理器执行以下步骤:加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对第二数据类型的待处理图像进行图像处理。
在一个实施例中,向图像处理器发送图像处理指令,包括:调用图像处理器接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后并行进行图像处理。当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像,包括:当接收到图像处理结果获取指令、且多个图像处理器线程将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后并行写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,待处理图像包括多个特征图;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应。将第一数据类型的待处理图像写入共享缓存区,包括:将第一数据类型的多个特征图逐个写入共享缓存区;其中,图像处理指令,还用于指示图像处理器将多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
在一个实施例中,向图像处理器发送图像处理指令,包括:调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取多个特征图、将多个特征图转化为纹理图并由第一数据类型转为第二数据类型后,再并行对纹理图中不同的纹理点进行处理。
在一个实施例中,计算机程序还使得中央处理器执行以下步骤:通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
在一个实施例中,第一数据类型为32位浮点型;第二数据类型为16位浮点型。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机程序,计算机程序被中央处理器执行时,使得中央处理器执行以下步骤:将第一数据类型的待处理图像写入共享缓存区;共享缓存区由中央处理器与图像处理器共享;向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度;当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,计算机程序还使得中央处理器执行以下步骤:加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对第二数据类型的待处理图像进行图像处理。
在一个实施例中,向图像处理器发送图像处理指令,包括:调用图像处理器接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后并行进行图像处理。当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像,包括:当接收到图像处理结果获取指令、且多个图像处理器线程将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后并行写入共享缓存区时,则从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,待处理图像包括多个特征图;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应。将第一数据类型的待处理图像写入共享缓存区,包括:将第一数据类型的多个特征图逐个写入共享缓存区;其中,图像处理指令,还用于指示图像处理器将多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
在一个实施例中,向图像处理器发送图像处理指令,包括:调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取多个特征图、将多个特征图转化为纹理图并由第一数据类型转为第二数据类型后,再并行对纹理图中不同的纹理点进行处理。
在一个实施例中,计算机程序还使得中央处理器执行以下步骤:通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
在一个实施例中,第一数据类型为32位浮点型;第二数据类型为16位浮点型。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种图像处理方法,应用于中央处理器,包括:
将第一数据类型的待处理图像写入共享缓存区;所述共享缓存区由中央处理器与图像处理器共享;
向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;
当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
加载并解析神经网络模型的模型文件;
将解析得到的神经网络模型各网络层的层参数和连接关系,写入所述共享缓存区;写入所述共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对第二数据类型的待处理图像进行图像处理。
3.根据权利要求1所述的方法,其特征在于,所述向图像处理器发送图像处理指令,包括:
调用图像处理器接口创建多个图像处理器线程;
向所述多个图像处理器线程发送图像处理指令;所述图像处理指令用于指示所述多个图像处理器线程并行从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后并行进行图像处理;
所述当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像,包括:
当接收到图像处理结果获取指令、且所述多个图像处理器线程将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后并行写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
4.根据权利要求1所述的方法,其特征在于,所述待处理图像包括多个特征图;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;
所述将第一数据类型的待处理图像写入共享缓存区,包括:
将第一数据类型的多个特征图逐个写入共享缓存区;
其中,所述图像处理指令,还用于指示图像处理器将多个特征图转化为纹理图后进行图像处理;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
5.根据权利要求4所述的方法,其特征在于,所述向图像处理器发送图像处理指令,包括:
调用图像处理器控制接口创建多个图像处理器线程;
向所述多个图像处理器线程发送图像处理指令;所述图像处理指令用于指示所述多个图像处理器线程并行从共享缓存区读取多个特征图、将多个特征图转化为纹理图并由第一数据类型转为第二数据类型后,再并行对所述纹理图中不同的纹理点进行处理。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;
当预设采样尺寸大于纹理图的尺寸时,通过所述纹理采样器接口按照所述预设采样尺寸与纹理图的尺寸的偏移量返回用于补充纹理图边界的纹理点;
通过图像处理器对补充纹理点后的纹理图进行图像处理。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述第一数据类型为32位浮点型;所述第二数据类型为16位浮点型。
8.一种图像处理装置,应用于中央处理器,包括:
写入模块,用于将第一数据类型的待处理图像写入共享缓存区;所述共享缓存区由中央处理器与图像处理器共享;
处理模块,用于向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;
读取模块,用于当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
9.根据权利要求8所述的装置,其特征在于,所述处理模块还用于加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入所述共享缓存区;写入所述共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对第二数据类型的待处理图像进行图像处理。
10.根据权利要求8所述的装置,其特征在于,所述处理模块还用于调用图像处理器接口创建多个图像处理器线程;向所述多个图像处理器线程发送图像处理指令;所述图像处理指令用于指示所述多个图像处理器线程并行从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后并行进行图像处理;所述读取模块还用于当接收到图像处理结果获取指令、且所述多个图像处理器线程将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
11.根据权利要求8所述的装置,其特征在于,所述待处理图像包括多个特征图;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;
所述写入模块还用于将第一数据类型的多个特征图逐个写入共享缓存区;其中,所述图像处理指令,还用于指示图像处理器将多个特征图转化为纹理图后进行图像处理;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
12.根据权利要求11所述的装置,其特征在于,所述处理模块还用于调用图像处理器控制接口创建多个图像处理器线程;向所述多个图像处理器线程发送图像处理指令;所述图像处理指令用于指示所述多个图像处理器线程并行从共享缓存区读取多个特征图、将多个特征图转化为纹理图并由第一数据类型转为第二数据类型后,再并行对所述纹理图中不同的纹理点进行处理。
13.一种图像处理系统,包括中央处理器和图像处理器,其中:
所述中央处理器用于将第一数据类型的待处理图像写入共享缓存区;向图像处理器发送图像处理指令;所述共享缓存区由中央处理器与图像处理器共享;
所述图像处理器用于从共享缓存区读取待处理图像;将待处理图像由第一数据类型转为第二数据类型后进行图像处理;将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区;所述第一数据类型的精度大于所述第二数据类型的精度;
所述中央处理器还用于在接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入所述共享缓存区时,则从所述共享缓存区中读取第一数据类型的目标图像。
14.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被中央处理器执行时,使得所述中央处理器执行如权利要求1至7中任一项所述的方法的步骤。
15.一种计算机设备,包括存储器和中央处理器,所述处理器包括中央处理器和图像处理器,所述存储器中储存有计算机程序,所述计算机程序被所述中央处理器执行时,使得所述中央处理器执行如权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810593519.3A CN110163790A (zh) | 2018-06-11 | 2018-06-11 | 图像处理方法、装置、系统、存储介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810593519.3A CN110163790A (zh) | 2018-06-11 | 2018-06-11 | 图像处理方法、装置、系统、存储介质和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110163790A true CN110163790A (zh) | 2019-08-23 |
Family
ID=67644864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810593519.3A Pending CN110163790A (zh) | 2018-06-11 | 2018-06-11 | 图像处理方法、装置、系统、存储介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110163790A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704768A (zh) * | 2019-10-08 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 基于图形处理器的网页渲染方法以及装置 |
CN111079771A (zh) * | 2019-12-16 | 2020-04-28 | 广东小天才科技有限公司 | 点读图像的特征提取方法、系统、终端设备及存储介质 |
CN112056736A (zh) * | 2020-09-10 | 2020-12-11 | 江门市索尼娅医疗器械有限公司 | 一种能够记忆用户使用习惯的磨甲机及磨甲机控制系统 |
CN112990370A (zh) * | 2021-04-26 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 图像数据的处理方法和装置、存储介质及电子设备 |
CN114638352A (zh) * | 2022-05-18 | 2022-06-17 | 成都登临科技有限公司 | 一种处理器架构、处理器及电子设备 |
CN117290098A (zh) * | 2023-09-22 | 2023-12-26 | 中国科学院自动化研究所 | 基于gpu内联直通的高速数据处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090251475A1 (en) * | 2008-04-08 | 2009-10-08 | Shailendra Mathur | Framework to integrate and abstract processing of multiple hardware domains, data types and format |
CN102298567A (zh) * | 2010-06-28 | 2011-12-28 | 安凯(广州)微电子技术有限公司 | 一种集成中央运算和图形加速的移动处理器架构 |
US20160321777A1 (en) * | 2014-06-20 | 2016-11-03 | Tencent Technology (Shenzhen) Company Limited | Data parallel processing method and apparatus based on multiple graphic processing units |
JP2018032301A (ja) * | 2016-08-26 | 2018-03-01 | 株式会社アクセル | 画像処理プロセッサにおける画像データ処理方法及びそのプログラム |
CN107808394A (zh) * | 2017-11-16 | 2018-03-16 | 厦门美图之家科技有限公司 | 一种基于卷积神经网络的图像处理方法及移动终端 |
CN107909537A (zh) * | 2017-11-16 | 2018-04-13 | 厦门美图之家科技有限公司 | 一种基于卷积神经网络的图像处理方法及移动终端 |
-
2018
- 2018-06-11 CN CN201810593519.3A patent/CN110163790A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090251475A1 (en) * | 2008-04-08 | 2009-10-08 | Shailendra Mathur | Framework to integrate and abstract processing of multiple hardware domains, data types and format |
CN102298567A (zh) * | 2010-06-28 | 2011-12-28 | 安凯(广州)微电子技术有限公司 | 一种集成中央运算和图形加速的移动处理器架构 |
US20160321777A1 (en) * | 2014-06-20 | 2016-11-03 | Tencent Technology (Shenzhen) Company Limited | Data parallel processing method and apparatus based on multiple graphic processing units |
JP2018032301A (ja) * | 2016-08-26 | 2018-03-01 | 株式会社アクセル | 画像処理プロセッサにおける画像データ処理方法及びそのプログラム |
CN107808394A (zh) * | 2017-11-16 | 2018-03-16 | 厦门美图之家科技有限公司 | 一种基于卷积神经网络的图像处理方法及移动终端 |
CN107909537A (zh) * | 2017-11-16 | 2018-04-13 | 厦门美图之家科技有限公司 | 一种基于卷积神经网络的图像处理方法及移动终端 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704768A (zh) * | 2019-10-08 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 基于图形处理器的网页渲染方法以及装置 |
CN110704768B (zh) * | 2019-10-08 | 2022-03-18 | 支付宝(杭州)信息技术有限公司 | 基于图形处理器的网页渲染方法以及装置 |
CN111079771A (zh) * | 2019-12-16 | 2020-04-28 | 广东小天才科技有限公司 | 点读图像的特征提取方法、系统、终端设备及存储介质 |
CN111079771B (zh) * | 2019-12-16 | 2023-05-09 | 广东小天才科技有限公司 | 点读图像的特征提取方法、系统、终端设备及存储介质 |
CN112056736A (zh) * | 2020-09-10 | 2020-12-11 | 江门市索尼娅医疗器械有限公司 | 一种能够记忆用户使用习惯的磨甲机及磨甲机控制系统 |
CN112990370A (zh) * | 2021-04-26 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 图像数据的处理方法和装置、存储介质及电子设备 |
CN114638352A (zh) * | 2022-05-18 | 2022-06-17 | 成都登临科技有限公司 | 一种处理器架构、处理器及电子设备 |
CN117290098A (zh) * | 2023-09-22 | 2023-12-26 | 中国科学院自动化研究所 | 基于gpu内联直通的高速数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110163790A (zh) | 图像处理方法、装置、系统、存储介质和计算机设备 | |
US10176546B2 (en) | Data processing systems | |
CN103218174B (zh) | 一种用于遥感图像的io双缓存交互多核处理方法 | |
US20030011637A1 (en) | System, method, and computer program product for optimization of a scene graph | |
CN105321199A (zh) | 图形处理 | |
US20170024158A1 (en) | Method of and apparatus for generating a signature representative of the content of an array of data | |
CN103890719B (zh) | 数字信号处理器以及基带通信设备 | |
CN109934300A (zh) | 模型压缩方法、装置、计算机设备及存储介质 | |
US9607356B2 (en) | Graphics processing systems | |
CN112835712A (zh) | 一种多线程特效绘制方法、装置、系统及介质 | |
CN117501312A (zh) | 图形渲染的方法及装置 | |
CN110414534A (zh) | 图像特征的提取方法、装置、存储介质和电子设备 | |
US11734869B2 (en) | Graphics processing | |
CN110175949A (zh) | 图像处理方法、装置、系统、存储介质和计算机设备 | |
CN109872402A (zh) | 3d模型处理方法、装置、计算机设备和存储介质 | |
CN104008565B (zh) | 一种利用cocos2d‑x以及HGE引擎播放Flash位图动画的系统和方法 | |
US7830386B1 (en) | Register transfer level simulation using a graphics processor | |
CN112686314A (zh) | 基于远距离拍摄场景的目标检测方法、装置及存储介质 | |
US8982134B2 (en) | Area-based dependency chain analysis of shaders and command stream | |
CN107241608A (zh) | 一种用于帧缓存解压的硬件容错方法和装置 | |
US11107264B2 (en) | Graphics processing systems for determining blending operations | |
CN111222624B (zh) | 一种并行计算方法及装置 | |
CN108572593A (zh) | 跨平台卷积神经网络控制系统及方法、信息数据处理终端 | |
CN106796504A (zh) | 用于指令预提取的方法和设备 | |
US11790479B2 (en) | Primitive assembly and vertex shading of vertex attributes in graphics processing systems |
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 |