CN114003201A - 矩阵变换方法、装置及卷积神经网络加速器 - Google Patents

矩阵变换方法、装置及卷积神经网络加速器 Download PDF

Info

Publication number
CN114003201A
CN114003201A CN202111277687.XA CN202111277687A CN114003201A CN 114003201 A CN114003201 A CN 114003201A CN 202111277687 A CN202111277687 A CN 202111277687A CN 114003201 A CN114003201 A CN 114003201A
Authority
CN
China
Prior art keywords
feature
sub
determining
matrix
input
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
CN202111277687.XA
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.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology 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 Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN202111277687.XA priority Critical patent/CN114003201A/zh
Publication of CN114003201A publication Critical patent/CN114003201A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • G06F7/785Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例提供了一种矩阵变换方法、装置及卷积神经网络加速器、存储介质及电子装置,其中,该方法包括:按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存;对每次缓存的子特征图进行矩阵变换,以得到多个目标子特征矩阵;基于多个目标子特征矩阵以及神经网络模型的权重参数确定输入特征图对应的目标输出特征图。通过本发明,解决了存在的加速器运算过程涉及的矩阵运算中的输入特征图矩阵变换效率低的问题,降低了访存和带宽冗余,从而提高了运算的速度。

Description

矩阵变换方法、装置及卷积神经网络加速器
技术领域
本发明实施例涉及通信领域,具体而言,涉及一种矩阵变换方法、装置及卷积神经网络加速器、存储介质及电子装置。
背景技术
目前深度学***台已无法满足实用性的要求。因此,采用GPU和FPGA等计算平台的加速器实现受到广泛关注,然而,相比于GPU,FPGA的高能效、易重构、迭代更新快和便于移动边缘端部署的特点,更能适应深度学习算法快速发展的需求。
在相关技术中,基于FPGA的CNN加速器的实现方法主要包括两方面:循环展开并行计算和脉动阵列计算。然而,第一种方法通过增加并行度实现计算加速,但面临高扇入/扇出的问题,导致最终速度较低,且计算模式通用性差;第二种方法将CNN中的卷积运算和全连接运算转换为矩阵乘法,但其中的矩阵变换img2col方法的实现对整体性能影响较大。
由此可知,相关技术中存在加速器运算过程涉及的矩阵运算中的输入特征图矩阵变换效率低的问题。
针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种矩阵变换方法、装置及卷积神经网络加速器、存储介质及电子装置,以至少解决相关技术中存在的加速器运算过程涉及的矩阵运算中的输入特征图矩阵变换效率低的问题。
根据本发明的一个实施例,提供了一种矩阵变换方法,包括:按照预定顺序依次缓存对输入特征图中包括的多个子特征图进行缓存;对每次缓存的所述子特征图进行矩阵变换,以得到多个目标子特征矩阵;基于多个所述目标子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图。
根据本发明的另一个实施例,提供了一种矩阵变换装置,包括:缓存模块,用于按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存;变换模块,用于每次缓存的对所述子特征图进行矩阵变换,以得到多个目标子特征矩阵;确定模块,用于基于多个所述目标子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图。
根据本发明的又一个实施例中,提供了一种卷积神经网络加速器,包括上述实施例中的所述装置。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项中所述的方法的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存,对每次缓存的子特征图进行矩阵变换,以得到多个目标子特征矩阵,根据多个子特征矩阵以及神经网络模型的权重参数确定输入特征图对应的目标输出特征图。由于每次只缓存输出特征图中包括的一个子特征图,对子特征图进行矩阵变换,降低了在计算时访问读取数据的次数,并且,每次仅缓存一个子特征图,避免了数据冗余访存的问题,因此,可以解决相关技术中存在的加速器运算过程涉及的矩阵运算中的输入特征图矩阵变换效率低的问题,降低了访存和带宽冗余,从而提高了运行的速度。
附图说明
图1是本发明实施例的一种矩阵变换方法的移动终端的硬件结构框图;
图2是根据本发明实施例的矩阵变换方法的流程图;
图3是根据本发明示例性实施例的卷积神经网络加速器结构示意图;
图4是相关技术中卷积的计算过程示意图;
图5是根据本发明示例性实施例的按照输入通道并行度、行宽度以及行数量分割输入特征图示意图;
图6是根据本发明示例性实施例的分割输入特征图后分块交叠情况示意图;
图7是相关技术中卷积计算转换为矩阵运算示意图一;
图8是相关技术中卷积计算转换为矩阵运算示意图二;
图9是根据本发明示例性实施例的缓存的子特征图示意图;
图10是根据本发明示例性实施例的行缓存滑动窗口过程示意图;
图11是根据本发明示例性实施例的脉冲阵列单元结构图;
图12是根据本发明实施例的矩阵变换装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种矩阵变换方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的矩阵变换方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种矩阵变换方法,图2是根据本发明实施例的矩阵变换的流程图,如图2所示,该流程包括如下步骤:
步骤S202,按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存;
步骤S204,对每次缓存的所述子特征图进行矩阵变换,以得到多个目标子特征矩阵;
步骤S206,基于多个所述子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图。
在上述实施例中,在卷积神经网络进行卷积运算时,可以首先确定原始输入的图片的输入特征图,对输入特征图中的子特征图进行缓存,对每次缓存的子特征图进行矩阵变换,得到多个目标子特征矩阵,再根据多个目标子特征矩阵和神经网络模型的权重参数确定输入特征图对应的目标输出特征图。其中,输入特征图可以是面向脉动阵列矩阵计算的特征图。
可选地,上述步骤的执行主体可以是FPGA、卷积神经网络加速器、后台处理器,或者其他的具备类似处理能力的设备,还可以是至少集成有数据处理设备的机器,其中,数据处理设备可以包括计算机、手机等终端,但不限于此。
在上述实施例中,当上述步骤的执行主体为FPGA或卷积神经网络加速器时,卷积神经网络加速器结构示意图可参见附图3,如图3所示,可以原始输入图像作为第一层卷积层的输入特征图和对应的权重参数进行卷积操作。其中,原始的输入特征图和网络中每层卷积层或全连接层的权重参数均在外部存储器中存储(一般为DDR)。执行计算之前,可以由软件端(即处理***)对可编程逻辑端的硬件模块进行配置,例如,卷积计算时,处理***通过总线配置直接内存访问控制器DMA的工作寄存器,使DMA从外部DDR搬运数据(输入特征图和权重参数)至FPGA片上逻辑。由于FPGA的片上资源有限,因此,可以添加输入特征图缓存单元和权重缓存单元分别负责缓存部分输入特征图(即部分特征图)和参数数据的存储,这两部分的数据执行若干次运算之后,直接内存访问控制器再进行下一批的数据读取缓存。输入特征图缓存单元可以采用通道优先策略实现存储,矩阵变换单元可以采用行缓存窗口滑动的方法实现卷积转矩阵运算,即img2col操作的硬件实现。脉动阵列单元为主要的计算单元,实现对输入特征图和权重参数的矩阵运算操作,其结果为卷积运算的部分和。因此,可以先由累加器缓存,等下一批的结果累加,直至当前权重参数对应的输入特征图计算完成,输出最终的结果。偏置模块负责对输入特征图的输出通道方向进行增加偏置参数的操作,该结果通过激活函数(如ReLU)模块进行非线性处理输出至下一级模块,至此一层卷积层的计算便完成。
在上述实施例中,卷积层的下一层可以为池化层或者元素级操作层(例如拼接Concat层),因此,池化/元素级操作处理单元负责池化操作和元素级操作,其输出结果通过DMA写回外部存储器,作为下一层卷积层的输入特征图,执行新一轮卷积层-偏置-激活函数-池化/元素级操作的处理过程,直至网络的所有层全部计算完成。
在上述实施例中,卷积计算的输入包括权重参数weight(Co,Ci,Ky,Kx)和输入特征图ifmp(N,Ci,Hi,Wi),最终的计算结果为输出特征图ofmp(N,Co,Ho,Wo)。其中,N表示批大小,可以设置为1(该取值仅是一种示例性说明,本发明对此不作限制)。Co和Ci表示输出和输入通道数据,Kx和Ky分别表示卷积核的长和宽,Hi、Wi和Ho、Wo分别表示输入和输出特征图高和宽,最终的结果加偏置bias(Co,1),即每个输出通道对应一个bias。卷积层的计算如公式(1)所示,其中,S表示滑动窗口的步长。
Figure BDA0003330060940000061
Figure BDA0003330060940000071
其中,Ho=((Hi-Ky+2*P)/S)+1,Wo=((Wi-Kx+2*P)/S)+1,P表示补零行数。以第一层卷积层为例,输入特征图ifmp为(1,3,416,416),weight为(16,3,3,3),S=1,P=1,则第一层的输出特征图ofmp为(1,16,416,416)。
同时,全连接层可以看做向量矩阵乘法,即ifmp为(Ci,1),权重weight为(Co,Ci),偏置bias为(Co,1),则ofmp(Co,1)=weight×ifmp+bias。
通过本发明,按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存,对每次缓存的子特征图进行矩阵变换,以得到多个目标子特征矩阵,多个子特征矩阵以及神经网络模型的权重参数确定输入特征图对应的目标输出特征图。由于每次只缓存输出特征图中包括的一个子特征图,对子特征图进行矩阵变换,降低了在计算时访问读取数据的次数,并且,每次仅缓存一个子特征图,避免了数据冗余访存的问题,因此,可以解决相关技术中存在的加速器运算过程涉及的矩阵运算中的输入特征图矩阵变换效率低的问题,降低了访存和带宽冗余,从而提高了运算的速度。
在一个示例性实施例中,按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存包括:确定所述输入特征图的输入通道并行度以及行宽度;确定每次缓存的行数量;按照所述输入通道并行度、所述行宽度以及所述行数量分割所述输入特征图,以得到多个所述子特征图;按照所述预定顺序依次对多个所述子特征图进行缓存。在本实施例中,在按照预定顺序缓存输入特征图中包括的子特征图时,可以先确定输入特征图的输入通道并行度以及输入特征图的行宽度,再确定每次缓存的行数量,按照输入通道并行度、行宽度以及行数量分割输入特征图,得到多个子特征图,在得到多个子特征图后,按照预定顺序依次缓存多个子特征图。其中,预定顺序可以为从上至下的顺序。
在相关技术中,卷积的计算过程示意图可参见附图4,如图4所示,每个滤波器weight在输入特征图ifmp上从左到右从上到下依次滑动,同时两者对应位置相乘累加,产生输出特征图ofmp的一个特征点,当滑动窗口遍历整个ifmp后,产生一个通道的输出特征图,Co个weight则生成最终Co个通道的ofmp。由于卷积过程中,涉及大量的输入特征图和参数数据的存储和复用,FPGA片上资源有限。因此,每次只能在片上缓存部分数据进行运算,如图中灰色部分。灰色立方体在Ci方向的个数为PC,称之为输入通道并行度,灰色立方体在Co方向的个数为PF,称之为输出通道并行度。由此可见,加速器每次只计算整个输入特征图和权重参数的子集(图4中虚线部分)对应的卷积结果。为了实现有效地读取外部存储器中对应的计算数据,相关技术中,通过分块,即将输入特征图横向和纵向分为若干块,每次只读取和计算一个块的输入特征图,然而由于滑动窗口的存在,显而易见,两个上下/左右相邻的块存在数据交叠的情况,因此需要考虑交叠部分的数据,此外,计算完每块的卷积结果之后,还需要额外的控制和操作恢复原始输出特征图的物理形态,这就引入了额外的时延。
在上述实施例中,按照输入通道并行度、行宽度以及行数量分割输入特征图示意图可参见附图5,如图5所示,将输入特征图的行W方向和输入通道Ci方向全部存储,列H方向只存储部分行,例如32行(该值可配置),则共计需存储W×Ci×32个数据,片上存储的资源地址是连续,并且每层的行大小向上兼容到2的n次幂,例如416→512,208→256等。此外,需要说明的是,输入通道并行度PC可以为8(该取值仅是一种示例性说明,本发明对此不作限制,例如还可以设置为16、32等)。PC表示每个输入数据在输入通道方向每8个一组进行外部存储、片上存储以及片上计算。图中step1表示计算时先按照行→列方向计算第一组8并行度,step2表示再按照输入通道方向计算下一组8并行度,直至输入通道方向计算完毕。即采用输入通道方向优先的存储策略,可以有效缓解片上存储资源受限的问题,同时在计算得到输出特征图后,不需将各个分块对应的输出特征图拼接恢复。此外,规则的分块引入的交叠部分可以通过复用降低访存带宽。
在一个示例性实施例中,确定每次缓存的行数量包括:确定滑动窗口的滑动步长;基于所述滑动步长确定相邻两次滑动中交叠的行的交叠数量;获取预先确定的预缓存行的预缓存数量;将所述预缓存数量与所述交叠数量的差值确定为所述行数量。在本实施例中,在确定每次缓存的行数量时,可以先确定滑动窗口的滑动步长,根据滑动步长确定相邻两次滑动中交叠的行的交叠数量,获取预定确定的预缓存行的预缓存数量,将预缓存数量与交叠数量的差值确定为行数量。
在上述实施例中,在分割输入特征图后,得到n片特征图,每次片上只存块Blockn,其中n=1,2,3,4…,计算完当前块,再缓存下一块。以第一个通道为例,当Ky=Kx=3,S=1,P=1时,两个上下相邻的块存在交叠,当预缓存数量为32时,分割输入特征图后分块交叠情况示意图可参见附图6,如图6所示,Block1和Block2存在两行的交叠。因此,每次片上缓存可以少2行缓存;块与块的最终结果不需要额外的恢复操作,直接连续地址写回外部存储器即可;每个block包含输入通道维度所有的输入特征图,因此,当所有滤波器遍历计算完当前block,可以直接产生最终的输出特征图结果,不再需要片上缓存中间卷积计算的部分和结果。从而降低外部存储器的频繁访问次数,降低带宽需求。
在一个示例性实施例中,对每次缓存的所述子特征图进行矩阵变换,以得到多个目标子特征矩阵包括:针对每个时间周期均执行以下操作:确定所述时间周期内获取到的所述子特征图中包括的行数据;对所述行数据进行矩阵变换,以得到所述目标子特征矩阵。在本实施例中,在确定目标特征矩阵时,可以对每个时间周期内获取的行数据进行矩阵变换,得到目标子特征矩阵,通过目标子特征矩阵进行卷积计算得到输出特征图,在计算完成后,再次获取下一个时间周期内的行数据进行矩阵变换,得到目标子特征矩阵,依次计算得到输出特征矩阵。因此,可以有效避免冗余数据访存,实现流水线的硬件设计,这对FPGA的存储空间、访存带宽和计算资源具有重要意义。其中,时间周期可以是N个时钟节拍,如3个时钟节拍。时间周期可以是根据滑动窗口以及每个缓存的行数量确定的。
在相关技术中,CNN计算中卷积层和全连接层可以转换为矩阵乘法,即可以采用脉动阵列进行实现,全连接层为矩阵向量乘法,在此不再赘述其计算过程。卷积计算的矩阵转换,即img2col的硬件实现。如图7所示,img2col的过程为将输入特征图转换为滤波器对应的矩阵格式,由于滑动窗口会存在数据的重叠,则导致内部存在大量的冗余数据。
通过img2col可以将图4的卷积运算转换为矩阵乘法的运算过程,如图8所示,利用脉动阵列进行相应的计算。一种比较直观的方法是在软件端利用高级语言进行img2col实现,然后将变换后的数据传输至FPGA进行计算,然而大量的冗余数据以及每层计算都需要矩阵转换操作,这样的处理方式带来的时间开销是巨大的。由图7和图8可知,img2col将原始卷积输入特征图转换为矩阵的形式,其利用了每个卷积核在输入特征图ifmp上滑动所覆盖ifmp相应位置的数据,将卷积核覆盖的数据展为1维向量则为相应的img2col的结果。
在上述实施例中,假设当前片上已经存储的数据为如图9所示的立方体,即PC=8,共Ci×W×32个数据。假设当前层的卷积核为3×3×Ci,其并行度PC与ifmp保持对应。则第一次窗口的位置为窗口1,第二次为窗口2,之后依次为窗口3、窗口4、窗口5,直至一行滑动完毕。每次窗口覆盖的PKKC=3×3×PC=72个数据,对应img2col的1维向量。如图10所示,设输入特征图数据位宽为DW,则每一拍数据为PC×DW,对于3×3的卷积核,可以采用2行缓存,其中缓存可以基于FIFO进行实现,FIFO的深度取决于输入特征图的行最大值,例如512。容易得知,当缓存完2行数据之后,第3行数据流入时,前2行的数据按次序和第3行的数据同时流入寄存器组,每一个时钟节拍流出3组PC×DW个数,等待3个时钟节拍后,寄存器组中对应3×3窗口的9组数据全部有效,则输出至脉动阵列纵向输入1次,下一拍则对应滑动1次窗口所对应的下一批9组数据,依次类推,则可以得到相应的img2col矩阵转换后的输入特征图。
在上述实施例中,通过采用行缓存滑动窗口的方式实现img2col的矩阵变换操作,有效避免了img2col操作所面临的冗余数据访存问题,同时该方法基于硬件实现,有效降低了片上存储空间和外部存储器访存带宽的要求。
在一个示例性实施例中,基于多个所述目标子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图包括:基于每个所述子特征矩阵以及所述权重参数确定每个所述子特征矩阵对应的输出特征图;缓存每个所述子特征矩阵对应的所述输出特征图,得到多个所述输出特征图;基于多个所述输出特征图确定所述目标输出特征图。在本实施例中,在确定目标输出特征图时,根据每个子特征矩阵以及权重参数确定每个子特征矩阵对应的输出特征图,缓存每个子特征矩阵对应的输出特征图,即缓存每个由子特征图得到的输出特征图,根据多个输出特征图进行相应的计算确定目标输出特征图。
在一个示例性实施例中,基于每个所述子特征矩阵以及所述权重参数确定每个所述子特征矩阵对应的输出特征图包括:基于所述权重参数确定所述子特征矩阵对应的目标输入通道的子权重参数;确定当前时间周期内得到的当前子特征矩阵;确定所述当前子特征矩阵与所述子权重参数的第一乘积;确定所述当前时间周期的前一时间周期内的前一特征矩阵与所述子权重参数的第二乘积;将所述第一乘积与所述第二乘积的和确定为所述输出特征图。在本实施例中,在确定输出特征图时,对于每个目标输入通道,可以确定目标输入通道的子权重参数,确定当前时间周期内得到的当前子特征矩阵,确定当前子特征矩阵与子权重参数的第一乘积,再确定当前时间周期的前一时间周期内的前一特征矩阵与权重参数的第二乘积,将第一乘积和第二乘积的和确定为输出特征图。
在上述实施例中,可以利用脉冲阵列单元确定输出特征图,脉冲阵列单元结构图可参见附图11,如图11所示,脉冲阵列单元可以包括一个二维PE矩阵。可以首先确定目标输入通道的权重参数,其中,每个输入通道采用的权重参数可以是固定的。输入特征图数据和输出特征图数据可以定向传播的方式进行计算,其中,权重参数可以按照纵向进行预存,此后,输入特征图数据横向一拍一拍进入脉动阵列单元进行计算,并向相邻右边的PE流动,每个PE的计算结果纵向定向传播。所有的流动为每一个时钟节拍一次。每个PE为一个乘累加的单元,即当每个PE中Wi和Xi相遇,则进行乘法,并将乘积结果和来自其相邻上方流入的结果累加,再流向相邻下方的PE。计算完当前批次的部分输入特征图后,得到部分和结果,由于最终的输出特征图的结果是输入通道方向所有数据乘积之和,因此。需要暂存部分和与下一批对应的部分和累加,直至输出最终的计算结果,即为当前卷积层的输出特征图。
在一个示例性实施例中,确定当前时间周期内得到的当前子特征矩阵包括:在所述目标输入通道之前不存在输入通道的情况下,将目标子特征矩阵确定为所述当前子特征矩阵;在所述目标输入通道之前存在输入通道的情况下,将所述输入通道中包括的与所述目标输入通道相邻的相邻输入通道的第一乘积确定为所述当前子特征矩阵。在本实施例中,在目标输入通道之前不存在输入通道的情况下,将目标子特征矩阵确定为当前子特征矩阵,在目标输入通道之前存在输入通道的情况下,将输入通道中包括的与目标输入通道相邻的相邻输入通道的第一乘积确定为当前子特征矩阵。如图11所示,当目标输入通道为第一列通道时,则将目标子特征矩阵确定为当前子特征矩阵,当目标输入通道为除第一列通道之前的通道时,如第二列通道,则将第一列通道的第一乘积确定为当前子特征矩阵。
在上述实施例中,基于脉动阵列的方法,每个PE只和相邻的PE相连接,扇入和扇出为1,同时脉动阵列规则的矩形物理结构,使其在映射到FPGA上时更有效,因为对应的FPGA上的DSP资源分布的物理空间是矩形区域,因此可以使加速器达到更高时钟频率。
在前述实施例中,通过输入通道方向优先的存储策略,有效缓解了片上存储资源受限的问题,同时与其他分块策略相比,在计算得到输出特征图后,不需将各个分块对应的输出特征图拼接恢复。此外,规则的分块引入的交叠部分可以通过复用降低访存带宽。通过脉动阵列方案扇入/扇出为1,同时其规则的矩阵物理结构易于FPGA的布局布线,因此可实现更高的时钟频率,提升加速器整体性能。此外,基于FPGA的加速器具有设计灵活、可重配置以及低功耗的特点。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种输出特征图的确定装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图12是根据本发明实施例的矩阵变换装置的结构框图,如图12所示,该装置包括:
缓存模块1202,用于按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存;
变换模块1204,用于对每次缓存的所述子特征图进行矩阵变换,以得到多个目标子特征矩阵;
确定模块1206,用于基于多个所述目标子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图。
其中,缓存模块1202对应于附图3中的输入特征图缓存单元,变换模块1204对应于附图3中的矩阵变换(行缓存窗口滑动)单元,确定模块1206对应于附图3中的脉动阵列以及累加器缓存。
在一个示例性实施例中,缓存模块1202可以通过如下方式实现按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存:确定所述输入特征图的输入通道并行度以及行宽度;确定每次缓存的行数量;按照所述输入通道并行度、所述行宽度以及所述行数量分割所述输入特征图,以得到多个所述子特征图;按照所述预定顺序依次对多个所述子特征图进行缓存。
在一个示例性实施例中,缓存模块1202可以通过如下方式实现确定每次缓存的行数量:确定滑动窗口的滑动步长;基于所述滑动步长确定相邻两次滑动中交叠的行的交叠数量;获取预先确定的预缓存行的预缓存数量;将所述预缓存数量与所述交叠数量的差值确定为所述行数量。
在一个示例性实施例中,变换模块1204可以通过如下方式实现对每次缓存的所述子特征图进行矩阵变换,以得到多个目标子特征矩阵:针对每个时间周期均执行以下操作:确定所述时间周期内获取到的所述子特征图中包括的行数据;对所述行数据进行矩阵变换,以得到所述目标子特征矩阵。
在一个示例性实施例中,确定模块1206可以通过如下方式实现基于多个所述目标子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图:基于每个所述子特征矩阵以及所述权重参数确定每个所述子特征矩阵对应的输出特征图;缓存每个所述子特征矩阵对应的所述输出特征图,以得到多个所述输出特征图;基于多个所述输出特征图确定所述目标输出特征图。
在一个示例性实施例中,确定模块1206可以通过如下方式实现基于每个所述子特征矩阵以及所述权重参数确定每个所述子特征矩阵对应的输出特征图:基于所述权重参数确定所述子特征矩阵对应的确定目标输入通道的子权重参数;确定当前时间周期内得到的当前子特征矩阵;确定所述当前特征矩阵与所述子权重参数的第一乘积;确定所述当前时间周期的前一时间周期内的前一特征矩阵与所述权重参数的第二乘积;将所述第一乘积与所述第二乘积的和确定为所述输出特征图。
在一个示例性实施例中,确定模块1206可以通过如下方式实现确定当前时间周期内得到的当前子特征矩阵:在所述目标输入通道之前不存在输入通道的情况下,将目标子特征矩阵确定为所述当前子特征矩阵;在所述目标输入通道之前存在输入通道的情况下,将所述输入通道中包括的与所述目标输入通道相邻的相邻输入通道的第一乘积确定为所述当前子特征矩阵。
在本实施例中还提供了一种卷积神经网络加速器,包括上述实施例中的装置,可以运行上述方法实施例中的方法。其结构图可参见附图3。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项中所述的方法的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种矩阵变换方法,其特征在于,包括:
按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存;
对每次缓存的所述子特征图进行矩阵变换,以得到多个目标子特征矩阵;
基于多个所述目标子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图。
2.根据权利要求1所述的方法,其特征在于,按照预定顺序依次对输入特征图中包括的多个子特征图进行缓存包括:
确定所述输入特征图的输入通道并行度以及行宽度;
确定每次缓存的行数量;
按照所述输入通道并行度、所述行宽度以及所述行数量分割所述输入特征图,以得到多个所述子特征图;
按照所述预定顺序依次对多个所述子特征图进行缓存。
3.根据权利要求2所述的方法,其特征在于,确定每次缓存的行数量包括:
确定滑动窗口的滑动步长;
基于所述滑动步长确定相邻两次滑动中交叠的行的交叠数量;
获取预先确定的预缓存行的预缓存数量;
将所述预缓存数量与所述交叠数量的差值确定为所述行数量。
4.根据权利要求1所述的方法,其特征在于,对每次缓存的所述子特征图进行矩阵变换,以得到多个目标子特征矩阵包括:
针对每个时间周期均执行以下操作:
确定所述时间周期内获取到的所述子特征图中包括的行数据;
对所述行数据进行矩阵变换,以得到所述目标子特征矩阵。
5.根据权利要求1所述的方法,其特征在于,基于多个所述目标子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图包括:
基于每个所述子特征矩阵以及所述权重参数确定每个所述子特征矩阵对应的输出特征图;
缓存每个所述子特征矩阵对应的所述输出特征图,以得到多个所述输出特征图;
基于多个所述输出特征图确定所述目标输出特征图。
6.根据权利要求5所述的方法,其特征在于,基于每个所述子特征矩阵以及所述权重参数确定每个所述子特征矩阵对应的输出特征图包括:
基于所述权重参数确定所述子特征矩阵对应的目标输入通道的子权重参数;
确定当前时间周期内得到的当前子特征矩阵;
确定所述当前子特征矩阵与所述子权重参数的第一乘积;
确定所述当前时间周期的前一时间周期内的前一特征矩阵与所述子权重参数的第二乘积;
将所述第一乘积与所述第二乘积的和确定为所述输出特征图。
7.根据权利要求6所述的方法,其特征在于,确定当前时间周期内得到的当前子特征矩阵包括:
在所述目标输入通道之前不存在输入通道的情况下,将目标子特征矩阵确定为所述当前子特征矩阵;
在所述目标输入通道之前存在输入通道的情况下,将所述输入通道中包括的与所述目标输入通道相邻的相邻输入通道的第一乘积确定为所述当前子特征矩阵。
8.一种输出特征图的确定装置,其特征在于,包括:
缓存模块,用于按照预定顺序依次对输入特征图中包括的子特征图进行缓存;
变换模块,用于对每次缓存的所述子特征图进行矩阵变换,以得到多个目标子特征矩阵;
确定模块,用于基于多个所述目标子特征矩阵以及神经网络模型的权重参数确定所述输入特征图对应的目标输出特征图。
9.一种卷积神经网络加速器,其特征在于,包括权利要求8所述的装置。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至7任一项中所述的方法的步骤。
11.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至7任一项中所述的方法。
CN202111277687.XA 2021-10-29 2021-10-29 矩阵变换方法、装置及卷积神经网络加速器 Pending CN114003201A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111277687.XA CN114003201A (zh) 2021-10-29 2021-10-29 矩阵变换方法、装置及卷积神经网络加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111277687.XA CN114003201A (zh) 2021-10-29 2021-10-29 矩阵变换方法、装置及卷积神经网络加速器

