CN110175949A - 图像处理方法、装置、系统、存储介质和计算机设备 - Google Patents

图像处理方法、装置、系统、存储介质和计算机设备 Download PDF

Info

Publication number
CN110175949A
CN110175949A CN201810594149.5A CN201810594149A CN110175949A CN 110175949 A CN110175949 A CN 110175949A CN 201810594149 A CN201810594149 A CN 201810594149A CN 110175949 A CN110175949 A CN 110175949A
Authority
CN
China
Prior art keywords
image
processed
cache area
processor
shared cache
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
Application number
CN201810594149.5A
Other languages
English (en)
Inventor
李昊沅
左小祥
李峰
周蔚
程君
尚海豹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810594149.5A priority Critical patent/CN110175949A/zh
Publication of CN110175949A publication Critical patent/CN110175949A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/40Analysis of texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Abstract

本发明涉及一种图像处理方法、装置、系统、存储介质和计算机设备,该方法应用于中央处理器,包括:将待处理图像的多个特征图逐个写入共享缓存区;向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转化为多个特征图并逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图。本申请提供的方案提高了图像处理效率。

Description

图像处理方法、装置、系统、存储介质和计算机设备
技术领域
本发明涉及计算机技术领域,特别是涉及一种图像处理方法、装置、系统、存储介质和计算机设备。
背景技术
随着计算机技术的发展和图像处理技术的进步,基于图像的处理方式变得越来越多样。目前常用的图像处理技术如图像的特征转化处理,比如图像颜色特征转化、图像光影特征转化或者图像风格特征转化等。
正是由于图像所包括的信息量越来越大、且图像的数据量也越来越大,在这样在通过传统的图像处理方式直接对图像进行处理时耗时会越来越多,从而导致图像处理的效率变低。
发明内容
基于此,有必要针对目前图像处理效率比较低的问题,提供一种图像处理方法、装置、系统、存储介质和计算机设备。
一种图像处理方法,应用于中央处理器,包括:
将待处理图像的多个特征图逐个写入共享缓存区;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;所述共享缓存区由中央处理器与图像处理器共享;
向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;
当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区时,则从所述共享缓存区中读取目标图像的多个特征图。
一种图像处理装置,应用于中央处理器,包括:
写入模块,用于将待处理图像的多个特征图逐个写入共享缓存区;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;所述共享缓存区由中央处理器与图像处理器共享;
处理模块,用于向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;
读取模块,用于当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区时,则从所述共享缓存区中读取目标图像的多个特征图。
一种图像处理系统,包括中央处理器和图像处理器,其中:
所述中央处理器用于将待处理图像的多个特征图逐个写入共享缓存区;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;所述共享缓存区由中央处理器与图像处理器共享;向图像处理器发送图像处理指令;
所述图像处理器用于根据所述图像处理指令,从共享缓存区读取待处理图像的多个特征图、将待处理图像的多个特征图转化为纹理图后进行图像处理,及将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;
所述中央处理器还用于在当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区时,则从所述共享缓存区中读取目标图像的多个特征图。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被中央处理器执行时,使得所述中央处理器执行以下步骤:
将待处理图像的多个特征图逐个写入共享缓存区;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;所述共享缓存区由中央处理器与图像处理器共享;
向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;
当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区时,则从所述共享缓存区中读取目标图像的多个特征图。
一种计算机设备,包括存储器和处理器,所述存储器中储存有计算机程序,所述计算机程序被所述中央处理器执行时,使得所述中央处理器执行以下步骤:
将待处理图像的多个特征图逐个写入共享缓存区;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;所述共享缓存区由中央处理器与图像处理器共享;
向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;
当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区时,则从所述共享缓存区中读取目标图像的多个特征图。
上述图像处理方法、装置、系统、存储介质和计算机设备,中央处理器在将待处理图像的多个特征图逐个写入共享缓存区后,向图像处理器发送图像处理指令,由于共享缓存区由中央处理器与图像处理器共享,那么图像处理器便可从共享缓存区读取待处理图像、并将待处理图像待处理图像的多个特征图转化为纹理图后进行图像处理,再将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区,这样中央处理器在接收到图像处理结果获取指令后便可从共享缓存区中读取目标图像的多个特征图,也就是图像处理结果。由于纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值,也就是一个像素点的各特征值集中存储,这样可以避免图像处理器在处理需要跳跃读取数据的问题,极大地提高图像处理效率,而且图像处理过程由图像处理器,大幅度降低了中央处理器的占用。
附图说明
图1为一个实施例中图像处理方法的流程示意图;
图2为一个实施例中待处理图像的多个特征图的示意图;
图3为一个实施例中逐个存储特征图的示意图;
图4为一个实施例中待处理图像的纹理图的示意图;
图5为一个实施例中存储纹理图的示意图;
图6为一个实施例中图像处理前后的对比图;
图7为另一个实施例中图像处理前后的对比图;
图8为一个实施例中SDK的架构图;
图9为一个实施例中CPU与GPU的交互示意图;
图10为一个实施例中图像处理装置的模块结构图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中图像处理方法的流程示意图。本实施例主要以该图像处理方法应用于计算机设备来举例说明,该计算机设备可以是终端也可以是服务器。参照图1,该方法具体包括如下步骤:
S102,将待处理图像的多个特征图逐个写入共享缓存区;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应;共享缓存区由中央处理器与图像处理器共享。
其中,待处理图像是待进行处理的图像。比如,待进行手势识别的图像、待进行图像颜色特征转化的图像、待进行图像光影特征转化的图像或者待进行图像风格特征转化的图像等。待处理图像可以是计算机设备通过内置的或外部连接的摄像头采集得到的图像,也可以是其他计算机设备传递给本机的图像。
特征图是反映所属图像中像素点某种特征的数据所构成的特征矩阵。待处理图像的多个特征图,即为待处理图像所对应的多个特征通道的特征矩阵所组成的特征矩阵集,也就是多维特征矩阵(Mat)。比如,彩色图像可以包括四个特征图,即RGBA(Red、Green、Blue、Alpha)四个特征通道的特征值矩阵。
可以理解,待处理图像的每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应。举例说明,图2示出了一个实施例中待处理图像的多个特征图的示意图。在本实施例中,待处理图像包括多个特征图可以是RGBA四特征通道的特征图。参考图2,待处理的图像包括4个特征图。待处理的图像中的像素点P1,对应R通道特征图中的像素点p1(也就是在R通道的特征值),对应G通道特征图中的像素点p2(也就是在G通道的特征值),对应B通道特征图中的像素点p3(也就是在B通道的特征值),对应A通道特征图中的像素点p4(也就是在A通道的特征值)。
共享缓存区是计算机设备的数据存储空间,由中央处理器与图像处理器共享。也就是说中央处理器与图像处理器均可从共享缓存区写入和读取数据。中央处理器(CPU,Central Processing Unit)是计算机设备的运算核心和控制核心。图像处理器(CPU,Graphics Processing Unit)是计算机设备进行图像运算工作的微处理器。中央处理器可用于控制图像处理器。
具体地,计算机设备可通过中央处理器,将待处理图像的多个特征图逐个写入共享缓存区。可以理解,在中央处理器可读取的数据存储空间中,数据的存储通常遵循“通道优先”,也就是在存储待处理图像的特征图时,是按照特征通道,将属于一个特征图的特征值存储完后,再存储下一个特征图的特征。该逐个存储特征图的数据存储格式具体可以是Buffer格式,也就是中央处理器可访问的存储空间的数据存储格式。
举例说明,图3示出了一个实施例中逐个存储特征图的示意图。参考图3,明显可以看出属于相同特征通道的特征值是集中存储的,这样就会导致属于一个像素点的多个特征值是分开存储的。
在一个具体的实施例中,计算机设备为终端,终端上安装有图像处理应用。终端可根据用户指令启动图像处理应用,终端的中央处理器即创建对应于该图像处理应用的进程,该进程运行于中央处理器中,可调用中央处理器的资源。
中央处理器调用终端的摄像头采集图像,将采集的图像作为代理处图像存储在中央处理器的数据存储区,再将该待处理图像写入共享缓存区。也就是说,图像处理应用的进程(或属于该进程的线程)调用终端的摄像头采集图像,将采集的图像作为代理处图像存储在中央处理器的数据存储区,再将该待处理图像写入共享缓存区。这里不限制线程的数量,也就是说执行采集、存储与写入的线程可以是同一线程,也可以是不同的线程。
S104,向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
其中,图像处理指令是用于触发图像处理操作的计算机可读指令。图像处理指令可包括待处理图像的存储地址、图像处理参数以及图像处理结果的存储地址等。图像处理指令可以是一个计算机指令,统一指定了这些操作和数据;也可以是一系列计算机指令,分别指定了各操作和各数据。
将待处理图像的多个特征图转化为纹理图,表示将待处理图像的多个特征图的特征值按照纹理格式存储为纹理图。纹理图是将图像的多个特征图中对应同一像素点的特征数据按照纹理格式集中表示的数据矩阵。纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
举例说明,图4示出了一个实施例中待处理图像的纹理图的示意图。在本实施例中,待处理图像包括多个特征图可以是RGBA四特征通道的特征图。参考图4,纹理图中纹理点Q1,包括待处理的图像中的像素点P1在R通道的特征值p1、G通道的特征值p2、B通道的特征值p3以及A通道的特征值p4。
具体地,计算机设备的中央处理器在待处理图像的多个特征图逐个写入共享缓存区后,再向图像处理器发送图像处理指令。图像处理器再将多个特征图转化为纹理图后进行图像处理。可以理解,纹理图的数据存储格式是图像处理器独特的数据存储格式,中央处理器无法读取纹理图。纹理图的数据存储格式具体可以是Texture格式。
举例说明,图5示出了一个实施例中存储纹理图的示意图。参考图5,明显可以看出纹理图的存储不再遵循“通道优先”,而是将一个像素点的多个特征值集中存储的。
可以理解,将多个特征图逐个写入共享缓存区或计算机设备的其他存储空间时,一个像素点的多个特征值是分开存储的。由于中央处理器或图像处理器对待处理图进行图像处理时,通常是按像素对逐个像素进行处理,这样中央处理器或图像处理器要获取一个像素点的多个特征值进行计算时,必然需要对共享缓存区或计算机设备的其他存储空间进行跳跃访问,以获取一个像素点的多个特征值。而在计算机系统中,跳跃的存储空间访问会大幅度降低存储空间输入输出(IO)效率,进而影响整体计算速度。而将多个特征图以纹理格式存储为纹理图,一个像素点的多个特征值是集中存储的,这样图像处理器在对待处理图像的纹理图进行处理时,便避免了跳跃访问的问题,提高了整体计算效率。
而且,这样计算机设备便不再通过中央处理器对待处理图像进行处理,而通过中央处理器控制图像处理器对待处理图像进行图像处理,大幅度降低了中央处理器的占用。既避免了图像处理过多占用中央处理器,导致计算机设备其他进程或线程效率下降,比如界面响应卡顿等;又避免了中央处理器占用过多而导致的中央处理器过热,影响用户体验。
S106,当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转化为多个特征图并逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图。
其中,图像处理结果获取指令,是用于触发图像处理结果获取操作的计算机可读指令。图像处理结果获取指令可以定时触发,比如在采集到图像20毫秒后触发;也可以通过预设操作触发,比如用户执行图像处理结果获取操作时触发;还可以是发生特定的事件时触发,比如采集到的图像包括手势时触发。
具体地,计算机设备通过中央处理器控制图像处理器对待处理图像的纹理图进行处理,得到目标图像的纹理图后,继续将目标图像的纹理图转化为多个特征图,再将目标图像的多个特征图写入共享缓存区中。这样,计算机设备在接收到图像处理结果获取指令后,即可通过中央处理器从共享缓存区中读取目标图像的多个特征图,以进行后续操作。
上述图像处理方法,中央处理器在将待处理图像的多个特征图逐个写入共享缓存区后,向图像处理器发送图像处理指令,由于共享缓存区由中央处理器与图像处理器共享,那么图像处理器便可从共享缓存区读取待处理图像、并将待处理图像待处理图像的多个特征图转化为纹理图后进行图像处理,再将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区,这样中央处理器在接收到图像处理结果获取指令后便可从共享缓存区中读取目标图像的多个特征图,也就是图像处理结果。由于纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值,也就是一个像素点的各特征值集中存储,这样可以避免图像处理器在处理需要跳跃读取数据的问题,极大地提高图像处理效率,而且图像处理过程由图像处理器,大幅度降低了中央处理器的占用。
在一个实施例中,纹理图中一个纹理点可存储预设数量个特征值,当特征图的数量大于预设数量时,则需要通过多个纹理图来表示这多个特征图。其中预设数量为4。举例说明,比如待处理图像包括10个特征图,10/4=2.5,那么则需要3个纹理图来表示这10个特征图。
在一个实施例中,向图像处理器发送图像处理指令,包括:调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取多个特征图、并将待处理图像的多个特征图转化为纹理图后,再并行对纹理图中不同的纹理点进行处理。
其中,图像处理器接口是图像处理器提供的、供中央处理器与图像处理器交互的接口。图像处理器线程是运行在图像处理器中的线程,可调用图像处理器的资源。线程是计算机程序的执行单元,在图像处理器中可并发多个线程。
具体地,计算机设备的中央处理器在将第一数据类型的待处理图像写入共享缓存区后,可调用图像处理器接口,创建多个图像处理器线程,向这多个图像处理器线程发送图像处理指令。这多个图像处理器线程便根据图像处理指令并行从共享缓存区读取多个特征图、并将待处理图像的多个特征图转化为纹理图后,再并行对纹理图中不同的纹理点进行处理。
在一个实施例中,每个图像处理器线程接收到的图像处理指令可以是统一的图像处理指令,该图像处理指令指定了各图像处理器线程待执行操作所关联的数据。各图像处理器线程根据自己的线程标识,获取图像处理指令指定给自己的待执行操作所关联的数据。每个图像处理器线程接收到的图像处理指令也可以是与自身的线程标识对应的图像处理指令。每个图像处理指令指定了对应的图像处理器线程待执行操作所关联的数据。待执行操作所关联的数据
在一个实施例中,多个图像处理器线程可以是一组图像处理器线程,从共享缓存区读取待处理图像、将待处理图像的多个特征图转化为纹理图,及对待处理图像的纹理图进行图像处理的操作均由这组图像处理器线程并行执行。这组图像处理器线程每个中的每个图像处理器线程负责待处理图像中部分区域。
举例说明,待处理图像为的尺寸为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)的像素点的图像处理过程中第一个图像转换操作,以此类推,直至将通过图像处理得到的目标图像的纹理图转化为多个特征图写入共享缓存区。可以理解,数据的读取和写入并未对数据进行运算,可不用单独作为一个单独的操作由一个图像处理器线程组专门执行。
在本实施例中,每一个操作由单独的一个图像处理器线程组专门执行,这样将不同的操作进行隔离,提高了图像处理过程中的容错性。
上述实施例中,通过并发多个图像处理器线程,利用这多个图像处理器线程并行进行图像处理,极大地提高了图像处理效率。
在一个实施例中,该图像处理方法还包括:加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对待处理图像的纹理图进行图像处理。
其中,神经网络模型是由多层网络层互相连接而形成的复杂网络模型。神经网络模型可包括多层特征转换层,每层特征转换层都有对应的非线性变化算子,每层的非线性变化算子可以是一个或多个,每层特征转换层中一个非线性变化算子对输入的图像进行非线性变化,得到特征图(Feature Map)作为运算结果。每个特征转换层接收前一层的运算结果,经过自身的运算,对下一层输出本层的运算结果。神经网络模型具体可以是卷积神经网络(CNN,Convolutional Neural Network)。
模型文件包括神经网络模型中各网络层的层参数,以及各网络层之间的连接关系。各网络层的层参数可以包括计算逻辑(如卷积运算或者池化运算等)和模型参数(如卷积核大小或者采样大小等)。计算机设备可事先训练(或通过模型训练平台训练)用于进行图像处理的神经网络模型,得到训练完成的神经网络模型的模型文件。可以理解,不同的图像处理对应不同的神经网络模型,比如,进行手势识别的神经网络模型与进行图像颜色特征转化的神经网络模型,是不同的模型,这两个模型可以包括相同的网络层,以及拥有相同的层连接关系,但层参数则不同。这样,计算机设备在判定需要进行的图像处理的种类后,即可加载用于该种类的图像处理的神经网络模型的模型文件。这里的图像处理的种类,比如手势识别、图像颜色特征变化或者图像风格特征变化等。
具体地,计算机设备可通过中央处理器确定当前需要进行的图像处理的种类,加载该种类的神经网络模型的模型文件,继而解析该模型文件,得到神经网络模型各网络层的层参数和连接关系,从而将该层参数和连接关系写入共享缓存区,再向图像处理器发送图像处理指令。该图像处理指令还包括神经网络模型各网络层的层参数和连接关系的存储地址。
进一步地,计算机设备的图像处理器则可在接收到图像处理指令后,从共享缓存区中读取神经网络模型各网络层的层参数和连接关系,按照神经网络模型中各网络层的连接关系,以利用各网络层的层参数对第二数据类型的待处理图像进行图像处理。这样计算机设备即通过中央处理器控制图像处理器实现了利用神经网络模型的各网络层逐层对待处理图像进行图像处理得到目标图像。
举例说明,图6示出了一个实施例中图像处理前后的对比图。在本实施例中,神经网络模型是用于进行手部关节识别的卷积神经网络模型。参考图6(a)所示是终端通过摄像头采集的原始图像。终端的中央处理器将该图像以第一数据类型写入共享缓存区后,终端的图像处理器即根据中央处理器的指令,将待处理图像由第一数据类型转为第二数据类型后进行图像处理,得到目标图像;再将目标图像以第一数据类型写入共享缓存区,供中央处理器读取使用。参考图6(b)所示是图像处理得到的目标图像,可以看到目标图像中标识出了识别出的手部关节。在实际应用中,采用本发明的图像处理方法后,单帧图像计算耗时从107ms下降到了35.8ms。同时CPU占用也下降了30%。
举例说明,图7示出了一个实施例中图像处理前后的对比图。在本实施例中,神经网络模型是用于进行图像风格转换的卷积神经网络模型。如图7(a)所示是终端通过摄像头采集的原始图像。终端的中央处理器将该图像以第一数据类型写入共享缓存区后,终端的图像处理器即根据中央处理器的指令,将待处理图像由第一数据类型转为第二数据类型后进行图像处理,得到目标图像;再将目标图像以第一数据类型写入共享缓存区,供中央处理器读取使用。参考图7(b)所示是图像处理得到的目标图像,明显可以看到目标图像的图像风格较原始图像发生了变化。
可以理解,待处理图像在未进行图像处理时,可对应第一数量的特征图。比如,RGBA四个特征图。图像处理器在将待处理图像的第一数量的特征图转化为纹理图后,每通过神经网络模型的一层网络层对该纹理图像处理后,特征图的数量可以发生改变,图像处理器可直接将得到的这些特征图以纹理格式存储为纹理图。比如,神经网络模型的第一层卷积层对RGBA四个特征图进行卷积运算,得到8个特征图,神经网络模型的第二层卷积层对这8个特征图进行卷积运算,得到16个特征图。这些网络层的输出均由图像处理器直接以纹理格式存储为纹理图。特征图的数量反映特征通道的数量,神经网络模型的运算会改变特征通道的数量,以从待处理图像中提取特征,得到图像处理结果。比如,识别出手势骨架节点位置,或者改变图像风格特征等。
在一个实施例中,该图像处理方法还包括:将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区;其中,写入共享缓存区的输入存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入;写入共享缓存区的输出存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,将输出按照该网络层相应的输出存储地址进行存储。
具体地,计算机设备的中央处理器可将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区。这样,计算机设备的图像处理器则可在每通过神经网络模型中的一层网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入,通过运行后将输出该网络层相应的输出存储地址进行存储。
可以理解,这里计算机设备的中央处理器在将神经网络模型中各网络层的层参数、输入存储地址与输出存储地址,分别写入共享缓存区时,按照中央处理器可访问的数据存储格式存储即可。图像处理器不需要再对这些数据转换数据存储格式。
在一个实施例中,计算机设备的图像处理器具体通过多个图像处理器线程组,根据神经网络模型对待处理图像的纹理图进行处理。其中,每个图像处理器线程组负责通过神经网络模型的一个网络层的运算。比如,一组图像处理器线程组负责第一层网络层的运算,那么该组图像处理器线程组并行地从该网络层的输入存储地址读取作为输入的纹理图(即以纹理格式存储的多个特征图),在运算结束后,将输出的多个特征图以纹理格式存储在该网络层的输出存储地址。其中,输入的特征图的数量与输出的特整体的数量可以相同也可以不相同。
在本实施例中,通过将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区,保证了图像处理器能够通过神经网络模型中各网络层对待处理图像顺畅有序地进行处理。
在一个实施例中,该图像处理方法还包括:通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量,返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
其中,纹理采样器(Texture Sampler)指定了被采样纹理、纹理过滤方式和纹理寻址模式。使用纹理坐标获取纹理颜色叫做采样(Sampling)。预设采样尺寸即采样的纹理坐标范围。
具体地,计算机设备的图像处理器调用纹理采样器接口以通过纹理采样器访问纹理图,这样在采样坐标超出纹理图的纹理边界时,纹理采样器即自动根据采样坐标超出纹理图的纹理边界的偏移量,返回指定常量或者纹理边界量,从而实现在纹理图边界补充纹理点,按采样坐标读取到纹理图。举例说明,假设纹理图为3*3,采样坐标为5*5,那么纹理采样器可在3*3纹理图的边界补一圈0边,得到5*5的纹理图。
可以理解,在卷积神经网络的卷积层计算等场景下,通常需要对作为输入的数据进行补边操作,也就是控制特征映射的尺寸,而当输入为多个特征图且各特征图逐个存储时,补边操作会带来较大的性能消耗。补边也叫宽卷积,不补边就叫窄卷积。在本实施例中,通过将多个特征图存储为纹理图,再利用纹理采样器自动对纹理图进行补边,降低了补边操作带来的性能消耗。
上述实施例中,由于通常在用神经网络模型对图像进行处理时前馈计算的运算量较大,尤其是在模型复杂程度高,模型参数多的情况下尤为明显。这里,巧妙地通过中央处理器来控制图像处理器用神经网络模型对待处理图像进行图像处理,而且图像处理器在处理前先将待处理图像的多个特征图转化为纹理图进行图像处理,减少读取数据时需要跳跃访问带来的耗时,从而提高了图像处理效率。这里的前馈计算就是用神经网络模型对图像进行计算的过程。
在一个实施例中,该图像处理方法还包括:将第一数据类型的待处理图像写入共享缓存区;其中,图像处理指令,还用于指示图像处理器在进行图像处理前,将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度。当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图,包括:当接收到图像处理结果获取指令、图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型、且由纹理图转为多个特征图以逐个写入共享缓存区时,从共享缓存区中读取第一数据类型的目标图像。
其中,数据类型是数据的格式所属的类型。比如长整型、短整型、单精度浮点型或者双精度浮点型等。第一数据类型是数据类型中的一种,与后文中提到的第二数据类型是不同的数据类型。第一数据类型的待处理图像,表示待处理图像中各像素点的像素值为第一数据类型。将待处理图像由第一数据类型转为第二数据类型,表示将待处理图像中各像素点的像素值由第一数据类型转化为第二数据类型。
在一个实施例中,第二数据类型是中央处理器不适配的数据类型,且第二数据类型满足图像处理的精度需求。这样,中央处理器可以在保证精度需求在满足时,处理第二数据类型的待处理图像以减少运算数据量,减少运算耗时。由于中央处理器自身无法对第二数据类型的待处理图像进行处理,则控制图像处理器来将待处理图像由第一数据类型转为第二数据类型后进行图像处理。
在一个具体的实施例中,第一数据类型为32位浮点型;第二数据类型为16位浮点型。可以理解,基于目前的计算机技术,中央处理器可运算的最低位数的浮点型数据为32位浮点型数据,而图像处理器则可运算16位浮点型数据。通常情况下,基于16位浮点型的图像数据能够满足图像处理中的精度要求。那么,中央处理器则可控制图像处理器将32位浮点型的图像数据转化为16为浮点型的图像数据后进行处理,通过减少数据位数来减少数据量以提高数据处理效率。
可以理解,图像处理器在对第二数据类型的待处理图像进行处理时,不会改变数据类型,那么得到的目标图像的数据类型也为第二数据类型。
上述实施例中,中央处理器在将第一数据类型的待处理图像写入共享缓存区后,向图像处理器发送图像处理指令,由于共享缓存区由中央处理器与图像处理器共享,那么图像处理器便可从共享缓存区读取待处理图像、并将待处理图像由第一数据类型转为第二数据类型后进行图像处理,再将通过图像处理得到的目标图像由第二数据类型转为第一数据类型后写入共享缓存区,这样中央处理器在接收到图像处理结果获取指令后便可从共享缓存区中读取第一数据类型的目标图像,也就是图像处理结果。由于第一数据类型的精度大于第二数据类型的精度,这样在第二数据类型的精度满足图像处理需求时,即可通过减小数据量极大地提高图像处理效率,而且图像处理过程由图像处理器,大幅度降低了中央处理器的占用。
在一个具体的实施例中,计算机设备为基于IOS操作系统的移动终端。IOS操作系统提供的Metal框架支持GPU加速高级3D图像渲染,以及数据并行计算工作。Metal还提供了API供CPU调用。移动终端上安装有图像处理应用,该图像处理应用中集成有神经网络模型的模型文件,以及根据模型文件对输入数据进行处理后获得输出数据的运算加速代码包(SDK)。其中,该SDK包括作为静态库使用的Framework和打包GPU指令作为数据资源的Metallib文件组成。Metallib文件由现实各种算法的Metal文件编译得到。
图8示出了一个实施例中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是神经网络中的线性变换运算。
参考图9,图9示出了一个实施例中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线程需要执行的运算所对应的网络层的层参数,输入存储地址以及输出存储地址写入共享缓存区。
应该理解的是,虽然上述各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图10所示,在一个实施例中,提供了一种图像处理装置1000。参照图10,该图像处理装置1000包括:写入模块1001、处理模块1002和读取模块1003。
写入模块1001,用于将待处理图像的多个特征图逐个写入共享缓存区;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应;共享缓存区由中央处理器与图像处理器共享。
处理模块1002,用于向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
读取模块1003,用于当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图。
在一个实施例中,处理模块1002还用于调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取多个特征图、并将待处理图像的多个特征图转化为纹理图后,再并行对纹理图中不同的纹理点进行处理。
在一个实施例中,处理模块1002还用于调用图像处理器控制接口创建多各图像处理器线程组;每个图像处理器线程组包括多个图像处理器线程;向多个图像处理器线程组分别发送相应的图像处理指令;图像处理指令,用于指示相应的图像处理器线程组并行执行图像处理指令指定的操作;指定的操作为从共享缓存区读取多个特征图、将多个特征图转化为纹理图,或者,对纹理图中不同的纹理点进行处理。
在一个实施例中,处理模块1002还用于加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对待处理图像的纹理图进行图像处理。
在一个实施例中,写入模块1001还用于将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区;其中,写入共享缓存区的输入存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入;写入共享缓存区的输出存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,将输出按照该网络层相应的输出存储地址进行存储。
在一个实施例中,处理模块1002还用于通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量,返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
在一个实施例中,写入模块1001还用于将第一数据类型的待处理图像写入共享缓存区;其中,图像处理指令,还用于指示图像处理器在进行图像处理前,将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度。读取模块1003还用于当接收到图像处理结果获取指令、图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型、且由纹理图转为多个特征图以逐个写入共享缓存区时,从共享缓存区中读取第一数据类型的目标图像。
图11示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是终端或者服务器。如图11所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,处理器包括中央处理器和图像处理器。存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现图像处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行图像处理方法。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的图像处理装置可以实现为一种计算机程序的形式,计算机程序可在如图11所示的计算机设备上运行,计算机设备的非易失性存储介质可存储组成该图像处理装置的各个程序模块,比如,图10所示的写入模块1001、处理模块1002和读取模块1003等。各个程序模块组成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的图像处理方法中的步骤。
例如,图11所示的计算机设备可以通过如图10所示的图像处理装置1000中的写入模块1001将待处理图像的多个特征图逐个写入共享缓存区;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应;共享缓存区由中央处理器与图像处理器共享。通过处理模块1002向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。通过读取模块1003当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图。
在一个实施例中,提供了一种图像处理系统,包括中央处理器和图像处理器,其中:
中央处理器用于将待处理图像的多个特征图逐个写入共享缓存区;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应;共享缓存区由中央处理器与图像处理器共享;向图像处理器发送图像处理指令。
图像处理器用于根据图像处理指令,从共享缓存区读取待处理图像的多个特征图、将待处理图像的多个特征图转化为纹理图后进行图像处理,及将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入共享缓存区;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值。
中央处理器还用于在当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图。
在一个实施例中,中央处理器还用于调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令。图像处理器还用于通过多个图像处理器线程并行从共享缓存区读取多个特征图、并将待处理图像的多个特征图转化为纹理图,再并行对纹理图中不同的纹理点进行处理。
在一个实施例中,中央处理器还用于调用图像处理器控制接口创建多个图像处理器线程组;每个图像处理器线程组包括多个图像处理器线程;向多个图像处理器线程组分别发送相应的图像处理指令。图像处理器还用于通过与图像处理指令相应的图像处理器线程组并行执行图像处理指令指定的操作;指定的操作为从共享缓存区读取多个特征图、将多个特征图转化为纹理图,或者,对纹理图中不同的纹理点进行处理。
在一个实施例中,中央处理器还用于加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对待处理图像的纹理图进行图像处理。
在一个实施例中,中央处理器还用于将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区;其中,写入共享缓存区的输入存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入;写入共享缓存区的输出存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,将输出按照该网络层相应的输出存储地址进行存储。
在一个实施例中,图像处理器还用于调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量,返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
在一个实施例中,中央处理器还用于将第一数据类型的待处理图像写入共享缓存区。图像处理器还用于在进行图像处理前,将待处理图像由第一数据类型转为第二数据类型后进行图像处理,将通过图像处理得到的目标图像由第二数据类型转为第一数据类型、且由纹理图转为多个特征图以逐个写入共享缓存区;第一数据类型的精度大于第二数据类型的精度。
中央处理器还用于在接收到图像处理结果获取指令、图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型、且由纹理图转为多个特征图以逐个写入共享缓存区时,从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被中央处理器执行时,使得中央处理器执行以下步骤:将待处理图像的多个特征图逐个写入共享缓存区;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应;共享缓存区由中央处理器与图像处理器共享;向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转化为多个特征图并逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图。
在一个实施例中,向图像处理器发送图像处理指令,包括:调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取多个特征图、并将待处理图像的多个特征图转化为纹理图后,再并行对纹理图中不同的纹理点进行处理。
在一个实施例中,调用图像处理器控制接口创建多个图像处理器线程,包括:调用图像处理器控制接口创建多个图像处理器线程组;每个图像处理器线程组包括多个图像处理器线程。向多个图像处理器线程发送图像处理指令,包括:向多个图像处理器线程组分别发送相应的图像处理指令;图像处理指令,用于指示相应的图像处理器线程组并行执行图像处理指令指定的操作;指定的操作为从共享缓存区读取多个特征图、将多个特征图转化为纹理图,或者,对纹理图中不同的纹理点进行处理。
在一个实施例中,该计算机程序还使得中央处理器执行以下步骤:加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对待处理图像的纹理图进行图像处理。
在一个实施例中,该计算机程序还使得中央处理器执行以下步骤:将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区;其中,写入共享缓存区的输入存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入;写入共享缓存区的输出存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,将输出按照该网络层相应的输出存储地址进行存储。
在一个实施例中,该计算机程序还使得中央处理器执行以下步骤:通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量,返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
在一个实施例中,该计算机程序还使得中央处理器执行以下步骤:将第一数据类型的待处理图像写入共享缓存区;其中,图像处理指令,还用于指示图像处理器在进行图像处理前,将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度。当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图,包括:当接收到图像处理结果获取指令、图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型、且由纹理图转为多个特征图以逐个写入共享缓存区时,从共享缓存区中读取第一数据类型的目标图像。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机程序,计算机程序被中央处理器执行时,使得中央处理器执行以下步骤:将待处理图像的多个特征图逐个写入共享缓存区;多个特征图中每个特征图的像素点,具有表示特征图所在特征通道的像素值、且与待处理图像中像素点对应;共享缓存区由中央处理器与图像处理器共享;向图像处理器发送图像处理指令;图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;纹理图中的纹理点与待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转化为多个特征图并逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图。
在一个实施例中,向图像处理器发送图像处理指令,包括:调用图像处理器控制接口创建多个图像处理器线程;向多个图像处理器线程发送图像处理指令;图像处理指令用于指示多个图像处理器线程并行从共享缓存区读取多个特征图、并将待处理图像的多个特征图转化为纹理图后,再并行对纹理图中不同的纹理点进行处理。
在一个实施例中,调用图像处理器控制接口创建多个图像处理器线程,包括:调用图像处理器控制接口创建多个图像处理器线程组;每个图像处理器线程组包括多个图像处理器线程。向多个图像处理器线程发送图像处理指令,包括:向多个图像处理器线程组分别发送相应的图像处理指令;图像处理指令,用于指示相应的图像处理器线程组并行执行图像处理指令指定的操作;指定的操作为从共享缓存区读取多个特征图、将多个特征图转化为纹理图,或者,对纹理图中不同的纹理点进行处理。
在一个实施例中,该计算机程序还使得中央处理器执行以下步骤:加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入共享缓存区;写入共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对待处理图像的纹理图进行图像处理。
在一个实施例中,该计算机程序还使得中央处理器执行以下步骤:将神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入共享缓存区;其中,写入共享缓存区的输入存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入;写入共享缓存区的输出存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,将输出按照该网络层相应的输出存储地址进行存储。
在一个实施例中,该计算机程序还使得中央处理器执行以下步骤:通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;当预设采样尺寸大于纹理图的尺寸时,通过纹理采样器接口按照预设采样尺寸与纹理图的尺寸的偏移量,返回用于补充纹理图边界的纹理点;通过图像处理器对补充纹理点后的纹理图进行图像处理。
在一个实施例中,该计算机程序还使得中央处理器执行以下步骤:将第一数据类型的待处理图像写入共享缓存区;其中,图像处理指令,还用于指示图像处理器在进行图像处理前,将待处理图像由第一数据类型转为第二数据类型后进行图像处理;第一数据类型的精度大于第二数据类型的精度。当接收到图像处理结果获取指令、且图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入共享缓存区时,则从共享缓存区中读取目标图像的多个特征图,包括:当接收到图像处理结果获取指令、图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型、且由纹理图转为多个特征图以逐个写入共享缓存区时,从共享缓存区中读取第一数据类型的目标图像。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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.根据权利要求2所述的方法,其特征在于,所述调用图像处理器控制接口创建多个图像处理器线程,包括:
调用图像处理器控制接口创建多个图像处理器线程组;每个所述图像处理器线程组包括多个图像处理器线程;
所述向所述多个图像处理器线程发送图像处理指令,包括:
向所述多个图像处理器线程组分别发送相应的图像处理指令;所述图像处理指令,用于指示相应的图像处理器线程组并行执行所述图像处理指令指定的操作;所述指定的操作为从共享缓存区读取多个特征图、将多个特征图转化为纹理图,或者,对所述纹理图中不同的纹理点进行处理。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
加载并解析神经网络模型的模型文件;
将解析得到的神经网络模型各网络层的层参数和连接关系,写入所述共享缓存区;写入所述共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对待处理图像的纹理图进行图像处理。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
将所述神经网络模型中各网络层的输入存储地址与输出存储地址,分别写入所述共享缓存区;
其中,写入所述共享缓存区的输入存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,从该网络层相应的输入存储地址读取数据作为输入;写入所述共享缓存区的输出存储地址,用于指示图像处理器通过各网络层的层参数对待处理图像的纹理图进行图像处理时,将输出按照该网络层相应的输出存储地址进行存储。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
通过图像处理器调用纹理采样器接口按预设采样尺寸读取纹理图;
当预设采样尺寸大于纹理图的尺寸时,通过所述纹理采样器接口按照所述预设采样尺寸与纹理图的尺寸的偏移量,返回用于补充纹理图边界的纹理点;
通过图像处理器对补充纹理点后的纹理图进行图像处理。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
将第一数据类型的待处理图像写入共享缓存区;
其中,所述图像处理指令,还用于指示图像处理器在进行图像处理前,将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;
所述当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区时,则从所述共享缓存区中读取目标图像的多个特征图,包括:
当接收到图像处理结果获取指令、所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型、且由纹理图转为多个特征图以逐个写入所述共享缓存区时,从所述共享缓存区中读取第一数据类型的目标图像。
8.一种图像处理装置,应用于中央处理器,包括:
写入模块,用于将待处理图像的多个特征图逐个写入共享缓存区;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;所述共享缓存区由中央处理器与图像处理器共享;
处理模块,用于向图像处理器发送图像处理指令;所述图像处理指令用于指示图像处理器从共享缓存区读取待处理图像的多个特征图、并将待处理图像的多个特征图转化为纹理图后进行图像处理;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;
读取模块,用于当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区时,则从所述共享缓存区中读取目标图像的多个特征图。
9.根据权利要求8所述的装置,其特征在于,所述处理模块还用于调用图像处理器控制接口创建多个图像处理器线程;向所述多个图像处理器线程发送图像处理指令;所述图像处理指令用于指示所述多个图像处理器线程并行从共享缓存区读取多个特征图、并将待处理图像的多个特征图转化为纹理图后,再并行对纹理图中不同的纹理点进行处理。
10.根据权利要求9所述的装置,其特征在于,所述处理模块还用于调用图像处理器控制接口创建多各图像处理器线程组;每个所述图像处理器线程组包括多个图像处理器线程;向所述多个图像处理器线程组分别发送相应的图像处理指令;所述图像处理指令,用于指示相应的图像处理器线程组并行执行所述图像处理指令指定的操作;所述指定的操作为从共享缓存区读取多个特征图、将多个特征图转化为纹理图,或者,对所述纹理图中不同的纹理点进行处理。
11.根据权利要求8所述的装置,其特征在于,所述处理模块还用于加载并解析神经网络模型的模型文件;将解析得到的神经网络模型各网络层的层参数和连接关系,写入所述共享缓存区;写入所述共享缓存区的层参数和连接关系,用于指示图像处理器按照神经网络模型中各网络层的连接关系,通过各网络层的层参数对待处理图像的纹理图进行图像处理。
12.根据权利要求8所述的装置,其特征在于,所述写入模块还用于将第一数据类型的待处理图像写入共享缓存区;其中,所述图像处理指令,还用于指示图像处理器在进行图像处理前,将待处理图像由第一数据类型转为第二数据类型后进行图像处理;所述第一数据类型的精度大于所述第二数据类型的精度;所述读取模块还用于当接收到图像处理结果获取指令、所述图像处理器将通过图像处理得到的目标图像由第二数据类型转为第一数据类型、且由纹理图转为多个特征图以逐个写入所述共享缓存区时,从所述共享缓存区中读取第一数据类型的目标图像。
13.一种图像处理系统,包括中央处理器和图像处理器,其中:
所述中央处理器用于将待处理图像的多个特征图逐个写入共享缓存区;所述多个特征图中每个特征图的像素点,具有表示所述特征图所在特征通道的像素值、且与所述待处理图像中像素点对应;所述共享缓存区由中央处理器与图像处理器共享;向图像处理器发送图像处理指令;
所述图像处理器用于根据所述图像处理指令,从共享缓存区读取待处理图像的多个特征图、将待处理图像的多个特征图转化为纹理图后进行图像处理,及将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区;所述纹理图中的纹理点与所述待处理图像中像素点对应、且包括对应的像素点在各特征通道的像素值;
所述中央处理器还用于在当接收到图像处理结果获取指令、且所述图像处理器将通过图像处理得到的目标图像由纹理图转为多个特征图以逐个写入所述共享缓存区时,则从所述共享缓存区中读取目标图像的多个特征图。
14.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被中央处理器执行时,使得所述中央处理器执行如权利要求1至7中任一项所述的方法的步骤。
15.一种计算机设备,包括存储器和处理器,所述处理器包括中央处理器和图像处理器,所述存储器中储存有计算机程序,所述计算机程序被所述中央处理器执行时,使得所述中央处理器执行如权利要求1至7中任一项所述的方法的步骤。
CN201810594149.5A 2018-06-11 2018-06-11 图像处理方法、装置、系统、存储介质和计算机设备 Pending CN110175949A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810594149.5A CN110175949A (zh) 2018-06-11 2018-06-11 图像处理方法、装置、系统、存储介质和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810594149.5A CN110175949A (zh) 2018-06-11 2018-06-11 图像处理方法、装置、系统、存储介质和计算机设备

