CN110580324B - 图像矩阵运算方法、装置、计算机设备和存储介质 - Google Patents
图像矩阵运算方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110580324B CN110580324B CN201910668740.5A CN201910668740A CN110580324B CN 110580324 B CN110580324 B CN 110580324B CN 201910668740 A CN201910668740 A CN 201910668740A CN 110580324 B CN110580324 B CN 110580324B
- Authority
- CN
- China
- Prior art keywords
- matrix
- convolution
- row
- column
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及一种图像矩阵运算方法、装置、计算机设备和存储介质。所述方法包括:获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;输入卷积核和卷积矩阵至卷积加速器,输出卷积值;根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果,所述乘积矩阵为。通过将矩阵乘法运算转换成卷积运算,采用卷积加速器实现矩阵乘积运算,在保证运算速率的同时,降低硬件成本。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种图像矩阵运算方法、装置、计算机设备和存储介质。
背景技术
随着计算机视觉的不断发展,数字图像处理技术也随之发展。数字图像处理技术中,图像采用矩阵方式存储,故矩阵运算为图像数据处理技术中的一个重要环节,而随着矩阵数据越清晰,要求占有的内存空间越大,计算矩阵时,矩阵运算成为相关算法的一个较大的瓶颈,特别是在嵌入式平台中。
现有技术为了快速的实现矩阵运算通过添加数字信号处理器(digital signalprocessing,DSP)实现,DSP是用数值计算的方式对信号进行加工的理论和技术,DSP能够实现矩阵运算,但是价格昂贵,成本高。
发明内容
为了解决上述技术问题,本申请提供了一种图像矩阵运算方法、装置、计算机设备和存储介质。
第一方面,本申请提供了一种图像矩阵运算方法,包括:
获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;
获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;
输入卷积核和卷积矩阵至卷积加速器,输出卷积值;
根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
第二方面,本申请提供了一种图像矩阵运算装置,包括:
卷积核获取模块,用于获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;
卷积矩阵获取模块,用于获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;
卷积处理模块,用于输入卷积核和卷积矩阵至卷积加速器,输出卷积值;
数据写入模块,用于根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;
获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;
输入卷积核和卷积矩阵至卷积加速器,输出卷积值;
根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;
获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;
输入卷积核和卷积矩阵至卷积加速器,输出卷积值;
根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
上述图像矩阵运算方法、装置、计算机设备和存储介质,所述方法包括:获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;输入卷积核和卷积矩阵至卷积加速器,输出卷积值;根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。通过将矩阵乘法运算转换成卷积运算,采用卷积加速器实现矩阵乘积运算,在保证运算速率的同时,降低硬件成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中图像矩阵运算方法的应用环境图;
图2为一个实施例中图像矩阵运算方法的流程示意图;
图3为一个实施例中矩阵运算的示意图;
图4为一个实施例中矩阵运行转卷积运算的示意图;
图5为一个实施例中图像矩阵运算装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为一个实施例中图像矩阵运算方法的应用环境图。参照图1,该图像矩阵运算方法应用于图像矩阵运算系统。该图像矩阵运算系统包括中央处理器110和卷积加速器120。中央处理器110和卷积加速器120通过总线连接。其中,中央处理器110(CentralProcessing Unit,CPU)和卷积加速器120可以采用常规的CPU和卷积加速器。
如图2所示,在一个实施例中,提供了一种图像矩阵运算方法。本实施例主要以该方法应用于上述图1中的矩阵运算系统。参照图2,该图像矩阵运算方法具体包括如下步骤:
步骤S201,获取根据第一矩阵中任意一行的矩阵元素生成的卷积核。
具体地,卷积核包含行标识,行标识是指第一矩阵的行标识,如根据第一矩阵的第一行的矩阵元素生成的卷积核,卷积核携带的行标识为第一行。卷积核的行值和列值相同,行值和列值分别是指卷积核中有多少行和多少列,如卷积核的函数值和列值为3,则卷积核尺寸为3*3,表示有3行和3列。卷积核中的元素的数量大于或等于第一矩阵中每一行的矩阵元素的数量,只有大于或等于才能将第一矩阵中的任意一行矩阵元素的写入。
在一个实施例中,在步骤S201之前,还包括:计算第一矩阵的列值的算数平方根,根据算数平方根计算卷积核的行值和列值,行值和列值相同。
具体地,获取第一矩阵的列值,第一矩阵中每一行中的矩阵元素的数量等于第一矩阵的列值。计算第一矩阵的列值的开方,得到算数平方根,根据算数平方根确定卷积核的行值和列值。计算得到算数平方根后,可以直接将算数平方根作为卷积核的行值和列值,也可以对算数平方根加上一个整数或取整等等后的值作为卷积核的行值和列值。
在一个实施例中,根据算数平方根计算卷积核的行值和列值,包括:判断算数平方根是否为整数,当算数平方根为整数时,将算数平方根作为卷积核的列值,当算数平方根不是整数时,对算数平方根向上取整,得到取整值,将取整值作为卷积核的列值,其中,取整值大于算数平方根。
具体地,判断算数平方根是否为整数,当算数平方根为整数时,卷积核的行值和列值等于算数平方根,即卷积核中的元素的数量为行值和列值的乘积,与第一矩阵的列值相同。若算数平方根不是整数,为了卷积核中可以容纳下第一矩阵的每行的矩阵元素,对算数平方根向上取整,如15的算数平方根为3.8729,向上取整得到整数值为4,则卷积核的行值和列值为4。
在一个实施例中,步骤S201,包括:根据卷积核的行值和列值生成初始卷积核,按照预设写入顺序将第一矩阵中任意一行的矩阵元素写入初始卷积核,得到卷积核。
具体地,初始卷积核是根据行值和列值初始化得到的,初始卷积核中的元素可以任意设定,如可以设置卷积核中的元素全部0、1或其他数值等等。预设写入顺序是预先定义的写入顺序,如按照行写入或列写入、写入的第一元素的位置等等都可以自定义。按照预设写入顺序,将第一矩阵中的任意一行的矩阵元素的写入初始卷积核,得到卷积核。
步骤S202,获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵。
在本具体实施例中,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同。
具体地,第二矩阵和第一矩阵可以为同一个矩阵也可以为不同的矩阵。第二矩阵的行值和第一矩阵的列值相同,即第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同。如第一矩阵为M*S,则第二矩阵为S*N。第一矩阵的列值和第二矩阵的行值均为S。卷积矩阵包含列标识,列标识是指第二矩阵的列标识,如根据第二矩阵的第三列的矩阵元素生成的卷积核,卷积矩阵携带的列标识为第一列。卷积矩阵中的元素的数量大于或等于第二矩阵中每一列的矩阵元素的数量。写入第二矩阵中每一列的矩阵元素至卷积矩阵,得到卷积矩阵。
在一个实施例中,步骤S202,包括:根据卷积矩阵的行值和列值生成初始卷积矩阵,按照预设写入顺序将第二矩阵中任意一行的矩阵元素写入初始卷积矩阵,得到卷积矩阵。
具体地,初始卷积矩阵是根据行值和列值初始化得到的,初始卷积矩阵中的元素可以任意设定。预设写入顺序与卷积核的预设写入顺序为相同的顺序。按照预设写入顺序,将第二矩阵中的任意一列的矩阵元素的写入初始卷积矩阵,得到卷积矩阵。
步骤S203,输入卷积核和卷积矩阵至卷积加速器,输出卷积值。
步骤S204,根据行标识和列标识写入卷积值至乘积矩阵。
在本具体实施例中,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
具体地,卷积加速器用于实现卷积运算,卷积运算计算卷积核中值的各个元素与对应的矩阵中的矩阵元素乘积的和,将和值作为卷积值。卷积加速器具有高性能,低功耗的优点。根据卷积核的行标识和卷积矩阵的列标识写入卷积值至对应乘积矩阵的对应位置,将根据第一矩阵生成的各个卷积核和根据第二矩阵生成的各个卷积矩阵进行卷积运算,得到第一矩阵和第二矩阵的乘积矩阵中的各个位置的矩阵元素,各个位置的矩阵元素为对应的卷积值,按照各个卷积核的行标识和各个卷积矩阵的列标识,写入各个卷积值至乘积矩阵中对应的位置。如第一行生成的卷积核和第二列生成卷积矩阵,写入的位置为乘积矩阵的第一行和第二列。
在一个实施例中,步骤S203,包括:计算卷积核中的各个核元素与对应的卷积矩阵的矩阵元素的乘积值,对各个乘积值的求和,得到求和结果,将求和结果作为卷积值。
在本实施例中,步骤S204,包括:写入卷积值至乘积矩阵中位于行标识和列标识对应的位置。
具体地,卷积核中包含多个核元素,计算各个核元素和对应的卷积矩阵中的矩阵元素的乘积值,计算卷积核中的每个核元素对应的乘积值的和,得到卷积核和卷积矩阵的卷积值。将卷积值写入乘积矩阵中行标识和列标识对应的位置。
上述图像矩阵运算方法,包括:获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;输入卷积核和卷积矩阵至卷积加速器,输出卷积值;根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。通过将矩阵乘法运算转换成卷积运算,采用卷积加速器实现矩阵乘积运算,在保证运算速率的同时,降低硬件成本。由于卷积加速器的功耗相对低,且卷积加速器能够快速的实现卷积运算。
在一个实施例中,终端上搭载多个卷积加速器,获取各个卷积加速器的预设负载,根据预设分配规则、各个卷积加速器的预设负载和卷积核的数量计算各个卷积加速器的真实负载,按照各个卷积加速器的真实负载输入卷积核和对应的卷积矩阵。
具体地,终端上可以搭载一个或多个卷积加速器,当存在多个卷积加速器时,获取各个卷积加速器的预设负载,预设负载是指卷积加速器的最大负载。预设分配规则为各个卷积加速器的工作优先级别和工作状态,其中工作状态和优先级别可以根据需求自定义。根据预设分配规则、各个卷积加速器的预设负载和卷积核的数量的确定各个卷积加速器的真实负载,即工作时真实的负载,按照各个卷积加速器的真实负载输入卷积核和对应的卷积矩阵。通过负载和优先级别确定各个卷积加速器的真实负载,提高运算性能。
在一个具体的实施例中,设第一矩阵为矩阵A,第一矩阵的尺寸为m*s,第二矩阵为矩阵B,第二矩阵的尺寸为s*n,第一矩阵和第二矩阵的乘积矩阵为矩阵C,乘积矩阵的尺寸为m*n。第一矩阵和第二矩阵的乘积运算过程,如图3所示,图3为矩阵的运算示意图。矩阵C中的Cij=Ai1*B1j+Ai2*B2j+...+Ais*Bsj,其中Ai1表示矩阵A中的第i行第1列的矩阵元素,同理Ais,表示矩阵A中的第i行第s列的矩阵元素。B1j表示矩阵B中的第1行第j列的矩阵元素,同理Bsj表示矩阵B中的第s行第j列的矩阵元素。参照图4,根据矩阵A的第i行生成的卷积核A’,根据矩阵B的第j列生成的卷积矩阵B’,其中卷积核A’和卷积矩阵B’均为P*P的矩阵。采用卷积加速器计算卷积核A’和卷积矩阵B’的卷积值Cij。
上述矩形运算方法,通过把矩阵乘法运算转换为若干卷积运算,利用卷积硬件加速器计算若干个卷积运算后,整合运算结果为矩阵乘法所需的结果。卷积神经网络加速器比DSP成本低,可以有效降低硬件成本,在同时需要卷积加速和矩阵加速的方案中,可以只添加卷积硬件加速器,而不需要DSP。
图2为一个实施例中图像矩阵运算方法的流程示意图。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种图像矩阵运算装置200,包括:
卷积核获取模块201,用于获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识。
卷积矩阵获取模块202,用于获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同。
卷积处理模块203,用于输入卷积核和卷积矩阵至卷积加速器,输出卷积值。
数据写入模块204,用于根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
在一个实施例中,上述图像矩阵运算装置200,还包括:
卷积核行列确定模块,用于计算第一矩阵的列值的算数平方根,根据算数平方根计算卷积核的行值和列值,行值和列值相同。
在一个实施例中,卷积核行列确定模块具体用于判断算数平方根是否为整数,当算数平方根为整数时,将算数平方根作为卷积核的列值,当算数平方根不是整数时,对算数平方根向上取整,得到取整值,将取整值作为卷积核的列值,取整值大于算数平方根。
在一个实施例中,卷积核获取模块201具体用于根据卷积核的行值和列值生成初始卷积核,按照预设写入顺序将第一矩阵中任意一行的矩阵元素写入初始卷积核,得到卷积核。
在一个实施例中,卷积矩阵获取模块202具体用于根据卷积矩阵的行值和列值生成初始卷积矩阵;按照预设写入顺序将第二矩阵中任意一行的矩阵元素写入初始卷积矩阵,得到卷积矩阵,卷积核和卷积矩阵具有相同的维度信息。
在一个实施例中,卷积计算模块203具体用于计算卷积核中的各个核元素与对应的卷积矩阵的矩阵元素的乘积值,对各个乘积值的求和,得到求和结果,将求和结果作为卷积值。
数据写入模块204具体用于写入卷积值至乘积矩阵中位于行标识和列标识对应的位置。
在一个实施例中,上述图像矩阵运算装置,还包括:
负载计算模块,用于获取各个卷积加速器的预设负载,根据预设分配规则、各个卷积加速器的预设负载和卷积核的数量计算各个卷积加速器的真实负载。
卷积处理模块203,具体用于按照各个卷积加速器的真实负载输入卷积核和对应的卷积矩阵。
图6示出了一个实施例中计算机设备的内部结构图。该计算机设备具体。如图6所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现图像矩阵运算方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行图像矩阵运算方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的图像矩阵运算装置可以实现为一种计算机程序的形式,计算机程序可在如图6所示的计算机设备上运行。计算机设备的存储器中可存储组成该图像矩阵运算装置的各个程序模块,比如,图5所示的卷积核获取模块201、卷积矩阵获取模块202、卷积处理模块203和数据写入模块204。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的图像矩阵运算方法中的步骤。
例如,图6所示的计算机设备可以通过如图5所示的图像矩阵运算装置中的卷积核获取模块201执行获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识。计算机设备可以通过卷积矩阵获取模块202执行获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同。计算机设备可以通过卷积处理模块203执行输入卷积核和卷积矩阵至卷积加速器,输出卷积值。计算机设备可以通过数据写入模块204执行根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;输入卷积核和卷积矩阵至卷积加速器,输出卷积值;根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
在一个实施例中,获取根据第一矩阵中任意一行的矩阵元素生成的卷积核之前,处理器执行计算机程序时还实现以下步骤:计算第一矩阵的列值的算数平方根;根据算数平方根计算卷积核的行值和列值,行值和列值相同。
在一个实施例中,根据算数平方根计算卷积核的行值和列值,包括:判断算数平方根是否为整数;当算数平方根为整数时,将算数平方根作为卷积核的列值;当算数平方根不是整数时,对算数平方根向上取整,得到取整值,将取整值作为卷积核的列值,取整值大于算数平方根。
在一个实施例中,获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,包括:根据卷积核的行值和列值生成初始卷积核;按照预设写入顺序将第一矩阵中任意一行的矩阵元素写入初始卷积核,得到卷积核。
在一个实施例中,卷积核和卷积矩阵具有相同的维度信息,获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,包括:根据卷积矩阵的行值和列值生成初始卷积矩阵;按照预设写入顺序将第二矩阵中任意一行的矩阵元素写入初始卷积矩阵,得到卷积矩阵。
在一个实施例中,输入卷积核和卷积矩阵至卷积加速器,输出卷积值,包括:计算卷积核中的各个核元素与对应的卷积矩阵的矩阵元素的乘积值,对各个乘积值的求和,得到求和结果,将求和结果作为卷积值;根据行标识和列标识写入卷积值至乘积矩阵,包括:写入卷积值至乘积矩阵中位于行标识和列标识对应的位置。
在一个实施例中,卷积加速器包含多个,处理器执行计算机程序时还实现以下步骤:获取各个卷积加速器的预设负载;根据预设分配规则、各个卷积加速器的预设负载和卷积核的数量计算各个卷积加速器的真实负载;按照各个卷积加速器的真实负载输入卷积核和对应的卷积矩阵。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,卷积核包含行标识;获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,卷积矩阵包含列标识,第一矩阵的每行的矩阵元素的数量和第二矩阵的每列的矩阵元素的数量相同;输入卷积核和卷积矩阵至卷积加速器,输出卷积值;根据行标识和列标识写入卷积值至乘积矩阵,乘积矩阵用于存放第一矩阵与第二矩阵的乘积结果。
在一个实施例中,获取根据第一矩阵中任意一行的矩阵元素生成的卷积核之前,计算机程序被处理器执行时还实现以下步骤:计算第一矩阵的列值的算数平方根;根据算数平方根计算卷积核的行值和列值,行值和列值相同。
在一个实施例中,根据算数平方根计算卷积核的行值和列值,包括:判断算数平方根是否为整数;当算数平方根为整数时,将算数平方根作为卷积核的列值;当算数平方根不是整数时,对算数平方根向上取整,得到取整值,将取整值作为卷积核的列值,取整值大于算数平方根。
在一个实施例中,获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,包括:根据卷积核的行值和列值生成初始卷积核;按照预设写入顺序将第一矩阵中任意一行的矩阵元素写入初始卷积核,得到卷积核。
在一个实施例中,卷积核和卷积矩阵具有相同的维度信息,获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,包括:根据卷积矩阵的行值和列值生成初始卷积矩阵;按照预设写入顺序将第二矩阵中任意一行的矩阵元素写入初始卷积矩阵,得到卷积矩阵。
在一个实施例中,输入卷积核和卷积矩阵至卷积加速器,输出卷积值,包括:计算卷积核中的各个核元素与对应的卷积矩阵的矩阵元素的乘积值,对各个乘积值的求和,得到求和结果,将求和结果作为卷积值;根据行标识和列标识写入卷积值至乘积矩阵,包括:写入卷积值至乘积矩阵中位于行标识和列标识对应的位置。
在一个实施例中,卷积加速器包含多个,计算机程序被处理器执行时还实现以下步骤:获取各个卷积加速器的预设负载;根据预设分配规则、各个卷积加速器的预设负载和卷积核的数量计算各个卷积加速器的真实负载;按照各个卷积加速器的真实负载输入卷积核和对应的卷积矩阵。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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 (9)
1.一种图像矩阵运算方法,其特征在于,应用于图像矩阵运算系统,所述图像矩阵运算系统包括中央处理器和卷积加速器,所述方法包括:
获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,所述卷积核包含行标识;
获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,所述卷积矩阵包含列标识,所述第一矩阵的每行的矩阵元素的数量和所述第二矩阵的每列的矩阵元素的数量相同;
输入所述卷积核和所述卷积矩阵至所述卷积加速器,输出卷积值;
当所述卷积加速器包含多个时,获取各个所述卷积加速器的预设负载,根据预设分配规则、各个所述卷积加速器的预设负载和所述卷积核的数量计算各个所述卷积加速器的真实负载;
其中,所述输入所述卷积核和所述卷积矩阵至卷积加速器,包括:按照各个所述卷积加速器的真实负载输入所述卷积核和对应的卷积矩阵;
根据所述行标识和所述列标识写入所述卷积值至乘积矩阵,所述乘积矩阵用于存放所述第一矩阵与所述第二矩阵的乘积结果。
2.根据权利要求1所述的方法,其特征在于,所述获取根据第一矩阵中任意一行的矩阵元素生成的卷积核之前,还包括:
计算所述第一矩阵的列值的算数平方根;
根据所述算数平方根计算所述卷积核的行值和列值,所述行值和所述列值相同。
3.根据权利要求2所述的方法,其特征在于,所述根据所述算数平方根计算所述卷积核的行值和列值,包括:
判断所述算数平方根是否为整数;
当所述算数平方根为整数时,将所述算数平方根作为所述卷积核的列值;
当所述算数平方根不是整数时,对所述算数平方根向上取整,得到取整值,将所述取整值作为所述卷积核的列值,所述取整值大于所述算数平方根。
4.根据权利要求2所述的方法,其特征在于,所述获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,包括:
根据所述卷积核的行值和列值生成初始卷积核;
按照预设写入顺序将第一矩阵中任意一行的矩阵元素写入所述初始卷积核,得到所述卷积核。
5.根据权利要求4所述的方法,其特征在于,所述卷积核和所述卷积矩阵具有相同的维度信息,所述获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,包括:
根据所述卷积矩阵的行值和列值生成初始卷积矩阵;
按照所述预设写入顺序将第二矩阵中任意一行的矩阵元素写入所述初始卷积矩阵,得到所述卷积矩阵。
6.根据权利要求5所述的方法,其特征在于,所述输入所述卷积核和所述卷积矩阵至卷积加速器,输出卷积值
计算所述卷积核中的各个核元素与对应的所述卷积矩阵的矩阵元素的乘积值,对各个所述乘积值的求和,得到求和结果,将所述求和结果作为所述卷积值;
所述根据所述行标识和所述列标识写入所述卷积值至乘积矩阵,包括:
写入所述卷积值至所述乘积矩阵中位于所述行标识和所述列标识对应的位置。
7.一种图像矩阵运算装置,其特征在于,所述装置包括:
卷积核获取模块,用于获取根据第一矩阵中任意一行的矩阵元素生成的卷积核,所述卷积核包含行标识;
卷积矩阵获取模块,用于获取根据第二矩阵中任意一列的矩阵元素生成的卷积矩阵,所述卷积矩阵包含列标识,所述第一矩阵的每行的矩阵元素的数量和所述第二矩阵的每列的矩阵元素的数量相同;
卷积处理模块,用于输入所述卷积核和所述卷积矩阵至卷积加速器,输出卷积值;
负载计算模块,用于当所述卷积加速器包含多个时,获取各个所述卷积加速器的预设负载,根据预设分配规则、各个所述卷积加速器的预设负载和所述卷积核的数量计算各个所述卷积加速器的真实负载;
所述卷积处理模块,用于按照各个所述卷积加速器的真实负载输入所述卷积核和对应的卷积矩阵;
数据写入模块,用于根据所述行标识和所述列标识写入所述卷积值至乘积矩阵,所述乘积矩阵用于存放所述第一矩阵与所述第二矩阵的乘积结果。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910668740.5A CN110580324B (zh) | 2019-07-23 | 2019-07-23 | 图像矩阵运算方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910668740.5A CN110580324B (zh) | 2019-07-23 | 2019-07-23 | 图像矩阵运算方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110580324A CN110580324A (zh) | 2019-12-17 |
CN110580324B true CN110580324B (zh) | 2020-11-17 |
Family
ID=68811000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910668740.5A Active CN110580324B (zh) | 2019-07-23 | 2019-07-23 | 图像矩阵运算方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110580324B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125617A (zh) * | 2019-12-23 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111639699B (zh) * | 2020-05-28 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 一种图像特征提取的方法、系统、设备及可读存储介质 |
CN111639701B (zh) * | 2020-05-28 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 一种图像特征提取的方法、系统、设备及可读存储介质 |
GB2602524B (en) * | 2021-01-04 | 2024-02-14 | Imagination Tech Ltd | Neural network comprising matrix multiplication |
CN112991142B (zh) * | 2021-03-31 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
CN114283314A (zh) * | 2021-12-06 | 2022-04-05 | 广州小鹏自动驾驶科技有限公司 | 图像数据处理方法及装置 |
CN115187918B (zh) * | 2022-09-14 | 2022-12-13 | 中广核贝谷科技有限公司 | 一种监控视频流中移动物体的识别方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN207440765U (zh) * | 2017-01-04 | 2018-06-01 | 意法半导体股份有限公司 | 片上系统和移动计算设备 |
CN109086244A (zh) * | 2018-07-11 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于向量处理器的矩阵卷积向量化实现方法 |
CN109213962A (zh) * | 2017-07-07 | 2019-01-15 | 华为技术有限公司 | 运算加速器 |
CN109993683A (zh) * | 2017-12-29 | 2019-07-09 | 英特尔公司 | 任意神经网络的机器学习稀疏计算机制、用于训练机制的算术计算微架构以及稀疏性 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990648B2 (en) * | 2017-08-07 | 2021-04-27 | Intel Corporation | System and method for an optimized winograd convolution accelerator |
-
2019
- 2019-07-23 CN CN201910668740.5A patent/CN110580324B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN207440765U (zh) * | 2017-01-04 | 2018-06-01 | 意法半导体股份有限公司 | 片上系统和移动计算设备 |
CN109213962A (zh) * | 2017-07-07 | 2019-01-15 | 华为技术有限公司 | 运算加速器 |
CN109993683A (zh) * | 2017-12-29 | 2019-07-09 | 英特尔公司 | 任意神经网络的机器学习稀疏计算机制、用于训练机制的算术计算微架构以及稀疏性 |
CN109086244A (zh) * | 2018-07-11 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于向量处理器的矩阵卷积向量化实现方法 |
Non-Patent Citations (1)
Title |
---|
"二维矩阵卷积的并行计算方法";张军阳 等;《浙江大学学报》;20180315(第03期);515-523 * |
Also Published As
Publication number | Publication date |
---|---|
CN110580324A (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110580324B (zh) | 图像矩阵运算方法、装置、计算机设备和存储介质 | |
US20230206070A1 (en) | Vector Computation Unit In A Neural Network Processor | |
EP3373210B1 (en) | Transposing neural network matrices in hardware | |
US11620513B2 (en) | Computing convolutions using a neural network processor | |
US10679127B2 (en) | Performing average pooling in hardware | |
CN112214726B (zh) | 运算加速器 | |
US11803360B2 (en) | Compilation method, apparatus, computing device and medium | |
CN111476718B (zh) | 一种图像放大方法、装置、存储介质及终端设备 | |
CN110580522A (zh) | 卷积计算方法及相关设备 | |
Cosme et al. | Memory-usage advantageous block recursive matrix inverse | |
CN111639523B (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
CN109408148B (zh) | 一种国产化计算平台及其应用加速方法 | |
CN115424038A (zh) | 多尺度图像处理方法、系统、装置和计算机设备 | |
CN107977923B (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
US20220206749A1 (en) | Computing device and method for reusing data | |
US20170337465A1 (en) | Reduction of parameters in fully connected layers of neural networks by low rank factorizations | |
CN114925641A (zh) | 一种基于谐波平衡的电路仿真方法、装置及存储介质 | |
Ziani et al. | An autoadaptative limited memory Broyden’s method to solve systems of nonlinear equations | |
CN109766515B (zh) | 矩阵分解处理装置及方法 | |
CN113160126A (zh) | 硬件木马检测方法、装置、计算机设备和存储介质 | |
CN113379657B (zh) | 基于随机矩阵的图像处理方法及装置 | |
JP2806262B2 (ja) | マルチプロセッサシステムのプロセス割当方法 | |
CN116737239A (zh) | 指令处理方法、装置、设备和介质 | |
CN116861143A (zh) | 一种小输入图小权重的卷积的实现方法 | |
CN114238557A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |