图像数据的矩阵运算方法、装置、设备及存储介质制造方法及图纸

技术编号:28944196 阅读:13 留言:0更新日期:2021-06-18 21:54
本申请公开了一种图像数据的矩阵运算方法、装置、设备及存储介质,涉及计算机技术领域。所述方法包括:基于图像算子的矩阵尺寸M行N列,在所述图像数据中读取矩阵数据;采用所述图像算子对应的单一计算指令对所述矩阵数据中的每列数据分别计算,得到1行中间计算结果;将所述1行中间计算结果复用重排为N行缓存数据;采用所述单一计算指令对所述缓存数据中目标列的矩阵元素进行计算,得到所述矩阵数据在所述单一计算指令下的计算结果;将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。本申请提高了对于图像数据进行矩阵运算的效率。

【技术实现步骤摘要】
图像数据的矩阵运算方法、装置、设备及存储介质
本申请涉及计算机
,特别涉及一种图像数据的矩阵运算方法、装置、设备及存储介质。
技术介绍
在使用神经网络中的神经元对图像数据进行计算的场景中,由于神经元均为矩阵形式的算子,因此计算机需要将图像数据以矩阵的形式进行存储和计算。由于矩阵的运算过程往往计算量很大,时延严重,因此需要对矩阵运算进行优化来提升运算效率。相关技术中提供有针对矩阵数据重排的优化方法,对源矩阵数据进行重排操作,例如将数据排为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.一种图像数据的矩阵运算方法,其特征在于,所述方法包括:/n基于图像算子的矩阵尺寸M行N列,在所述图像数据中读取矩阵数据;/n采用所述图像算子对应的单一计算指令对所述矩阵数据中的每列数据分别计算,得到1行中间计算结果;/n将所述1行中间计算结果复用重排为N行缓存数据;/n采用所述单一计算指令对所述缓存数据中目标列的矩阵元素进行计算,得到所述矩阵数据在所述单一计算指令下的计算结果,所述目标列是所述中间计算结果中的N个矩阵元素在所述N行缓存数据中同时所在的列;/n将所述计算结果输出为所述图像算子对所述矩阵数据的图像处理结果。/n

【技术特征摘要】
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个矩阵元素进行相加,得到矩阵元素和;
将所述矩阵...

【专利技术属性】
技术研发人员:陈仲华李峰刘程浩刘毅艾通李昊沅陈其锋
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1