Publications (1)

Publication Number Publication Date
CN110175949A true CN110175949A (zh) 2019-08-27

Family

ID=67689246

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810594149.5A Pending CN110175949A (zh) 2018-06-11 2018-06-11 图像处理方法、装置、系统、存储介质和计算机设备

Country Status (1)

Country Link
CN (1) CN110175949A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125113A (zh) * 2019-12-25 2020-05-08 中科三清科技有限公司 空气污染物数据的存储方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090174722A1 (en) * 2008-01-04 2009-07-09 Asustek Computer Inc. Method for assisting in data calculation by using display card
DE102015224026A1 (de) * 2014-12-04 2016-06-09 Nvidia Corporation Indirektes Erfassen von Sampledaten zur Durchführung mehrfacher Faltungsoperationen in einem Parallelverarbeitungssystem
CN107424184A (zh) * 2017-04-27 2017-12-01 厦门美图之家科技有限公司 一种基于卷积神经网络的图像处理方法、装置及移动终端
CN107808394A (zh) * 2017-11-16 2018-03-16 厦门美图之家科技有限公司 一种基于卷积神经网络的图像处理方法及移动终端
CN107909537A (zh) * 2017-11-16 2018-04-13 厦门美图之家科技有限公司 一种基于卷积神经网络的图像处理方法及移动终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090174722A1 (en) * 2008-01-04 2009-07-09 Asustek Computer Inc. Method for assisting in data calculation by using display card
DE102015224026A1 (de) * 2014-12-04 2016-06-09 Nvidia Corporation Indirektes Erfassen von Sampledaten zur Durchführung mehrfacher Faltungsoperationen in einem Parallelverarbeitungssystem
CN107424184A (zh) * 2017-04-27 2017-12-01 厦门美图之家科技有限公司 一种基于卷积神经网络的图像处理方法、装置及移动终端
CN107808394A (zh) * 2017-11-16 2018-03-16 厦门美图之家科技有限公司 一种基于卷积神经网络的图像处理方法及移动终端
CN107909537A (zh) * 2017-11-16 2018-04-13 厦门美图之家科技有限公司 一种基于卷积神经网络的图像处理方法及移动终端

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125113A (zh) * 2019-12-25 2020-05-08 中科三清科技有限公司 空气污染物数据的存储方法和装置
CN111125113B (zh) * 2019-12-25 2020-09-15 中科三清科技有限公司 空气污染物数据的存储方法和装置