Publications (1)

Publication Number Publication Date
CN114003201A true CN114003201A (zh) 2022-02-01

Family

ID=79925706

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111277687.XA Pending CN114003201A (zh) 2021-10-29 2021-10-29 矩阵变换方法、装置及卷积神经网络加速器

Country Status (1)

Country Link
CN (1) CN114003201A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114648107A (zh) * 2022-03-10 2022-06-21 北京宏景智驾科技有限公司 神经网络输入图像点云卷积层计算的效率提升方法及电路
CN114758209A (zh) * 2022-06-14 2022-07-15 深圳思谋信息科技有限公司 卷积结果获取方法、装置、计算机设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107993186A (zh) * 2017-12-14 2018-05-04 中国人民解放军国防科技大学 一种基于Winograd算法的3D CNN加速方法及***

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107993186A (zh) * 2017-12-14 2018-05-04 中国人民解放军国防科技大学 一种基于Winograd算法的3D CNN加速方法及***

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114648107A (zh) * 2022-03-10 2022-06-21 北京宏景智驾科技有限公司 神经网络输入图像点云卷积层计算的效率提升方法及电路
CN114758209A (zh) * 2022-06-14 2022-07-15 深圳思谋信息科技有限公司 卷积结果获取方法、装置、计算机设备及存储介质
CN114758209B (zh) * 2022-06-14 2022-09-02 深圳思谋信息科技有限公司 卷积结果获取方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN108765247B (zh) 图像处理方法、装置、存储介质及设备
CN108108809B (zh) 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN107993186B (zh) 一种基于Winograd算法的3D CNN加速方法及***
CN111459877B (zh) 基于FPGA加速的Winograd YOLOv2目标检测模型方法
CN109063825B (zh) 卷积神经网络加速装置
US11989638B2 (en) Convolutional neural network accelerating device and method with input data conversion
CN111667051A (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
CN111414994B (zh) 一种基于FPGA的Yolov3网络计算加速***及其加速方法
CN112668708B (zh) 一种提高数据利用率的卷积运算装置
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
CN111898733A (zh) 一种深度可分离卷积神经网络加速器架构
CN114742225A (zh) 一种基于异构平台的神经网络推理加速方法
CN110543939A (zh) 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构
CN113361695B (zh) 卷积神经网络加速器
CN111582465B (zh) 基于fpga的卷积神经网络加速处理***、方法以及终端
Shahshahani et al. Memory optimization techniques for fpga based cnn implementations
KR20230081697A (ko) 팽창 컨볼루션 계산 가속화 방법 및 장치
Niu et al. SPEC2: Spectral sparse CNN accelerator on FPGAs
CN115238863A (zh) 一种卷积神经网络卷积层的硬件加速方法、***及应用
CN113743587A (zh) 一种卷积神经网络池化计算方法、***、及存储介质
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
US11921667B2 (en) Reconfigurable computing chip
CN116090518A (zh) 基于脉动运算阵列的特征图处理方法、装置以及存储介质
CN113128688B (zh) 通用型ai并行推理加速结构以及推理设备
CN112905526B (zh) 一种多种类型卷积的fpga实现方法

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