首页 / 专利库 / 信号处理 / 滤波器 / 上采样滤波器 / 一种基于快速滤波算法的卷积神经网络加速器电路

一种基于快速滤波算法卷积神经网络加速电路

阅读:1017发布:2020-07-16

专利汇可以提供一种基于快速滤波算法卷积神经网络加速电路专利检索,专利查询,专利分析的服务。并且本 发明 请求 保护一种基于快速滤波 算法 的 卷积神经网络 加速 器 电路 。为了减少卷积神经网络算法(CNN)的计算量,本发明利用快速滤波算法消除了二维卷积运算中卷积窗口之间重叠区域计算的冗余,使得算法强度缩减,提高了卷积计算效率。接着,本发明设计了4并行快速滤波算法的卷积计算加速单元,该单元采用若干小 滤波器 组成的复杂度较低的并行滤波结构来实现。这对于可编程的FPGA设计来说,不仅可以降低 硬件 资源的消耗,还可以提升运行速度。同时本文还对激活函数进行了优化设计,利用查找表和多项式结合的分段拟合方法设计了激活函数(sigmoid)的硬件电路,以保证近似的激活函数的硬件电路不会使 精度 下降。,下面是一种基于快速滤波算法卷积神经网络加速电路专利的具体信息内容。

1.一种基于快速滤波算法卷积神经网络加速电路,其特征在于,包括:输入数据缓存RAM单元、卷积核系数及偏置值缓存RAM单元、行缓存FIFO单元、卷积计算加速单元、偏置&激活函数&池化计算单元、全连接层权值缓存RAM单元、池化层RAM阵列单元、激活函数sigmoid模及全连接层计算单元。同时,控制单元包括输入数据及卷积核数据缓存控制单元、行缓存循环控制单元、池化数据RAM存储器控制单元、全连接层权值缓存控制单元。所述输入数据缓存RAM单元分别和输入数据及卷积核数据缓存控制单元、行缓存FIFO单元相连接,所述行缓存FIFO单元分别和卷积计算加速单元、池化层RAM阵列单元相连接,卷积核系数及偏置值缓存RAM单元分别和输入数据及卷积核数据缓存控制单元、卷积计算加速单元相连接,所述卷积计算加速单元和偏置&激活函数&池化计算单元相连接,池化层RAM阵列单元分别和池化数据RAM存储器控制单元、行缓存FIFO单元、偏置&激活函数&池化计算单元及全连接层计算单元相连接,全连接层计算单元分别和激活函数sigmoid模块、全连接层权值缓存RAM单元相连接,所述全连接层权值缓存RAM单元和全连接层权值缓存控制单元相连接,其中,输入数据缓存RAM单元用于存储原始图像数据,卷积核系数及偏置值缓存RAM单元用于存储不同的卷积层中卷积核数据及偏置值数据,行缓存FIFO单元用于缓存卷积运算中卷积窗口内的特征数据,卷积计算加速单元用于实现快速滤波算法,以完成特征提取的任务,偏置&激活函数&池化计算单元用于实现非线性变换及下采样,全连接层权值缓存RAM单元用于存储完成神经元全连接的权值数据,池化层RAM阵列单元用于存储池化层中下采样的结果,激活函数sigmoid模块用于实现激活函数的拟合,及全连接层计算单元用于实现特征分类的硬件电路。
2.根据权利要求1所述的一种基于快速滤波算法的卷积神经网络加速器电路,其特征在于,所述卷积神经网络加速器电路是在FPGA上实现的逐层加速硬件架构,通过利用快速滤波算法,该架构并没有为每层都设计特定的硬件,而是设计一组硬件,然后将其重用于所需要使用的不同层中,其中行缓存循环控制单元决定了何时启动每个硬件单元,实现CNN中多个层的计算,实现了一个卷积层,该卷积层被重用于网络中的任何卷积层。
3.根据权利要求1所述的一种基于快速滤波算法的卷积神经网络加速器电路,其特征在于,所述卷积计算加速单元是基于快速滤波算法实现的,二维的快速滤波算法更适用于卷积神经网络的二维矩阵卷积,当为4并行输出时,为了便于理解,只演示一张输入特征图的卷积过程,卷积核用x(i,j)表示,输出用Y(m,n)表示,卷积计算公式如式(1)所示,其中N表示卷积核的尺寸;M表示输出特征图的尺寸,当用快速滤波器算法实现二维卷积运算时,当为4并行输出时,滤波器系数x(i,j)和滤波器输入h(i,j)从i的方向上按间隔2顺序取值如下:
x(i,j)'=[x(i,j),x(i+2,j),…,x(i+N-2,j)]T       (2)
h(i,j)'=[h(i,j),h(i+2,j),…,h(i+N-2,j)]T     (3)
2
然后,再从j的方向上组成Xij和Hij,矢量Xij和Hij的长度为N/4;
Xij=[x(i,j)',x(i,j+2)',…,x(i,j+N-2)']T    (4)
Hij=[h(i,j)',h(i,j+2)',…,h(i,j+N-2)']T   (5)
其中每个元素分别是当前N×N卷积窗口中(i,j)处的卷积核系数和图像像素,因此,对于公式(4)的4并行输出:Y(2m,2n),Y(2m+1,2n),Y(2m,2n+1),Y(2m+1,2n+1),可写成公式(6)的形式,4并行输出其实是输出特征图中一个2×2的矩阵块:
在等式(6)的右侧中,H矩阵在对线方向上有4个相同的矢量对:H2m+1,2n,H2m+1,2n+
1,H2m+1,2n+1,H2m+1,2n+2,因此可以将(6)分解为式(7)的形式;
其中Bi,j和A0,A1可用下列式子表示,
Bi,j=Hi,j+Hi+1,j                        (8)
A0=X00-X10                          (9)
A1=X01-X11                          (10)
其中的乘积项(B2m,2n+B2m,2n+1)X00等是二维滤波器,这个4并行快速滤波器算法将二维卷积运算分解为9个子滤波器和预/后处理来计算一个4输出的块,这些预/后处理运算是通过增加加减法运算数目来减少乘法运算数目,如果忽略这些小开销,对于4并行快速滤波器算法,每个输出采样的乘法复杂度从N2减小到9N2/16。
4.根据权利要求1所述的一种基于快速滤波算法的卷积神经网络加速器电路,其特征在于,所述卷积计算加速单元包括:像素数据预处理运算模块、卷积核系数预处理运算模块、二维子滤波通道模块和二维滤波后处理模块,所述像素数据预处理运算模块、卷积核系数预处理运算模块与二维子滤波通道模块的输入端相连接,所述二维子滤波通道模块的输出端与二维滤波后处理模块的输入端相连接,所述二维滤波后处理的输出端输出卷积结果信号,其中,二维子滤波通道模块共包含9个并行的子滤波通道,每一个子滤波通道均为N2/
4阶的滤波器,令N为偶数。二维子滤波通道模块的输出经过二维滤波后处理模块将其转化成后置加法矩阵中的数据形式,并通过加法运算将输出作为卷积结果信号。
5.根据权利要求1-4之一所述的一种基于快速滤波器算法的卷积神经网络加速器电路,其特征在于,所述全连接层计算单元包括:内积运算模块和激活函数sigmoid运算模块,内积运算模块用于把所有局部特征结合起来抽象成全局特征,激活函数sigmoid运算模块用于非线性变换,非线性函数sigmoid在FPGA上不能直接实现,使用查找表和多项式相结合的方法对sigmoid函数进行分段逼近。

说明书全文

一种基于快速滤波算法卷积神经网络加速电路

技术领域

[0001] 本发明属于数字信号处理及数字集成电路设计领域,更具体涉及一种基于快速滤波算法的卷积神经网络加速器电路,其主要应用领域包括图像识别、图像滤波和图像压缩等。

背景技术

[0002] 卷积神经网络(CNN)是起源于人工神经网络深度学习算法,它在对图像的处理中具有较强的抗位移和形变干扰的能。同时由于CNN在解决高级抽象认知问题上有着显著的成果,使得其在图像分类、模式识别人脸检测等领域得到越来越广泛的应用。其中,图像中手写字符的识别经常会用到卷积神经网络算法。在卷积神经网络算法中,用于特征提取的卷积运算可以看成是一个二维的滤波器。但是,CNN涉及的计算常常需要大量的时间和计算资源。因此,为了促进高速识别,研究者们提出了多种基于FPGA平台的CNN加速器,其中有文献表示卷积层的计算占整个神经网络计算的90%以上。更重要的是,当前用于图像识别的CNN网络结构是以采用小型滤波器的更深层拓扑为趋势的。这时如果还对小型滤波器使用传统的卷积算法,即利用直接卷积结构计算输出特征图中的每个元素,则会降低硬件效率。比如有文献在采用直接卷积结构的基础上提出了增加足够的计算资源来并行执行卷积计算从而产生输出特征图的一行值,这种方法虽然提高了计算性能(GOPS),但是这种计算模式会降低计算单元的利用率,同时消耗大量硬件资源。所以,当算法本身可以更高效时,便能实现更高的硬件效率。如今,很多研究开始尝试各种方法来降低网络的算法复杂度,比如采用量化或以FFT和卷积定理方式来近似卷积层。快速Winograd 算法也可以用于推导复杂度低的有效算法,使其在具有小型滤波器的CNN中发挥作用。
[0003] 在本发明中,我们展示了一种适用于卷积神经网络二维矩阵卷积的快速滤波算法。与直接卷积相比,该算法可以将卷积层的乘法复杂度从N2减小到9N2/16。同时,根据二维的快速滤波算法,本发明生成了复杂度降低的并行滤波结构,从而提高CNN在FPGA上的性能。

发明内容

[0004] 本发明旨在解决以上现有技术的问题。提出了一种减少了卷积神经网络加速器的计算量,消除了二维卷积滤波器卷积窗口之间重叠区域计算的冗余,使得算法强度缩减的基于快速滤波算法的卷积神经网络加速器电路。本发明的技术方案如下:
[0005] 一种基于快速滤波算法的卷积神经网络加速器电路,其包括:输入数据缓存 RAM单元、卷积核系数及偏置值缓存RAM单元、行缓存FIFO单元、卷积计算加速单元、偏置&激活函数&池化计算单元、全连接层权值缓存RAM单元、池化层RAM阵列单元、激活函数sigmoid模块及全连接层计算单元。同时,控制单元包括输入数据及卷积核数据缓存控制单元、行缓存循环控制单元、池化数据RAM存储器控制单元、全连接层权值缓存控制单元。所述输入数据缓存 RAM单元分别和输入数据及卷积核数据缓存控制单元、行缓存FIFO单元相连接,所述行缓存FIFO单元分别和卷积计算加速单元、池化层RAM阵列单元相连接,卷积核系数及偏置值缓存RAM单元分别和输入数据及卷积核数据缓存控制单元、卷积计算加速单元相连接,所述卷积计算加速单元和偏置&激活函数& 池化计算单元相连接,池化层RAM阵列单元分别和池化数据RAM存储器控制单元、行缓存FIFO单元、偏置&激活函数&池化计算单元及全连接层计算单元相连接,全连接层计算单元分别和激活函数sigmoid模块、全连接层权值缓存 RAM单元相连接,所述全连接层权值缓存RAM单元和全连接层权值缓存控制单元相连接,其中,输入数据缓存RAM单元用于存储原始图像数据,卷积核系数及偏置值缓存RAM单元用于存储不同的卷积层中卷积核数据及偏置值数据,行缓存FIFO单元用于缓存卷积运算中卷积窗口内的特征数据,卷积计算加速单元用于实现快速滤波算法,以完成特征提取的任务,偏置&激活函数&池化计算单元用于实现非线性变换及下采样,全连接层权值缓存RAM单元用于存储完成神经元全连接的权值数据,池化层RAM阵列单元用于存储池化层中下采样的结果,激活函数sigmoid模块用于实现激活函数的拟合,及全连接层计算单元用于实现特征分类的硬件电路。
[0006] 进一步的,所述卷积神经网络加速器电路是在FPGA上实现的逐层加速硬件架构,通过利用快速滤波算法,该架构并没有为每层都设计特定的硬件,而是设计一组硬件,然后将其重用于所需要使用的不同层中,其中行缓存循环控制单元决定了何时启动每个硬件单元,实现CNN中多个层的计算,实现了一个卷积层,该卷积层被重用于网络中的任何卷积层。
[0007] 进一步的,所述卷积计算加速单元是基于快速滤波算法实现的,二维的快速滤波算法更适用于卷积神经网络的二维矩阵卷积,当为4并行输出时,为了便于理解,只演示一张输入特征图的卷积过程,卷积核用x(i,j)表示,输出用Y(m,n) 表示,卷积计算公式如式(1)所示,
[0008]
[0009] 其中N表示卷积核的尺寸;M表示输出特征图的尺寸,当用快速滤波器算法实现二维卷积运算时,当为4并行输出时,滤波器系数x(i,j)和滤波器输入h(i,j)从 i的方向上按间隔2顺序取值如下:
[0010] x(i,j)′=[x(i,j),x(i+2,j),…,x(i+N-2,j)]T  (2)
[0011] h(i,j)′=[h(i,j),h(i+2,j),…,h(i+N-2,j)]T  (3)
[0012] 然后,再从j的方向上组成Xij和Hij,矢量Xij和Hij的长度为N2/4;
[0013] Xij=[x(i,j)′,x(i,j+2)′,…,x(i,j+N-2)′]T  (4)
[0014] Hij=[h(i,j)′,h(i,j+2)′,…,h(i,j+N-2)′]T  (5)
[0015] 其中每个元素分别是当前N×N卷积窗口中(i,j)处的卷积核系数和图像像素,因此,对于公式(4)的4并行输出:Y(2m,2n),Y(2m+1,2n),Y(2m,2n+1), Y(2m+1,2n+1),可写成公式(6)的形式,4并行输出其实是输出特征图中一个 2×2的矩阵块:
[0016]
[0017] 在等式(6)的右侧中,H矩阵在对线方向上有4个相同的矢量对:H2m+1,2n, H2m+1,2n+1,H2m+1,2n+1,H2m+1,2n+2,因此可以将(6)分解为式(7)的形式;
[0018]
[0019] 其中Bi,j和A0,A1可用下列式子表示,
[0020] Bi,j=Hi,j+Hi+1,j  (8)
[0021] A0=X00-X10  (9)
[0022] A1=X01-X11  (10)
[0023] 其中的乘积项(B2m,2n+B2m,2n+1)X00等是二维滤波器,这个4并行快速滤波器算法将二维卷积运算分解为9个子滤波器和预/后处理来计算一个4输出的块,这些预/后处理运算是通过增加加减法运算数目来减少乘法运算数目,如果忽略这些小开销,对于4并行快速滤波器算法,每个输出采样的乘法复杂度从N2减小到 9N2/16。
[0024] 进一步的,所述卷积计算加速单元包括:像素数据预处理运算模块、卷积核系数预处理运算模块、二维子滤波通道模块和二维滤波后处理模块,所述像素数据预处理运算模块、卷积核系数预处理运算模块与二维子滤波通道模块的输入端相连接,所述二维子滤波通道模块的输出端与二维滤波后处理模块的输入端相连接,所述二维滤波后处理的输出端输出卷积结果信号,其中,二维子滤波通道模块共包含9个并行的子滤波通道,每一个子滤2
波通道均为N /4阶的滤波器,令N为偶数。二维子滤波通道模块的输出经过二维滤波后处理模块将其转化成后置加法矩阵中的数据形式,并通过加法运算将输出作为卷积结果信号。
[0025] 进一步的,所述全连接层计算单元包括:内积运算模块和激活函数sigmoid 运算模块,内积运算模块用于把所有局部特征结合起来抽象成全局特征,激活函数sigmoid运算模块用于非线性变换,非线性函数sigmoid在FPGA上不能直接实现,使用查找表和多项式相结合的方法对sigmoid函数进行分段逼近。
[0026] 本发明的优点及有益效果如下:
[0027] 本发明展示了一种适用于卷积神经网络二维矩阵卷积的快速滤波算法,并利用该算法提出了一种基于快速滤波器算法的卷积神经网络加速器电路。首先,本发明设计了在FPGA上实现CNN的逐层加速硬件架构,用于有效利用快速滤波算法。该架构并没有为每层都设计特定的硬件。而是设计一组硬件,然后将其重用于所需要使用的不同层中,其中行缓存循环控制单元决定了何时启动每个硬件单元。这种架构可以用较少的资源实现CNN中多个层的计算。同时,由于二维的快速滤波算法更适用于卷积神经网络的二维矩阵卷积。所以根据二维的快速滤波算法,本发明生成了复杂度降低的并行滤波结构,从而提高CNN在 FPGA上的性能,更具体的,本发明采用的是4并行快速滤波算法,因为这不仅能够为卷积运算提供更快速的计算能力,而且由于其4并行的特点与池化层的池化运算所需的池化窗口特点一致,所以在池化运算时,可以省去池化窗口的缓存时间,这使得系统的计算速度提高,并使系统的适用性更加广泛。在电路实现中,本发明主要以消耗的FPGA硬件开销和计算性能GOPS(每秒十亿次运算数)来衡量实验结果。实验结果表明在Xilinx Kintex7 325t器件中进行的电路设计时,对于MNIST数据集的手写数字识别的识别率达到了98.69%,并且电路的计算性能达到了20.49GOPS。
[0028] 卷积计算加速单元包括:预处理运算、并行滤波部分和后处理运算,所述预处理运算的输入端与数据输入信号和卷积核输入信号相连接,所述预处理运算的输出端与并行滤波部分的输入端相连接,所述并行滤波部分的输出端与后处理运算的输入端相连接,所述后处理运算的输出端输出卷积结果信号。其中,所述预处理运算的主要功能是将二进制的数据输入信号和卷积核输入信号排列成前置加法矩阵中的数据形式,然后经过加法运算实现相关数据的预处理,并将输出作为并行滤波部分的输入;所述并行滤波部分中共包含9个并行的子滤波通道,每一个滤波通道均为N2/4(令N为偶数)阶的滤波器,并行滤波部分的输出还需经过后处理运算将其转化成后置加法矩阵中的数据形式,并通过加法运算将输出作为卷积结果信号。
[0029] 卷积计算加速单元中的并行滤波部分是由9个并行的子滤波通道构成。它利用了快速滤波器算法的算法强度缩减在并行滤波器中的应用,消除了二维卷积滤波器卷积窗口块之间重叠区域计算的冗余。本发明采用的是4并行滤波器算法,这样不仅能够提供更快速的运算,使得系统的适用性更加广泛,并且算法强度缩减利用共享子结构达到了缩减硬件复杂度的效果,提升了运算效率。其中,共享的卷积计算加速单元还包括了预处理和后处理加法运算模块,而预处理和后处理加法运算模块是以增加诸如加法运算这样的弱运算数目作为代价,用来实现减少诸如乘法运算这样的强运算数目。这对于可编程硬件FPGA实现来说,可以降低电路的硬件资源消耗,同时可提升系统的整体运行速度。
[0030] 全连接层计算单元包括:内积运算和激活函数sigmoid运算。非线性函数 sigmoid在FPGA上不能直接实现,需要使用一些函数逼近的方法。sigmoid函数具有关于点(0,0.5)对称的性质,即f(x)=1-f(x)。同时函数的自变量x在y 轴附近弧度明显,比较适合做多项式逼近,而在远离y轴的时候,函数的曲线比较平坦近于常数。因此使用查找表和多项式相结合的方法对sigmoid函数进行分段逼近。附图说明
[0031] 图1是本发明提供优选实施例提供卷积神经网络加速器电路的系统框图
[0032] 图2是本发明中卷积运算加速单元结构图;
[0033] 图3(a)表示卷积运算加速单元中预处理模块的逻辑电路,图3(b)表示卷积运算加速单元中后处理模块的逻辑电路,图3(c)表示卷积运算加速单元中子滤波通道的逻辑电路;
[0034] 图4是本发明中激活函数sigmoid的拟合电路结构图。

具体实施方式

[0035] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
[0036] 本发明解决上述技术问题的技术方案是:
[0037] 如图1是本发明提供的实现卷积神经网络加速器电路的系统框图。该框图描述了在FPGA上实现CNN的逐层加速硬件架构。该架构并没有为每层都设计特定的硬件。而是设计一组硬件,然后将其重用于所需要使用的不同层中,其中行缓存循环控制单元决定了何时启动每个硬件单元。这种架构可以用较少的资源实现CNN中多个层的计算。比如,本文实现了一个卷积层,该卷积层被重用于网络中的任何卷积层。图1中,该架构由若干个子系统构成,各子系统结构对应了卷积神经网络中的主要运算层,即卷积层,池化层和全连接层。其中,主要的行缓冲循环控制单元用于有效地管理不同卷积窗口之间以及不同运算层之间的输入特征图数据,并通过其标志信号启动卷积计算加速单元,以实现逐层加速。在行缓存循环控制单元的设计中,我们首先采用循环变换方法对多级循环嵌套的卷积计算进行循环分块,然后利用循环展开实现分块的循环结构到局部并行结构的设计。这里只对两个输入输出特征图维度进行循环分块。另一个重要的卷积计算加速单元则共享于逐层加速过程中的特征提取阶段,该单元由复杂度降低的并行滤波结构组成。
[0038] 图2是本发明中卷积运算加速单元结构图。卷积计算加速单元包括:预处理运算、并行滤波部分和后处理运算,所述预处理运算的输入端与数据输入信号和卷积核输入信号相连接,所述预处理运算的输出端与并行滤波部分的输入端相连接,所述并行滤波部分的输出端与后处理运算的输入端相连接,所述后处理运算的输出端输出卷积结果信号。
[0039] 图3(a)表示卷积运算加速单元中预处理模块的逻辑电路,预处理运算的主要功能是将二进制的数据输入信号和卷积核输入信号排列成前置加法矩阵中的数据形式,然后经过加法运算实现相关数据的预处理,并将输出作为并行滤波部分的输入;图3(b)表示卷积运算加速单元中后处理模块的逻辑电路,后处理运算将并行子滤波通道的输出转化成后置加法矩阵中的数据形式,并通过加减法运算将输出作为卷积结果信号。图3(c)表示卷积运算加速单元中子滤波通道的逻辑电路。并行滤波部分中共包含9个并行的子滤波通道,每一个滤波通道均为N2/4(令N为偶数)阶的滤波器。
[0040] 图4是本发明中激活函数sigmoid的拟合电路结构图。首先,借助MATLAB 软件分段逼近sigmoid函数,确定分段区间、分段数目及分段区间内的拟合多项式和近似常数值,并保证误差的数量级在0.001以下。然后,将多项式的系数经过量化存入寄存器,以及将拟合曲线的常数值经过量化后放入查找表。其中的多路器(MUX)用于判定量化后的输入数据所在的区间,乘加和移位则是用于二次方程的计算电路。
[0041] 以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