Similar Documents

Publication Publication Date Title
CN110163790A (zh) 图像处理方法、装置、系统、存储介质和计算机设备
US20210349832A1 (en) Method and apparatus for vector permutation
US10176546B2 (en) Data processing systems
CN106683171B (zh) 一种GPU多线程纹理映射SystemC建模结构
US6995765B2 (en) System, method, and computer program product for optimization of a scene graph
CN105321199A (zh) 图形处理
CN106408505A (zh) 图形处理系统
CN103890719B (zh) 数字信号处理器以及基带通信设备
CN110111334A (zh) 一种裂缝分割方法、装置、电子设备及存储介质
CN108319559A (zh) 用于控制矢量内存存取的数据处理装置及方法
CN109934507A (zh) 一种业务流程调度的方法及装置
CN105867944A (zh) Web前端数据操作层及其实现方法
CN110175949A (zh) 图像处理方法、装置、系统、存储介质和计算机设备
US10922086B2 (en) Reduction operations in data processors that include a plurality of execution lanes operable to execute programs for threads of a thread group in parallel
US20220044469A1 (en) Graphics processing
CN111145074A (zh) 全液晶仪表图像渲染方法
US20180211436A1 (en) Data processing systems
CN114091648A (zh) 基于卷积神经网络的图像分类方法、装置及卷积神经网络
CN106796504A (zh) 用于指令预提取的方法和设备
CN108572593A (zh) 跨平台卷积神经网络控制系统及方法、信息数据处理终端
CN108320315A (zh) 视图切换方法、装置、计算机设备和存储介质
CN109118461A (zh) 一种基于分布式框架的his融合方法
CN105677968B (zh) 可编程逻辑器件电路图绘制方法及装置
US8988444B2 (en) System and method for configuring graphics register data and recording medium
US11107264B2 (en) Graphics processing systems for determining blending operations

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