CN115204373A - 一种卷积神经网络的快速卷积及缓存模式的设计方法 - Google Patents
一种卷积神经网络的快速卷积及缓存模式的设计方法 Download PDFInfo
- Publication number
- CN115204373A CN115204373A CN202210937743.6A CN202210937743A CN115204373A CN 115204373 A CN115204373 A CN 115204373A CN 202210937743 A CN202210937743 A CN 202210937743A CN 115204373 A CN115204373 A CN 115204373A
- Authority
- CN
- China
- Prior art keywords
- convolution
- unit
- input
- matrix
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7878—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种卷积神经网络的快速卷积及缓存模式的设计方法,充分利用FPGA完成Winograd算法的设计,在3*3的卷积核尺寸下,乘法操作从36次减少到16次,可以充分利用DSP资源对卷积操作进行加速。通过特征图缓存以及流水线传输的方式,优化卷积滑窗操作时需要对重复行和列数据的缓存,提高缓存以及转化模块工作效率。通过配置参数实现矩阵转化模块的可重构设计。充分利用所节省的DSP资源,复用Winograd卷积计算阵列,充分利用FPGA的硬件资源,进一步提升卷积加速模块的计算能力,对点积步骤进行低功耗设计。
Description
技术领域
本发明涉及卷积神经网络加速的技术领域,尤其涉及到一种卷积神经网络的快速卷积及缓存模式的设计方法。
背景技术
目前深度卷积神经网络(DCNNs)在图像分类、目标检测和语义分割等各种计算机视觉任务中都取得了显著的性能。
随着更大的数据集和模型出现,卷积神经网络的精度大幅提升,然而这需要以巨大的计算量和处理时间为代价。为了应对如此巨大的计算压力,GPU、FPGA和ASICS等硬件加速器已被广泛的应用于对CNNs的加速。
针对卷积神经网络计算量最大的卷积层,出现包括Winograd、FFT等加速卷积计算的算法,其中Winograd算法相对传统卷积,该算法可将算术复杂度降低4倍;与传统FFT卷积算法相比,Winograd算法对内存需求也较轻。这使得通过Winograd算法加速卷积运算成为可能。
发明内容
本发明的目的在于克服现有技术的不足,提供一种应用Winograd算法的卷积神经网络的快速卷积及缓存模式的设计方法。
为实现上述目的,本发明所提供的技术方案为:
一种卷积神经网络的快速卷积及缓存模式的设计方法,包括利用FPGA完成Winograd算法的设计、通过特征图缓存以及流水线传输的方式,优化卷积滑窗操作时需要对重复行和列数据的缓存以及通过配置参数实现矩阵转化的可重构设计。
进一步地,Winograd算法包括:
Winograd算法加速一维卷积计算:
对于输入为i=[i0 i1 i2 i3]T,卷积核为w=[w0 w1 w2]T,卷积的表达式为:
其中,
将一维卷积的变换扩展到二维卷积,用矩阵形式表示为:
Y=AT[(GWGT)⊙(BTIB)]A
其中,Y、W、I分别表示输出特征图、权重、输入特征图,G、B、A分别表示权重转化矩阵、输入特征图转化矩阵、输出特征图转化矩阵。
进一步地,利用FPGA完成Winograd算法的设计中,包括顶层控制模块、Winograd卷积模块以及缓存模块;
其中,所述顶层控制模块包括流水线调度单元、控制指令解析单元、矩阵转换控制单元;
所述流水线调度单元,分为三级流水:第一级输入端口,包括输入缓存和权重缓存;第二级包括输入激活和权重的矩阵转换,以及winograd卷积;第三级输出端包括中间值缓存和输出缓存;
所述控制指令解析单元,将写入的控制指令进行解析,解析的控制指令包括缓存的数据结构参数、卷积尺寸、步长,根据需求发送到不同的模块或单元;
所述矩阵转换控制单元,接收控制指令解析单元的指令,控制输入激活、权重和PE阵列计算结果进行矩阵转换;
Winograd卷积模块包括寄存器阵列单元、MUX单元、卷积控制单元、PE阵列单元、加法树单元、ReLU及POOL单元;
所述寄存器阵列单元,缓存矩阵转换的结果;
所述MUX单元,通过选择对应的行,列到PE阵列实现数据复用;
所述卷积控制单元,用于卷积控制;
所述PE阵列单元,由DSP实现的乘法器阵列,完成winograd域的点乘计算;
所述加法树单元,计算结果的累加,以及实现加偏置功能;
所述ReLU及POOL单元,实现激活函数和池化功能;
所述缓存模块包括输入缓存单元、权重缓存单元、中间值缓存单元、输出缓存单元;
所述输入缓存单元,缓存片外读入的输入激活,根据顶层控制的参数缓存分块后的输入激活,并且完成补零以及重复行缓存;
所述权重缓存单元,缓存权重参数;
所述中间值缓存单元,缓存分块的计算结果,供加法树单元读取完成累加;
所述输出缓存单元,缓存最终计算结果,通过DMA存储到片外。
进一步地,通过特征图缓存以及流水线传输的方式,优化卷积滑窗操作时需要对重复行和列数据的缓存,包括:
将H*L*N的输入特征图,在行的方向上展开进行分块操作,按通道顺序存储到16条Bram中进行缓存;输入缓存到转换模块的中间模块,对3*3尺寸的卷积核完成4*4大小的分块滑窗操作,由四级流水线组成,流水线0每个时钟周期读入16条Bram中同一地址的数据,并且输入向后面的流水线传递,行方向上,每两个周期向矩阵转化模块传递一次滑窗数据块,从而优化行方向上的重复数据读取;列方向上,重复列的数据会读入相应的两个矩阵转化模块,即16条Bram存储的16行输入特征图传递到7个输入特征图矩阵转化模块,优化列方向上的重复数据读取。
进一步地,通过配置参数实现矩阵转化的可重构设计包括:
二维Winograd算法的转化矩阵包括A、G、B,而转化矩阵的构成只与Winograd算法的卷积尺寸和输入特征图大小有关,且转换矩阵之间存在重复参数,通过配置参数s以及s0s1s2,占用少量寄存及资源,实现转化模块的可重构设计;对于输入特征图转化矩阵B进行推导如下:
进一步地,还包括:在点积过程中,对于权重参数为零的位置,将关闭该参数的乘法计算,权重参数不为零的位置,跳过特征图数据为零的乘法计算,实现卷积计算的低功耗设计。
与现有技术相比,本方案原理及优点如下:
1)充分利用FPGA完成Winograd算法的设计,在3*3的卷积核尺寸下,乘法操作从36次减少到16次,可以充分利用DSP资源对卷积操作进行加速。
2)通过特征图缓存以及流水线传输的方式,优化卷积滑窗操作时需要对重复行和列数据的缓存,提高缓存以及转化模块工作效率。
3)通过配置参数实现矩阵转化模块的可重构设计。
4)充分利用所节省的DSP资源,复用Winograd卷积计算阵列,充分利用FPGA的硬件资源,进一步提升卷积加速模块的计算能力,对点积步骤进行低功耗设计。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的服务作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为Winograd算法硬件实现流程图;
图2为输入特征图缓存示意图;
图3为输入特征图缓存到转换模块的示意图;
图4为转化模块示意图。
具体实施方式
下面结合具体实施例对本发明作进一步说明:
本实施例所述的一种卷积神经网络的快速卷积及缓存模式的设计方法,包括利用FPGA完成Winograd算法的设计、通过特征图缓存以及流水线传输的方式,优化卷积滑窗操作时需要对重复行和列数据的缓存以及通过配置参数实现矩阵转化的可重构设计。
其中,Winograd算法包括:
Winograd算法加速一维卷积计算:
对于输入为i=[i0 i1 i2 i3]T,卷积核为w=[w0 w1 w2]T,卷积的表达式为:
其中,
将一维卷积的变换扩展到二维卷积,用矩阵形式表示为:
y=AT[(GWGT)⊙(BTIB)]A
其中,Y、W、I分别表示输出特征图、权重、输入特征图,G、B、A分别表示权重转化矩阵、输入特征图转化矩阵、输出特征图转化矩阵。
如图1所示,上述整个算法的实现流程,涉及到三处矩阵变换,输入端的输入激活与权重进行矩阵变换是为了后续在Winograd域完成矩阵乘法,计算后的结果仍是Winograd域的数据结构,所以输出端需要将Winograd域计算的结果转化,得到最后的输出结果。硬件电路的整体实现也是这样的流程。
利用FPGA完成Winograd算法的设计中,包括顶层控制模块、Winograd卷积模块以及缓存模块;
其中,顶层控制模块包括流水线调度单元、控制指令解析单元、矩阵转换控制单元;流水线调度单元,分为三级流水:第一级输入端口,包括输入缓存和权重缓存;第二级包括输入激活和权重的矩阵转换,以及winograd卷积;第三级输出端包括中间值缓存和输出缓存;控制指令解析单元,将写入的控制指令进行解析,解析的控制指令包括缓存的数据结构参数、卷积尺寸、步长,根据需求发送到不同的模块或单元;矩阵转换控制单元,接收控制指令解析单元的指令,控制输入激活、权重和PE阵列计算结果进行矩阵转换;
Winograd卷积模块包括寄存器阵列单元、MUX单元、卷积控制单元、PE阵列单元、加法树单元、ReLU及POOL单元;寄存器阵列单元,缓存矩阵转换的结果;MUX单元,通过选择对应的行,列到PE阵列单元实现数据复用;卷积控制单元,用于卷积控制;PE阵列单元,由DSP实现的乘法器阵列,完成Winograd域的点乘计算;加法树单元,计算结果的累加,以及实现加偏置功能;ReLU及POOL单元,实现激活函数和池化功能;
所述缓存模块包括输入缓存单元、权重缓存单元、中间值缓存单元、输出缓存单元;输入缓存单元,缓存片外读入的输入激活,根据顶层控制的参数缓存分块后的输入激活,并且完成补零以及重复行缓存;权重缓存单元,缓存权重参数;中间值缓存单元,缓存分块的计算结果,供加法树单元读取完成累加;输出缓存单元,缓存最终计算结果,通过DMA存储到片外。
实现原理如下:
最前端进行的是输入激活数据的输入缓存单元,其会将分块好的数据通过DMA读入片内缓存,特征图的补零、重复行存储也在此单元完成,之后进行输入数据矩阵变换,即对完成的H*L*N(高*宽*通道)进行分块,且按长条形分块,原因是使得数据地址连续,提高DMA传输效率,其中分块大小为Th*L*Tn(分块高*长*分块通道);
缓存好的输入数据,会被Winograd卷积模块读入,进行矩阵变换后,与权重一同进入PE阵列单元进行计算,如输入尺寸4*4,卷积核尺寸3*3,步长为1的数据流,Winograd卷积模块将同时读入Tm个输出通道的卷积核,在PEArray中进行对应并计算输出。
PE阵列单元计算后对计算结果进行输出矩阵转换得到最后的分块计算结果,中间值在加法树中累加后缓存在中间值缓存单元中,累加完成的输出数据在ReLU及POOL单元完成激活、池化等操作后,缓存在输出缓存单元中,等待DMA空闲后将结果输出到后处理。
具体地,如图2所示,将H*L*N的输入特征图,在行的方向上展开进行分块操作,按通道顺序存储到16条Bram中进行缓存。如图3所示的输入缓存到转换模块的中间模块,对3*3尺寸的卷积核完成4*4大小的分块滑窗操作,由四级流水线组成,流水线0每个时钟周期读入16条Bram中同一地址的数据,并且输入向后面的流水线传递,行方向上,每两个周期可以向矩阵转化模块传递一次滑窗数据块,这样可以优化行方向上的重复数据读取;列方向上,重复列的数据会读入相应的两个矩阵转化模块,即16条Bram存储的16行输入特征图传递到7个输入特征图矩阵转化模块,优化列方向上的重复数据读取。
通过配置参数实现矩阵转化的可重构设计包括:
二维Winograd算法的转化矩阵包括A、G、B,而转化矩阵的构成只与Winograd算法的卷积尺寸和输入特征图大小有关,且转换矩阵之间存在重复参数,如图4所示,通过配置参数s以及s0s1s2,占用少量寄存及资源,实现转化模块的可重构设计;对于输入特征图转化矩阵B进行推导如下:
最后,本实施例还包括:
由于输入特征图以及权重中存在大量的零参数,因此,在点积过程中,对于权重参数为零的位置,将关闭该参数的乘法计算,权重参数不为零的位置,跳过特征图数据为零的乘法计算,实现卷积计算的低功耗设计。
以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
Claims (6)
1.一种卷积神经网络的快速卷积及缓存模式的设计方法,其特征在于,包括利用FPGA完成Winograd算法的设计、通过特征图缓存以及流水线传输的方式,优化卷积滑窗操作时需要对重复行和列数据的缓存以及通过配置参数实现矩阵转化的可重构设计。
3.根据权利要求2所述的一种卷积神经网络的快速卷积及缓存模式的设计方法,其特征在于,利用FPGA完成Winograd算法的设计中,包括顶层控制模块、Winograd卷积模块以及缓存模块;
其中,所述顶层控制模块包括流水线调度单元、控制指令解析单元、矩阵转换控制单元;
所述流水线调度单元,分为三级流水:第一级输入端口,包括输入缓存和权重缓存;第二级包括输入激活和权重的矩阵转换,以及winograd卷积;第三级输出端包括中间值缓存和输出缓存;
所述控制指令解析单元,将写入的控制指令进行解析,解析的控制指令包括缓存的数据结构参数、卷积尺寸、步长,根据需求发送到不同的模块或单元;
所述矩阵转换控制单元,接收控制指令解析单元的指令,控制输入激活、权重和PE阵列计算结果进行矩阵转换;
Winograd卷积模块包括寄存器阵列单元、MUX单元、卷积控制单元、PE阵列单元、加法树单元、ReLU及POOL单元;
所述寄存器阵列单元,缓存矩阵转换的结果;
所述MUX单元,通过选择对应的行,列到PE阵列实现数据复用;
所述卷积控制单元,用于卷积控制;
所述PE阵列单元,由DSP实现的乘法器阵列,完成winograd域的点乘计算;
所述加法树单元,计算结果的累加,以及实现加偏置功能;
所述ReLU及POOL单元,实现激活函数和池化功能;
所述缓存模块包括输入缓存单元、权重缓存单元、中间值缓存单元、输出缓存单元;
所述输入缓存单元,缓存片外读入的输入激活,根据顶层控制的参数缓存分块后的输入激活,并且完成补零以及重复行缓存;
所述权重缓存单元,缓存权重参数;
所述中间值缓存单元,缓存分块的计算结果,供加法树单元读取完成累加;
所述输出缓存单元,缓存最终计算结果,通过DMA存储到片外。
4.根据权利要求1所述的一种卷积神经网络的快速卷积及缓存模式的设计方法,其特征在于,通过特征图缓存以及流水线传输的方式,优化卷积滑窗操作时需要对重复行和列数据的缓存,包括:
将H*L*N的输入特征图,在行的方向上展开进行分块操作,按通道顺序存储到16条Bram中进行缓存;输入缓存到转换模块的中间模块,对3*3尺寸的卷积核完成4*4大小的分块滑窗操作,由四级流水线组成,流水线0每个时钟周期读入16条Bram中同一地址的数据,并且输入向后面的流水线传递,行方向上,每两个周期向矩阵转化模块传递一次滑窗数据块,从而优化行方向上的重复数据读取;列方向上,重复列的数据会读入相应的两个矩阵转化模块,即16条Bram存储的16行输入特征图传递到7个输入特征图矩阵转化模块,优化列方向上的重复数据读取。
6.根据权利要求1所述的一种卷积神经网络的快速卷积及缓存模式的设计方法,其特征在于,还包括:在点积过程中,对于权重参数为零的位置,将关闭该参数的乘法计算,权重参数不为零的位置,跳过特征图数据为零的乘法计算,实现卷积计算的低功耗设计。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210937743.6A CN115204373A (zh) | 2022-08-05 | 2022-08-05 | 一种卷积神经网络的快速卷积及缓存模式的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210937743.6A CN115204373A (zh) | 2022-08-05 | 2022-08-05 | 一种卷积神经网络的快速卷积及缓存模式的设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115204373A true CN115204373A (zh) | 2022-10-18 |
Family
ID=83585947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210937743.6A Pending CN115204373A (zh) | 2022-08-05 | 2022-08-05 | 一种卷积神经网络的快速卷积及缓存模式的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115204373A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116401502A (zh) * | 2023-06-09 | 2023-07-07 | 之江实验室 | 一种基于NUMA***特性优化Winograd卷积的方法及装置 |
-
2022
- 2022-08-05 CN CN202210937743.6A patent/CN115204373A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116401502A (zh) * | 2023-06-09 | 2023-07-07 | 之江实验室 | 一种基于NUMA***特性优化Winograd卷积的方法及装置 |
CN116401502B (zh) * | 2023-06-09 | 2023-11-03 | 之江实验室 | 一种基于NUMA***特性优化Winograd卷积的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速***及其加速方法 | |
CN108805267B (zh) | 用于卷积神经网络硬件加速的数据处理方法 | |
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN107993186A (zh) | 一种基于Winograd算法的3D CNN加速方法及*** | |
CN110276444B (zh) | 基于卷积神经网络的图像处理方法及装置 | |
CN110738308B (zh) | 一种神经网络加速器 | |
CN109284824B (zh) | 一种基于可重构技术的用于加速卷积和池化运算的装置 | |
CN113051216B (zh) | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 | |
CN113807509B (zh) | 神经网络加速装置、方法和通信设备 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN111582465B (zh) | 基于fpga的卷积神经网络加速处理***、方法以及终端 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
JP2008506191A5 (zh) | ||
CN109472734B (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
CN112668708A (zh) | 一种提高数据利用率的卷积运算装置 | |
CN115204373A (zh) | 一种卷积神经网络的快速卷积及缓存模式的设计方法 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN113807998A (zh) | 图像处理方法、目标检测装置、机器视觉设备和存储介质 | |
CN113537482B (zh) | 神经网络计算模块、方法和通信设备 | |
CN117454946A (zh) | 支持非结构化稀疏矩阵计算的张量核架构*** | |
CN113792868A (zh) | 神经网络计算模块、方法和通信设备 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN113222129A (zh) | 一种基于多级缓存循环利用的卷积运算处理单元及*** | |
CN109948787B (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 |