CN112991142B - 图像数据的矩阵运算方法、装置、设备及存储介质 - Google Patents
图像数据的矩阵运算方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112991142B CN112991142B CN202110349762.2A CN202110349762A CN112991142B CN 112991142 B CN112991142 B CN 112991142B CN 202110349762 A CN202110349762 A CN 202110349762A CN 112991142 B CN112991142 B CN 112991142B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- sliding window
- instruction
- row
- 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
- 239000011159 matrix material Substances 0.000 title claims abstract description 313
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000004364 calculation method Methods 0.000 claims abstract description 221
- 238000012545 processing Methods 0.000 claims abstract description 49
- 238000001914 filtration Methods 0.000 claims description 11
- 230000008707 rearrangement Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
Abstract
本申请公开了一种图像数据的矩阵运算方法、装置、设备及存储介质,涉及计算机技术领域。所述方法包括:基于图像算子的矩阵尺寸M行N列,在所述图像数据中读取矩阵数据;采用所述图像算子对应的单一计算指令对所述矩阵数据中的每列数据分别计算,得到1行中间计算结果;将所述1行中间计算结果复用重排为N行缓存数据;采用所述单一计算指令对所述缓存数据中目标列的矩阵元素进行计算,得到所述矩阵数据在所述单一计算指令下的计算结果;将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。本申请提高了对于图像数据进行矩阵运算的效率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种图像数据的矩阵运算方法、装置、设备及存储介质。
背景技术
在使用神经网络中的神经元对图像数据进行计算的场景中,由于神经元均为矩阵形式的算子,因此计算机需要将图像数据以矩阵的形式进行存储和计算。由于矩阵的运算过程往往计算量很大,时延严重,因此需要对矩阵运算进行优化来提升运算效率。
相关技术中提供有针对矩阵数据重排的优化方法,对源矩阵数据进行重排操作,例如将数据排为NC4HW4格式。该重排算法不仅由于数据的大规模调整会带来额外的耗时,而且对于通道数不能被4整除的矩阵,在运算时会加入额外的通道填充步骤。对于大型矩阵而言,重排算法对矩阵运算整体效率带来的提升可以抵消通道填充带来的额外耗费;而对于小型矩阵而言,通道填充带来的额外耗费对矩阵运算效率的影响非常大。
在对图像数据进行计算的场景中,如何提高小型矩阵的运算效率,是亟待解决的技术问题。
发明内容
本申请实施例提供了一种图像数据的矩阵运算方法、装置、设备及存储介质,能够通过对矩阵数据的中间计算结果进行重排,使得对图像数据的矩阵运算的效率得到提升。所述技术方案如下:
根据本申请的一个方面,提供了一种图像数据的矩阵运算方法,应用于计算机设备中,所述方法包括:
基于图像算子的矩阵尺寸M行N列,在所述图像数据中读取矩阵数据;
采用所述图像算子对应的单一计算指令对所述矩阵数据中的每列数据分别计算,得到1行中间计算结果;
将所述1行中间计算结果复用重排为N行缓存数据;
采用所述单一计算指令对所述缓存数据中目标列的矩阵元素进行计算,得到所述矩阵数据在所述单一计算指令下的计算结果,所述目标列是所述中间计算结果中的N个矩阵元素在所述N行缓存数据中同时所在的列;
将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。
根据本申请的另一方面,提供了一种图像数据的矩阵运算装置,所述装置包括:
读取模块,用于基于图像算子的矩阵尺寸M行N列,在所述图像数据中读取矩阵数据;
计算模块,用于采用所述图像算子对应的单一计算指令对所述矩阵数据中的每列数据分别计算,得到1行中间计算结果;
复用模块,用于将所述1行中间计算结果复用重排为N行缓存数据;
所述计算模块,还用于采用所述单一计算指令对所述缓存数据中目标列的矩阵元素进行计算,得到所述矩阵数据在所述单一计算指令下的计算结果,所述目标列是所述中间计算结果中的N个矩阵元素在所述N行缓存数据中同时所在的列;
输出模块,用于将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。
根据本申请的另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如本申请各个方面提供的矩阵数据的运算方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本申请各个方面提供的图像数据的矩阵运算方法。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图像数据的矩阵运算方法。
本申请实施例至少包括如下有益效果:
在对图像数据进行计算的场景中,通过对矩阵数据的中间计算结果进行复用重排,并对复用重排后的中间计算结果进行运算得到矩阵数据的运算结果。本方法在数据重排时不需要进行通道填充,因此避免了相关技术重排算法中因为矩阵通道数不能整除4所带来的通道填充的资源耗费。虽然本方案的缓存数据中的非目标列会存在一些存储资源的耗费,但是对于通道数越小的矩阵,该非目标列的耗费越少,因此能够显著提升小型矩阵的运算效率。
附图说明
为了更清楚地介绍本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请一个示例性实施例提供的一种3行3列的矩阵的示意图;
图2是本申请一个示例性实施例提供的一种3行3列的系数矩阵的示意图;
图3是本申请实施例提供的一种计算机设备的结构框图;
图4是本申请实施例提供的图像数据的矩阵运算架构的示意图;
图5是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的流程图;
图6是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的示意图;
图7是本申请一个示例性实施例提供的一种对中间计算结果进行复用重排的示意图;
图8是本申请一个示例性实施例提供的一种对中间计算结果进行复用重排的示意图;
图9是本申请一个示例性实施例提供的一种对中间计算结果进行复用重排的示意图;
图10是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的流程图;
图11是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的实例示意图;
图12是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的示意图;
图13是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的特殊情况示意图;
图14是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的特殊情况示意图;
图15是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的示意图;
图16是本申请一个示例性实施例提供的一种图像数据的矩阵运算方法的优化效果对比图;
图17是本申请一个示例性实施例提供的一种图像数据的矩阵运算装置的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了本申请实施例所示方案易于理解,下面对本申请实施例中出现的名词进行介绍。
图像算子:用于图像处理的矩阵运算操作。
矩阵数据:按照矩阵形式存储的计算机数据。
矩阵元素:是指组成矩阵的每一个数据。矩阵元素存储在计算机设备的存储器中,每个矩阵元素都有对应的存储地址。计算机设备可以通过访问矩阵元素的存储地址获取该矩阵元素。
单一计算指令:包括如下至少之一:求和指令、求最大值指令、求最小值指令以及求积指令。
求和指令是将矩阵中各元素相加后再除以矩阵中元素的个数,得到求和结果。以图1中的3行3列矩阵为例,求和指令输出的结果R0=a0+a1+a2+b0+b1+b2+c0+c1+c2;
均值滤波指令是对矩阵中的数据进行均值滤波操作得到结果,即,将矩阵中各元素相加后除以矩阵元素数量。以图1中的3行3列矩阵为例,求和指令输出的结果R0=(a0+a1+a2+b0+b1+b2+c0+c1+c2)/9;
求最大值指令是比较矩阵中各元素的大小,得到最大值。以图1的3行3列矩阵为例,求最大值指令输出的结果R0=Max(a0,a1,a2,b0,b1,b2,c0,c1,c2);
求最小值指令是比较矩阵中各元素的大小,得到最小值。以图1的3行3列矩阵为例,求最小值指令输出的结果R0=Min(a0,a1,a2,b0,b1,b2,c0,c1,c2);
卷积指令是将矩阵中各元素分别与系数矩阵中对应位置的系数相乘后,将结果相加,再除以矩阵元素数量得到的求积结果。以图1的3行3列矩阵为例,系数矩阵为图2所示的3行3列的矩阵,则卷积指令输出的结果为R0=(a0*k00+a1*k01+a2*k02+b0*k10+b1*k11+b2*k12+c0*k20+c1*k21+c2*k22)/9。
相关技术的矩阵重排算法对源数据进行大规模重排,额外的耗时较大;并且对于通道数不能被4整除的矩阵,在每次运算时都需要填充通道,耗费很大,对于小型矩阵的运算来说,优化提升效果不佳。本文提出的方法只需对图像数据中读取的矩阵数据的中间计算结果进行微调重排,对于卷积核越小的矩阵,额外耗费越小,针对小型矩阵有更良好的优化效果。
图3示出了本申请一个示例性实施例提供的一种计算机设备的结构示意图。该设备包括:总线101、处理器102、存储器103。
处理器102包括一个或者一个以上处理核心,处理器102通过运行软件程序以及模块,从而执行各种功能应用以及信息处理。
存储器103通过总线101与处理器102相连。
存储器103可用于存储至少一个指令,处理器102用于执行该至少一个指令,以实现上述方法实施例中的各个步骤。
可选地,存储器103还包括一个或多个寄存器104。寄存器104可用于存储通过单指令多数据流(Single Instruction Multiple Data,SIMD)指令读取到的数据、矩阵数据运算的中间计算结果,以及在滑窗处理中存储滑动窗口中的数据。
此外,存储器103可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,易失性或非易失性存储设备包括但不限于:磁盘或光盘,电可擦除可编程只读存储器(Electrically-Erasable Programmable Read Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),静态随时存取存储器(Static RandomAccess Memory,SRAM),只读存储器(Read-Only Memory,ROM),磁存储器,快闪存储器,可编程只读存储器(Programmable Read-Only Memory,PROM)。
图4示出了本申请一个示例性实施例提供的图像数据的矩阵运算架构的示意图,该计算架构包括:输入数据30、算法处理模块40、输出数据50。
输入数据30为计算机设备从图像数据中读取的至少一个M行N列的输入矩阵,输出数据50为计算机设备通过算法处理模块40运算得到的图像处理结果。算法处理模块40可能代表包含多个函数或者多个模块的算法整体;或者,算法处理模块40仅为单个函数或单个模块。
图5示出了本申请一个示例性实施例提供的图像数据的矩阵运算方法的流程图。示例性的,该矩阵数据的运算方法由图3示出的计算机设备执行。该方法包括:
步骤220:基于图像算子的矩阵尺寸M行N列,在图像数据中读取矩阵数据;
在对于图像进行处理的人工智能(Artificial Intelligence,AI)应用中,待处理图像按照像素点的大小以矩阵的形式存储于计算机设备中。在通过神经网络中的图像算子(比如卷积核)对图像进行处理时,需要读取图像算子所在区域的各个像素点的值。
示例性的,采用矩阵尺寸为3行3列的图像算子对待处理图像进行分析处理,在图像数据中读取3行3列的矩阵数据,分别为a0、a1、a2、b0、b1、b2、c0、c1、c2,得到图像算子如图6中矩阵10所示。
步骤240:采用图像算子对应的单一计算指令对矩阵数据中的每列数据分别计算,得到1行中间计算结果;
图像算子对应的单一计算指令确定为五种单一计算指令之一,根据单一计算指令对M行N列的矩阵数据中的每列数据分别进行计算,得到1行的中间计算结果,具体方法如下:
响应于图像算子对应的单一计算指令是求和指令,将矩阵数据中的每列矩阵元素相加;
响应于图像算子对应的单一计算指令是均值滤波指令,将矩阵数据中的每列矩阵元素相加;
响应于图像算子对应的单一计算指令是求最大值指令,对矩阵数据中的每列矩阵元素求最大值;
响应于图像算子对应的单一计算指令是求最小值指令,对矩阵数据中的每列矩阵元素求最小值;
响应于图像算子对应的单一计算指令是卷积指令,将矩阵数据中的每列矩阵元素乘上各自对应的系数值后相加。
示例性的,图6中所示的3行3列的图像算子10,矩阵数据中的每列矩阵元素经过单一计算指令指示的计算后,得到1行中间计算结果12。
步骤260:将1行中间计算结果复用重排为N行缓存数据;
将中间计算结果复用重排为N行缓存数据的方式可以是将中间计算结果分别向左移动i次以及向右移动N-1-i次,共得到N行缓存结果,i为小于等于N且大于等于0的整数。即,当i取值为0时,将中间计算结果连续向右移动N-1次,得到N行缓存数据;当i取值为N-1时,将中间计算结果连续向左移动N-1次,得到N行缓存数据;当i取值为小于N-1且大于0的整数时,既需要将中间计算结果向左移动,也需要向右移动。本申请对中间计算结果的复用重排方式不加以限定。
本实施例以中间计算结果为1行3列的s1、s2、s3为例,对该中间计算结果进行复用重排。
示例性的如图7所示,将中间计算结果12向右移动2次,分别得到移动1次后的中间计算结果13和移动2次后的中间计算结果14。
示例性的如图8所示,将中间计算结果12向左移动2次,分别得到移动1次后的中间计算结果16和移动2次后的中间计算结果17。
示例性的如图9所示,将中间计算结果分别向左和向右各移动1次,得到向左移动1次后的中间计算结果19和向右移动1次后的中间计算结果20。
步骤280:采用单一计算指令对缓存数据中目标列的矩阵元素进行计算,得到矩阵数据在单一计算指令下的计算结果;
目标列是中间计算结果中的N个矩阵元素在N行缓存数据中同时所在的列。例如,在图7、图8、图9中,目标列指的是s0、s1、s2同时存在的列。
计算目标列中的矩阵元素,得到矩阵数据在单一计算指令下的计算结果。例如,图7中通过对s0、s1、s2进行计算得到计算结果15;图8中通过对s0、s1、s2进行计算得到计算结果18;图9中通过对s0、s1、s2进行计算得到计算结果21。计算目标列中的矩阵元素,得到矩阵数据在单一计算指令下的计算结果,具体方法如下:
响应于图像算子对应的单一计算指令是求和指令,将目标列中的矩阵元素相加,得到计算结果;
响应于图像算子对应的单一计算指令是均值滤波指令,将目标列中的矩阵元素相加,再除以矩阵元素数量,得到计算结果;
响应于图像算子对应的单一计算指令是求最大值指令,对目标列中的矩阵元素求最大值,得到计算结果;
响应于图像算子对应的单一计算指令是求最小值指令,对目标列中的矩阵元素求最小值,得到计算结果;
响应于图像算子对应的单一计算指令是卷积指令,将目标列中的矩阵元素相加,再除以矩阵元素数量,得到计算结果。
步骤300:将计算结果输出为图像算子对矩阵数据的图像处理结果。
示例性的,以采用3行3列的图像算子对图像数据进行处理进行举例:
基于图像算子的矩阵尺寸3行3列,在待处理图像中读取矩阵数据,如图6中矩阵10所示。
当矩阵操作指令为求和指令时,对每列矩阵数据进行求和运算得到中间计算结果:s0=a0+b0+c0,s1=a1+b1+c1,s2=a2+b2+c2。将中间计算结果通过步骤220所述的任一复用重排方式得到N行缓存数据,确定s0、s1、s2同时所在的目标列,对目标列数据相加,得到矩阵数据的运算结果,即R0=s0+s1+s2,输出为图像算子对矩阵数据的图像处理结果。
当矩阵操作指令为均值滤波指令时,对每列矩阵数据进行求和运算得到中间计算结果:s0=a0+b0+c0,s1=a1+b1+c1,s2=a2+b2+c2。将中间计算结果通过步骤220所述的任一复用重排方式得到N行缓存数据,确定s0、s1、s2同时所在的目标列,对目标列数据相加后除以矩阵中元素的个数,得到矩阵数据的运算结果,即R0=(s0+s1+s2)/9,输出为图像算子对矩阵数据的图像处理结果。
当矩阵操作指令为求最大值指令时,对每列矩阵数据进行求最大值运算得到中间计算结果:s0=max(a0,b0,c0),s1=max(a1,b1,c1),s2=max(a2,b2,c2)。将中间计算结果通过步骤220所述的任一复用重排方式得到N行缓存数据,确定s0、s1、s2同时所在的目标列,对目标列求最大值运算得到矩阵数据的运算结果,即R0=max(s0,s1,s2),输出为图像算子对矩阵数据的图像处理结果。
当矩阵操作指令为求最小值指令时,对每列矩阵数据进行求最小值运算得到中间计算结果:s0=min(a0,b0,c0),s1=min(a1,b1,c1),s2=min(a2,b2,c2)。将中间计算结果通过步骤220所述的任一复用重排方式得到N行缓存数据,确定s0、s1、s2同时所在的目标列,对目标列求最小值运算得到矩阵数据的运算结果,即R0=min(s0,s1,s2),输出为图像算子对矩阵数据的图像处理结果。
当矩阵操作指令为卷积指令时,对每列矩阵数据进行卷积运算得到中间计算结果:s0=a0*k00+b0*k10+c0*k20,s1=a1*k01+b1*k11+c1*k21,s2=a2*k02+b2*k12+c2*k22。将中间计算结果通过步骤220所述的任一复用重排方式得到N行缓存数据,确定s0、s1、s2同时所在的目标列,对目标列数据相加后除以矩阵中元素的个数,得到矩阵数据的运算结果,即R0=(s0+s1+s2)/9,输出为图像算子对矩阵数据的图像处理结果。
综上所述,本实施例通过从图像数据中读取矩阵数据,分别计算矩阵数据中的每列矩阵元素,再对得到的中间计算结果进行复用重排,并计算复用重排后的数据,得到矩阵数据在单一计算指令下的计算结果。本实施例减少了对矩阵中单个元素数据的重复计算,提高了矩阵运算的并发度,提供了一种高效的图像数据的矩阵运算方法。
图10示出了本申请一个示例性实施例提供的图像数据的矩阵运算方法的流程图。本实施例以适用于arm处理器neon指令为例,对于uint8_t类型的数据,load/store的单指令多数据流(Single Instruction Multiple Data,SIMD)指令一次性读/写16个uint8_t数据。示例性的,该图像数据的矩阵运算方法由图3所示的计算机设备执行。该方法包括:
步骤320:基于图像算子的矩阵尺寸M行N列,在图像数据中读取矩阵数据;
本实施例以对于图像进行处理的AI应用场景为例,待处理图像按照像素点的大小以矩阵的形式存储于计算机设备中。在通过神经网络中的图像算子(比如卷积核)对图像进行处理时,需要读取图像算子所在区域各个像素点的值。
本实施例中进行运算的图像算子以3行3列的矩阵为例。
示例性的,图11中的黑色实线框表示图像原图,实线框外区域是为了适应矩阵运算溢出图像有效区域而扩展的括边区域。从图11中黑色实线框代表的图像原图的左上角开始运算,选取图像原图中一个像素点,将其作为3行3列的矩阵的中心点,读取该3行3列的矩阵数据。
示例性的,使用neon指令一次性读取图像原图中的16个数据,在读取的数据中获取3行3列的矩阵。例如,图12中的虚线框表示的即为一个3行3列的矩阵,矩阵中的元素分别为a0、a1、a2、b0、b1、b2、c0、c1、c2。
步骤340:采用图像算子对应的单一计算指令对矩阵数据中的每列数据分别计算,得到1行中间计算结果;
图像算子对应的单一计算指令确定为五种单一计算指令之一,根据单一计算指令对M行N列的矩阵数据中的每列数据分别进行计算,得到1行的中间计算结果,具体方法如下:
响应于图像算子对应的单一计算指令是求和指令,将矩阵数据中的每列矩阵元素相加;
响应于图像算子对应的单一计算指令是均值滤波指令,将矩阵数据中的每列矩阵元素相加;
响应于图像算子对应的单一计算指令是求最大值指令,对矩阵数据中的每列矩阵元素求最大值;
响应于图像算子对应的单一计算指令是求最小值指令,对矩阵数据中的每列矩阵元素求最小值;
响应于图像算子对应的单一计算指令是卷积指令,将矩阵数据中的每列矩阵元素乘上各自对应的系数值后相加。
对于寄存器中的其余各列以此类推,得到图12中表示中间计算结果的s行。
步骤362:采用基于滑动窗口的处理指令,将滑动窗口中的数据存储至第j个寄存器中,j的起始值为0;
本实施例以SIMD指令一次性读/写16个数据为例,因此窗口大小取16。
为了通过中间计算结果实现矩阵操作指令要求,需要对中间计算结果进行重排复用。采用滑窗的处理方式,将通过M行N列的矩阵获得的1行N列的中间计算结果中的各列数据排列至同一列,再通过单一计算指令得到最终的矩阵计算结果。滑窗处理的起始步骤,先确定一个窗口的起始位置,并将窗口数据放入寄存器t0中。
示例性的,选取窗口大小为16的滑动窗口,滑动窗口的起始位置位于1行N列的中间计算结果的起始点。将滑动窗口中的数据存储至初始寄存器t0。
步骤364:将滑动窗口进行滑动后,将滑动窗口中的数据存储至第j+1个寄存器中;
采用滑窗的处理方式,为了将通过M行N列的矩阵获得的1行N列的中间计算结果中的各列数据排列至同一列,从而实现矩阵操作指令的目的。该滑窗的处理方式,需要将滑动窗口移动至少N-1次。
示例性的,滑动方式可以是将滑动窗口从1行N列的中间计算结果的起始点开始,连续向左滑动N-1次;或者,将滑动窗口从1行N列的中间计算结果的起始点开始,连续向右滑动N-1次;再或者,将滑动窗口从1行N列的中间计算结果的起始点开始,连续向左滑动i次,以及从1行N列的中间计算结果的起始点开始,连续向右滑动N-1-i次,i是大于等于0且小于等于N-1的整数。
将滑动窗口进行滑动后,将滑动窗口中的数据存储至第j+1个寄存器中,并且更新j的值j=j+1,j的起始值为0。
将滑动窗口进行滑动的过程中,可能会涉及到超出矩阵运算范围的问题,可以将矩阵的边界进行扩充;或者,采用标量方法对矩阵进行计算;或者,跳过运算。
以图11为例,图11中的黑色粗实线框表示图像原图,黑色粗实线框外区域是为了适应矩阵运算溢出图像有效区域而扩展的括边区域,运算的起始位置位于黑色粗实线框的左上角,以对3行3列的矩阵通过滑窗处理方式进行运算为例,图像的尺寸远大于3*3。寄存器tcurr用于存放当前需要进行运算的区域的数值,寄存器tprev用于存放当前需要进行运算的区域的左侧相邻区域的数值,寄存器tnext用于存放当前需要进行运算的区域的右侧相邻区域的数值。在图11中的黑色粗实线框代表的图像原图内通过SIMD指令读取数据,放入寄存器tcurr,并分别向前、向后取连续的数据,分别放入寄存器tprev、寄存器tnext。
示例性的,在寄存器tcurr的起点位于图像原图的首列的情况下,跳过涉及寄存器tprev中数据所在列的计算。由于图像原图左侧不存在内容,即寄存器tprev涉及图11中斜向下条纹表示的1号区域,故寄存器tprev为空,无法计算得出结果,跳过该列运算。也即,当所计算的矩阵的中心点的列位置x小于等于该矩阵列数的一半时,由于寄存器tprev为空,所以无法得出结果,跳过该列运算。例如,图13中的寄存器t1行中的黑色实线框表示寄存器tprev中的最后一位数据sf,当寄存器tcurr的起点位于首列时,寄存器tprev为空,无法得出计算结果,即跳过第一列的运算。
示例性的,在寄存器tcurr的起点位于图像原图的首行或是末行的情况下,扩充矩阵的边界。也即,所计算的矩阵中心点的行位置y小于等于该矩阵行数大小的一半,或者,y大于等于图像高度减去该矩阵行数大小的一半时,矩阵的运算涉及图11中的图像上方斜方格条纹表示的2号区域和图像下方横线条纹表示的3号区域。此时,扩充矩阵的边界。扩充边界的方式可以预先定义,例如,边界范围内括边区域都为0;或者,边界区域内括边区域都为1;或者,括边区域的值与其相邻的矩阵内的像素点的大小相同。本申请对括边填充的方式不加以限定。
示例性的,在寄存器tcurr的起点位于4号区域且没有涉及到6号括边区域的情况下,不影响矩阵的运算。由于4号区域的宽度与SIMD指令进行一次读/写操作的数据数量相同,则寄存器tnext会涉及图9右侧灰色填充表示的5号区域和/或方格填充表示的6号区域的取值。由于图片本身存在括边区域,所以可以进行运算。例如,图13中t2寄存器行中的黑色实线框表示寄存器tnext中的第一位数据s0,该中间计算结果s0由寄存器tnext中的数据a0、b0、c0计算产生,而a0、b0、c0一定是在括边区域的范围内的,因此不影响矩阵的运算。
示例性的,在寄存器tcurr的起点位于4号区域且涉及到6号括边区域的情况下,或者,在寄存器tcurr的起点位于灰色填充表示的5号区域的情况下,采用标量的方式获得矩阵运算的结果,即直接对源数据进行运算。该情况中寄存器tnext起点位于图像括边之外的未知地址。如图14所示,寄存器tcurr中前4列为图像中的数据,第5列为括边区域的填充数据,得到中间计算结果s1至s5,对中间结果采用滑窗处理方式,在这种情况下只能得到第R1至R4,无法得到R5的结果。对于R5需要采用标量方式,即直接比较矩阵中源数据的大小。
示例性的,在图像的宽度为SIMD指令进行一次读/写操作的数据数量的整数倍的情况下,即图11中不存在5号tail区域,则对于tcurr中的最后一个数,采用标量的方式进行计算,即直接比较矩阵中源数据的大小。
步骤366a:判断当前寄存器是否为第N-1个寄存器;
判断当前存储器是否为第N-1个寄存器。若当前寄存器为第N-1个寄存器,则完成滑窗处理过程,执行步骤380;若当前存储器不是第N-1个存储器,则还需要重复步骤364,继续滑动窗口进行取值缓存。
步骤366b:重复步骤364,直至得到存储在N-1个寄存器中的N行缓存数据;
得到的N行缓存数据中,中间计算结果的N个矩阵元素同时存在的一列即为用于进行后续运算的目标列。
步骤380:采用单一计算指令对缓存数据中目标列的矩阵元素进行计算,
得到矩阵数据在单一计算指令下的计算结果;
目标列是中间计算结果中的N个矩阵元素在N行缓存数据中同时所在的列。
计算目标列中的矩阵元素,得到矩阵数据在单一计算指令下的计算结果,具体方法如下:
响应于图像算子操作指令是求和指令,将目标列中的矩阵元素相加,得到计算结果;
响应于图像算子对应的单一计算指令是均值滤波指令,将目标列中的矩阵元素相加,再除以矩阵元素数量,得到计算结果;
响应于图像算子对应的单一计算指令是求最大值指令,对目标列中的矩阵元素求最大值,得到计算结果;
响应于图像算子对应的单一计算指令是求最小值指令,对目标列中的矩阵元素求最小值,得到计算结果;
响应于图像算子对应的单一计算指令是卷积指令,将目标列中的矩阵元素相加,再除以矩阵元素数量,得到计算结果。
步骤400:将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。
示例性的如图15所示,以对3行3列的矩阵通过滑窗处理方式求最大值为例。选取大小为16的滑动窗口,初始位置的起点位于s行寄存器tcurr的起点处。将初始滑动窗口中的数据存储至寄存器t0中,即图15中,将寄存器tcurr中的16个数据存储至寄存器t0中。将滑动窗口从初始位置向右滑动一位,滑动后的窗口位置如图15中的黑色实线框所示。将滑动窗口中的数据存储至寄存器t1中,即将寄存器tcurr中的后15位数据和寄存器tnext中的第1位数据存储至寄存器t1。判断当前寄存器t1不是第N-1个寄存器,继续执行滑动窗口操作。将滑动窗口从初始位置向左滑动一位,将滑动窗口中的数据存储至寄存器t2中,即将寄存器tprev中的最后一位数据和寄存器tcurr中的前15位数据存储至寄存器t2。判断当前寄存器t2是第N-1个寄存器,确定目标列,采用单一计算指令对缓存数据中目标列的矩阵元素进行计算。对寄存器t0、t1、t2中的目标列求最大值,即可实现对3行3列的矩阵求最大值的指令。例如,通过对s0、s1、s2列求最大值得到的结果即为图12中虚线框代表矩阵的最大值。
示例性的,本实施例中展示的3行3列的图像算子进行矩阵运算的过程,也可以类推到5行5列、7行7列等小型图像算子。如上述实施例所示,在卷积核矩阵为3行3列的矩阵的情况下,通过滑动窗口将中间计算结果复用重排为3行缓存数据,则至多有2列非目标列的存储资源会被耗费;而在卷积核矩阵为5行5列的矩阵的情况下,通过滑动窗口将中间计算结果复用重排为5行缓存数据,则至多有4列非目标列的存储资源会被耗费;类推到卷积核矩阵为7行7列的矩阵的情况下,通过滑动窗口将中间计算结果复用重排为7行缓存数据,则至多有6列非目标列的存储资源会被耗费。由此可以看出,对于通道数越小的矩阵,耗费于非目标列的存储资源越少,因此本方法对小型图像算子的运算效率有显著的提升效果。
综上所述,本实施例通过分别计算矩阵数据中的每列数据,再对得到的中间计算结果进行滑窗处理,计算通过滑窗处理复用重排后的数据,得到矩阵数据的计算结果。本实施例通过滑窗处理的方式对得到的中间计算结果进行复用,结合SIMD指令一次性可得到多个矩阵的数据计算结果,减少了对矩阵中单个元素数据的重复计算,提高了矩阵运算的并发度,提供了一种高效的图像数据的矩阵运算方法。
图16示出了采用本方法进行图像数据的矩阵运算与采用常规方法进行图像数据的矩阵运算的耗时对比。对于Uint8_t类型的数据,选择3×3大小的图像算子对图像数据进行矩阵运算。对于不同大小的分辨率,采用本方法与采用OpenCV方法对比,得到的加速比大约在1.8到2.1之间,加速比是指采用OpenCV常规方法进行矩阵运算的耗时与采用本方法进行矩阵运算的耗时之比。可以看出本方法对图像数据的矩阵运算效率作出了大幅提升。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图17是本申请一个示例性实施例提供的一种图像数据的矩阵运算装置的结构框图。所述装置包括:
读取模块500,用于基于图像算子的矩阵尺寸M行N列,在所述图像数据中读取矩阵数据;
计算模块520,用于采用所述图像算子对应的单一计算指令对所述矩阵数据中的每列数据分别计算,得到1行中间计算结果;
复用模块540,用于将所述1行中间计算结果复用重排为N行缓存数据;
所述计算模块520,还用于采用所述单一计算指令对所述缓存数据中目标列的矩阵元素进行计算,得到所述矩阵数据在所述单一计算指令下的计算结果,所述目标列是所述中间计算结果中的N个矩阵元素在所述N行缓存数据中同时所在的列;
输出模块560,用于将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。
在一个可能的设计中,所述复用模块540,
用于采用基于滑动窗口的处理指令,将所述滑动窗口中的数据存储至第j个寄存器中,所述滑动窗口中的数据包含所述1行的中间计算结果的部分或全部,j的起始值为0;将所述滑动窗口进行滑动后,将所述滑动窗口中的数据存储至第j+1个寄存器中,所述滑动窗口中的数据包含所述1行的中间计算结果的部分或全部;用于重复上一步骤,直至得到存储在N个寄存器中的N行缓存数据。
在一个可能的设计中,所述处理指令是单指令多数据流指令,所述处理指令支持同时处理K个数据;
所述复用模块540,用于采用基于所述滑动窗口的处理指令,将所述滑动窗口中的K个数据存储至第j个寄存器中,所述滑动窗口中的数据包含所述1行的中间计算结果的部分或全部;将所述滑动窗口进行滑动后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中,所述滑动窗口中的数据包含所述1行的中间计算结果的部分或全部。
在一个可能的设计中,所述复用模块540,用于将所述滑动窗口左滑一位后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中;或,所述复用模块540,用于将所述滑动窗口右滑一位后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中。
在一个可能的设计中,在所述N行缓存数据中:存在第j行第i列的矩阵元素与第j+1行第i-1列的矩阵元素相同;和/或,存在第t行第i列的矩阵元素与第t-1行第i+1列的矩阵元素相同。
在一个可能的设计中,所述单一运算指令是均值滤波指令或卷积指令,所述计算模块520,用于将所述缓存数据中目标列的N个矩阵元素进行相加,得到矩阵元素和;将所述矩阵元素和除以矩阵元素数量,输出所述矩阵数据在所述单一计算指令下的计算结果;其中,所述矩阵元素数量等于M乘N。
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述各个方法实施例提供的图像数据的矩阵运算的方法。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,通信设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该通信设备执行上述方面所述的图像数据的矩阵运算的方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种图像数据的矩阵运算方法,其特征在于,所述方法包括:
基于图像算子的矩阵尺寸M行N列,在所述图像数据中读取矩阵数据;
采用所述图像算子对应的单一计算指令对所述矩阵数据中的每列数据分别计算,得到1行中间计算结果;
将所述1行中间计算结果复用重排为N行缓存数据;
采用所述单一计算指令对所述缓存数据中目标列的矩阵元素进行计算,得到所述矩阵数据在所述单一计算指令下的计算结果,所述目标列是所述中间计算结果中的N个矩阵元素在所述N行缓存数据中同时所在的列;
将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。
2.根据权利要求1所述的方法,其特征在于,所述将所述一行中间计算结果复用重排为N行缓存数据,包括:
采用基于滑动窗口的处理指令,将所述滑动窗口中的数据存储至第j个寄存器中,所述滑动窗口中的数据包含所述1行中间计算结果的部分或全部,j的起始值为0;
将所述滑动窗口进行滑动后,将所述滑动窗口中的数据存储至第j+1个寄存器中,所述滑动窗口中的数据包含所述1行中间计算结果的部分或全部;
重复上一步骤,直至得到存储在N个寄存器中的N行缓存数据。
3.根据权利要求2所述的方法,其特征在于,所述处理指令是单指令多数据流指令,所述处理指令支持同时处理K个数据;
所述采用基于滑动窗口的处理指令,将所述滑动窗口中的数据存储至第j个寄存器中,所述滑动窗口中的数据包含所述1行中间计算结果的部分或全部,j的起始值为0,包括:
采用基于所述滑动窗口的处理指令,将所述滑动窗口中的K个数据存储至第j个寄存器中,所述滑动窗口中的数据包含所述1行中间计算结果的部分或全部;
所述将所述滑动窗口进行滑动后,将所述滑动窗口中的数据存储至第j+1个寄存器中,所述滑动窗口中的数据包含所述1行中间计算结果的部分或全部,包括:
将所述滑动窗口进行滑动后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中,所述滑动窗口中的数据包含所述1行中间计算结果的部分或全部。
4.根据权利要求3所述的方法,其特征在于,所述将所述滑动窗口进行滑动后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中,包括:
将所述滑动窗口左滑一位后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中;
或,
将所述滑动窗口右滑一位后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中。
5.根据权利要求2至4任一所述的方法,其特征在于,在所述N行缓存数据中:
存在第j行第i列的矩阵元素与第j+1行第i-1列的矩阵元素相同;
和/或,
存在第t行第i列的矩阵元素与第t-1行第i+1列的矩阵元素相同。
6.根据权利要求1至4任一所述的方法,其特征在于,所述单一运算指令包括如下至少之一:
求和指令;
均值滤波指令;
求最大值指令;
求最小值指令;
卷积指令。
7.根据权利要求1至4任一所述的方法,其特征在于,所述单一运算指令是均值滤波指令或卷积指令,所述采用所述单一运算指令对所述缓存数据中目标列的矩阵元素进行计算,输出所述矩阵数据在所述单一计算指令下的计算结果,包括:
将所述缓存数据中目标列的N个矩阵元素进行相加,得到矩阵元素和;
将所述矩阵元素和除以矩阵元素数量,输出所述矩阵数据在所述单一计算指令下的计算结果;
其中,所述矩阵元素数量等于M乘N。
8.一种图像数据的矩阵运算装置,其特征在于,所述装置包括:
读取模块,用于基于图像算子的矩阵尺寸M行N列,在所述图像数据中读取矩阵数据;
计算模块,用于采用所述图像算子对应的单一计算指令对所述矩阵数据中的每列数据分别计算,得到1行中间计算结果;
复用模块,用于将所述1行中间计算结果复用重排为N行缓存数据;
所述计算模块,还用于采用所述单一计算指令对所述缓存数据中目标列的矩阵元素进行计算,得到所述矩阵数据在所述单一计算指令下的计算结果,所述目标列是所述中间计算结果中的N个矩阵元素在所述N行缓存数据中同时所在的列;
输出模块,用于将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。
9.根据权利要求8所述的装置,其特征在于,
所述复用模块,用于采用基于滑动窗口的处理指令,将所述滑动窗口中的数据存储至第j个寄存器中,所述滑动窗口中的数据包含所述1行的中间计算结果的部分或全部,j的起始值为0;将所述滑动窗口进行滑动后,将所述滑动窗口中的数据存储至第j+1个寄存器中,所述滑动窗口中的数据包含所述1行的中间计算结果的部分或全部;重复上一步骤,直至得到存储在N个寄存器中的N行缓存数据。
10.根据权利要求9所述的装置,其特征在于,所述处理指令是单指令多数据流指令,所述处理指令支持同时处理K个数据;
所述复用模块,用于采用基于所述滑动窗口的处理指令,将所述滑动窗口中的K个数据存储至第j个寄存器中,所述滑动窗口中的数据包含所述1行的中间计算结果的部分或全部;将所述滑动窗口进行滑动后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中,所述滑动窗口中的数据包含所述1行的中间计算结果的部分或全部。
11.根据权利要求10所述的装置,其特征在于,
所述复用模块,用于将所述滑动窗口左滑一位后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中;
或,
所述复用模块,用于将所述滑动窗口右滑一位后,将所述滑动窗口中的K个数据存储至第j+1个寄存器中。
12.根据权利要求9至11任一所述的装置,其特征在于,在所述N行缓存数据中:
存在第j行第i列的矩阵元素与第j+1行第i-1列的矩阵元素相同;
和/或,
存在第t行第i列的矩阵元素与第t-1行第i+1列的矩阵元素相同。
13.根据权利要求8至11任一所述的装置,其特征在于,所述单一运算指令是均值滤波指令或卷积指令,所述计算模块,用于将所述缓存数据中目标列的N个矩阵元素进行相加,得到矩阵元素和;将所述矩阵元素和除以矩阵元素数量,输出所述矩阵数据在所述单一计算指令下的计算结果;其中,所述矩阵元素数量等于M乘N。
14.一种计算机设备,其特征在于,所述设备包括处理器,与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行的所述程序指令时实现如权利要求1至7任一所述的图像数据的矩阵运算方法。
15.一种计算机可读存储介质,所述存储介质中存储有程序指令,其特征在于,所述程序指令被处理器执行时实现如权利要求1至7任一所述的图像数据的矩阵运算方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110349762.2A CN112991142B (zh) | 2021-03-31 | 2021-03-31 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
PCT/CN2022/082811 WO2022206556A1 (zh) | 2021-03-31 | 2022-03-24 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
EP22778739.7A EP4227886A4 (en) | 2021-03-31 | 2022-03-24 | MATRIX OPERATING METHOD AND APPARATUS FOR IMAGE DATA, APPARATUS AND STORAGE MEDIUM |
US17/976,185 US20230049471A1 (en) | 2021-03-31 | 2022-10-28 | Method and apparatus for operating image data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110349762.2A CN112991142B (zh) | 2021-03-31 | 2021-03-31 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112991142A CN112991142A (zh) | 2021-06-18 |
CN112991142B true CN112991142B (zh) | 2023-06-16 |
Family
ID=76338653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110349762.2A Active CN112991142B (zh) | 2021-03-31 | 2021-03-31 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230049471A1 (zh) |
EP (1) | EP4227886A4 (zh) |
CN (1) | CN112991142B (zh) |
WO (1) | WO2022206556A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112862725B (zh) * | 2021-03-12 | 2023-10-27 | 上海壁仞智能科技有限公司 | 用于计算的方法、计算设备和计算机可读存储介质 |
CN112991142B (zh) * | 2021-03-31 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
CN114061591B (zh) * | 2021-11-18 | 2022-07-12 | 东南大学 | 一种基于滑动窗数据回溯的等值线匹配方法 |
CN114565501B (zh) * | 2022-02-21 | 2024-03-22 | 格兰菲智能科技有限公司 | 用于卷积运算的数据加载方法及其装置 |
CN116740262A (zh) * | 2022-03-04 | 2023-09-12 | 华为技术有限公司 | 数据处理方法及装置、电子设备和存储介质 |
CN115859011B (zh) * | 2022-11-18 | 2024-03-15 | 上海天数智芯半导体有限公司 | 矩阵运算方法、装置及单元、电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06342450A (ja) * | 1993-06-01 | 1994-12-13 | Fujitsu Ltd | 行列乗算装置 |
WO2009037684A2 (en) * | 2007-09-19 | 2009-03-26 | Provost Fellows And Scholars Of The College Of The Holy And Undivided Trinity Of Queen Elizabeth Near Dublin | Sparse matrix by vector multiplication |
CN109948790A (zh) * | 2019-03-27 | 2019-06-28 | 苏州浪潮智能科技有限公司 | 一种神经网络处理方法、装置、设备及存储介质 |
CN110147347A (zh) * | 2019-03-18 | 2019-08-20 | 腾讯科技(深圳)有限公司 | 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质 |
CN110246078A (zh) * | 2019-05-31 | 2019-09-17 | 北京航空航天大学 | 一种基于嵌入式gpu和卷积计算的图像处理方法和装置 |
CN110415157A (zh) * | 2018-04-26 | 2019-11-05 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
KR20190128795A (ko) * | 2018-05-09 | 2019-11-19 | 에스케이하이닉스 주식회사 | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 |
CN110580324A (zh) * | 2019-07-23 | 2019-12-17 | 珠海格力电器股份有限公司 | 矩阵运算方法、装置、计算机设备和存储介质 |
CN112069460A (zh) * | 2020-09-18 | 2020-12-11 | Oppo广东移动通信有限公司 | 数据处理方法、装置以及电子设备 |
CN112149694A (zh) * | 2020-08-28 | 2020-12-29 | 特斯联科技集团有限公司 | 一种基于卷积神经网络池化模块的图像处理方法、系统、存储介质及终端 |
CN112446007A (zh) * | 2019-08-29 | 2021-03-05 | 上海华为技术有限公司 | 一种矩阵运算方法、运算装置以及处理器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000175043A (ja) * | 1998-12-08 | 2000-06-23 | Canon Inc | 画像処理装置及び画像処理方法 |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
GB2470780B (en) * | 2009-06-05 | 2014-03-26 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing a predetermined rearrangement operation |
CN103368890B (zh) * | 2012-04-01 | 2016-04-06 | 京信通信系统(中国)有限公司 | 一种信号处理方法及装置 |
JP5951570B2 (ja) * | 2013-09-13 | 2016-07-13 | 株式会社東芝 | 行列演算装置 |
CN109992743B (zh) * | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
CN110263909B (zh) * | 2018-03-30 | 2022-10-28 | 腾讯科技(深圳)有限公司 | 图像识别方法及装置 |
CN111582467B (zh) * | 2020-05-14 | 2023-12-22 | 上海商汤智能科技有限公司 | 人工智能加速器和电子设备 |
CN112991142B (zh) * | 2021-03-31 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
-
2021
- 2021-03-31 CN CN202110349762.2A patent/CN112991142B/zh active Active
-
2022
- 2022-03-24 EP EP22778739.7A patent/EP4227886A4/en active Pending
- 2022-03-24 WO PCT/CN2022/082811 patent/WO2022206556A1/zh unknown
- 2022-10-28 US US17/976,185 patent/US20230049471A1/en active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06342450A (ja) * | 1993-06-01 | 1994-12-13 | Fujitsu Ltd | 行列乗算装置 |
WO2009037684A2 (en) * | 2007-09-19 | 2009-03-26 | Provost Fellows And Scholars Of The College Of The Holy And Undivided Trinity Of Queen Elizabeth Near Dublin | Sparse matrix by vector multiplication |
CN110415157A (zh) * | 2018-04-26 | 2019-11-05 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
KR20190128795A (ko) * | 2018-05-09 | 2019-11-19 | 에스케이하이닉스 주식회사 | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 |
CN110147347A (zh) * | 2019-03-18 | 2019-08-20 | 腾讯科技(深圳)有限公司 | 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质 |
CN109948790A (zh) * | 2019-03-27 | 2019-06-28 | 苏州浪潮智能科技有限公司 | 一种神经网络处理方法、装置、设备及存储介质 |
CN110246078A (zh) * | 2019-05-31 | 2019-09-17 | 北京航空航天大学 | 一种基于嵌入式gpu和卷积计算的图像处理方法和装置 |
CN110580324A (zh) * | 2019-07-23 | 2019-12-17 | 珠海格力电器股份有限公司 | 矩阵运算方法、装置、计算机设备和存储介质 |
CN112446007A (zh) * | 2019-08-29 | 2021-03-05 | 上海华为技术有限公司 | 一种矩阵运算方法、运算装置以及处理器 |
CN112149694A (zh) * | 2020-08-28 | 2020-12-29 | 特斯联科技集团有限公司 | 一种基于卷积神经网络池化模块的图像处理方法、系统、存储介质及终端 |
CN112069460A (zh) * | 2020-09-18 | 2020-12-11 | Oppo广东移动通信有限公司 | 数据处理方法、装置以及电子设备 |
Non-Patent Citations (3)
Title |
---|
基于Intel Xeon Phi的稀疏矩阵向量乘性能优化;张爱民;安虹;姚文军;梁伟浩;江霞;李丰;;小型微型计算机系统(04);全文 * |
通用矩阵乘(GEMM)优化算法;黎明灰烬;《https://zhenhuaw.me/blog/2019/gemm-optimization.html》;全文 * |
通用矩阵乘法GEMM实现与优化;Roger;《https://zhuanlan.zhihu.com/p/315060174》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP4227886A4 (en) | 2024-07-03 |
WO2022206556A1 (zh) | 2022-10-06 |
US20230049471A1 (en) | 2023-02-16 |
EP4227886A1 (en) | 2023-08-16 |
CN112991142A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112991142B (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
CN111758107B (zh) | 用于基于硬件的池化的系统和方法 | |
US10642622B2 (en) | Arithmetic processing device and control method of the arithmetic processing device | |
CN110989920B (zh) | 能量高效的存储器系统和方法 | |
CN109885407B (zh) | 数据处理方法和装置、电子设备、存储介质 | |
US7409528B2 (en) | Digital signal processing architecture with a wide memory bandwidth and a memory mapping method thereof | |
EP2997539B1 (en) | Method and device for processing input image data | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
JP7419574B2 (ja) | 膨張畳み込み加速演算方法及び装置 | |
CN111681165A (zh) | 图像处理方法、装置、计算机设备和计算机可读存储介质 | |
CN108346131A (zh) | 一种数字图像缩放方法、装置及显示设备 | |
CN110796236A (zh) | 多样本多通道卷积神经网络池化的向量化实现方法 | |
CN112633470B (zh) | 优化神经网络卷积残差结构的方法、系统、设备及介质 | |
CN112712457B (zh) | 数据处理方法以及人工智能处理器 | |
US7483937B2 (en) | Parallel processing method for inverse matrix for shared memory type scalar parallel computer | |
CN112862725B (zh) | 用于计算的方法、计算设备和计算机可读存储介质 | |
CN110557522A (zh) | 一种去除视频抖动的方法及装置 | |
EP1874031A1 (en) | Method and apparatus capable of producing fm lattice points in high speed | |
CN110087088B (zh) | 一种基于运动估计的数据存储方法、终端设备及存储介质 | |
JP4156538B2 (ja) | 行列演算装置 | |
CN116721006B (zh) | 特征图处理方法和装置 | |
JP3860545B2 (ja) | 画像処理装置及び画像処理方法 | |
US20220269752A1 (en) | Execution method for convolution computation | |
CN112184565B (zh) | 一种多窗口串行的图像锐化方法 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40045882 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |