一种基于快速滤波算法的卷积神经网络加速器电路制造技术

技术编号:21479318 阅读:38 留言:0更新日期:2019-06-29 05:11
本发明专利技术请求保护一种基于快速滤波算法的卷积神经网络加速器电路。为了减少卷积神经网络算法(CNN)的计算量,本发明专利技术利用快速滤波算法消除了二维卷积运算中卷积窗口之间重叠区域计算的冗余,使得算法强度缩减,提高了卷积计算效率。接着,本发明专利技术设计了4并行快速滤波算法的卷积计算加速单元,该单元采用若干小滤波器组成的复杂度较低的并行滤波结构来实现。这对于可编程的FPGA设计来说,不仅可以降低硬件资源的消耗,还可以提升运行速度。同时本文还对激活函数进行了优化设计,利用查找表和多项式结合的分段拟合方法设计了激活函数(sigmoid)的硬件电路,以保证近似的激活函数的硬件电路不会使精度下降。

【技术实现步骤摘要】
一种基于快速滤波算法的卷积神经网络加速器电路
本专利技术属于数字信号处理及数字集成电路设计领域,更具体涉及一种基于快速滤波算法的卷积神经网络加速器电路,其主要应用领域包括图像识别、图像滤波和图像压缩等。
技术介绍
卷积神经网络(CNN)是起源于人工神经网络的深度学习算法,它在对图像的处理中具有较强的抗位移和形变干扰的能力。同时由于CNN在解决高级抽象认知问题上有着显著的成果,使得其在图像分类、模式识别、人脸检测等领域得到越来越广泛的应用。其中,图像中手写字符的识别经常会用到卷积神经网络算法。在卷积神经网络算法中,用于特征提取的卷积运算可以看成是一个二维的滤波器。但是,CNN涉及的计算常常需要大量的时间和计算资源。因此,为了促进高速识别,研究者们提出了多种基于FPGA平台的CNN加速器,其中有文献表示卷积层的计算占整个神经网络计算的90%以上。更重要的是,当前用于图像识别的CNN网络结构是以采用小型滤波器的更深层拓扑为趋势的。这时如果还对小型滤波器使用传统的卷积算法,即利用直接卷积结构计算输出特征图中的每个元素,则会降低硬件效率。比如有文献在采用直接卷积结构的基础上提出了增加足够的计算资源来并行执行卷积计算从而产生输出特征图的一行值,这种方法虽然提高了计算性能(GOPS),但是这种计算模式会降低计算单元的利用率,同时消耗大量硬件资源。所以,当算法本身可以更高效时,便能实现更高的硬件效率。如今,很多研究开始尝试各种方法来降低网络的算法复杂度,比如采用量化或以FFT和卷积定理方式来近似卷积层。快速Winograd算法也可以用于推导复杂度低的有效算法,使其在具有小型滤波器的CNN中发挥作用。在本专利技术中,我们展示了一种适用于卷积神经网络二维矩阵卷积的快速滤波算法。与直接卷积相比,该算法可以将卷积层的乘法复杂度从N2减小到9N2/16。同时,根据二维的快速滤波算法,本专利技术生成了复杂度降低的并行滤波结构,从而提高CNN在FPGA上的性能。
技术实现思路
本专利技术旨在解决以上现有技术的问题。提出了一种减少了卷积神经网络加速器的计算量,消除了二维卷积滤波器卷积窗口块之间重叠区域计算的冗余,使得算法强度缩减的基于快速滤波算法的卷积神经网络加速器电路。本专利技术的技术方案如下:一种基于快速滤波算法的卷积神经网络加速器电路,其包括:输入数据缓存RAM单元、卷积核系数及偏置值缓存RAM单元、行缓存FIFO单元、卷积计算加速单元、偏置&激活函数&池化计算单元、全连接层权值缓存RAM单元、池化层RAM阵列单元、激活函数sigmoid模块及全连接层计算单元。同时,控制单元包括输入数据及卷积核数据缓存控制单元、行缓存循环控制单元、池化数据RAM存储器控制单元、全连接层权值缓存控制单元。所述输入数据缓存RAM单元分别和输入数据及卷积核数据缓存控制单元、行缓存FIFO单元相连接,所述行缓存FIFO单元分别和卷积计算加速单元、池化层RAM阵列单元相连接,卷积核系数及偏置值缓存RAM单元分别和输入数据及卷积核数据缓存控制单元、卷积计算加速单元相连接,所述卷积计算加速单元和偏置&激活函数&池化计算单元相连接,池化层RAM阵列单元分别和池化数据RAM存储器控制单元、行缓存FIFO单元、偏置&激活函数&池化计算单元及全连接层计算单元相连接,全连接层计算单元分别和激活函数sigmoid模块、全连接层权值缓存RAM单元相连接,所述全连接层权值缓存RAM单元和全连接层权值缓存控制单元相连接,其中,输入数据缓存RAM单元用于存储原始图像数据,卷积核系数及偏置值缓存RAM单元用于存储不同的卷积层中卷积核数据及偏置值数据,行缓存FIFO单元用于缓存卷积运算中卷积窗口内的特征数据,卷积计算加速单元用于实现快速滤波算法,以完成特征提取的任务,偏置&激活函数&池化计算单元用于实现非线性变换及下采样,全连接层权值缓存RAM单元用于存储完成神经元全连接的权值数据,池化层RAM阵列单元用于存储池化层中下采样的结果,激活函数sigmoid模块用于实现激活函数的拟合,及全连接层计算单元用于实现特征分类的硬件电路。进一步的,所述卷积神经网络加速器电路是在FPGA上实现的逐层加速硬件架构,通过利用快速滤波算法,该架构并没有为每层都设计特定的硬件,而是设计一组硬件,然后将其重用于所需要使用的不同层中,其中行缓存循环控制单元决定了何时启动每个硬件单元,实现CNN中多个层的计算,实现了一个卷积层,该卷积层被重用于网络中的任何卷积层。进一步的,所述卷积计算加速单元是基于快速滤波算法实现的,二维的快速滤波算法更适用于卷积神经网络的二维矩阵卷积,当为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)然后,再从j的方向上组成Xij和Hij,矢量Xij和Hij的长度为N2/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。进一步的,所述卷积计算加速单元包括:像素数据预处理运算模块、卷积核系数预处理运算模块、二维子滤波通道模块和二维滤波后处理模块,所述像素数据预处理运算模块、卷积核系数预处理运算模块与二维子滤波通道模块的输入端相连接,所述二维子滤波通道模块的输出端与二维滤波后处理模块的输入端相连接,所述二维滤波后处理的输出端输出卷积结果信号,其中,二维子滤波通道模块共包含9个并行的子滤波通道,每一个子滤波通道均为N2/4阶的滤波器,令N为偶数。二维子滤波通道模块的输出经过二维滤波后处理模块将其转化成后置本文档来自技高网
...

【技术保护点】
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模块用于实现激活函数的拟合,及全连接层计算单元用于实现特征分类的硬件电路。...

【技术特征摘要】
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并...

【专利技术属性】
技术研发人员:王巍周凯利王伊昌王广赵汝法袁军
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:重庆,50

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

1