一种卷积神经网络算法的FPGA并行系统技术方案

技术编号:19821171 阅读:19 留言:0更新日期:2018-12-19 14:29
本发明专利技术请求保护一种卷积神经网络算法的FPGA并行系统。主要分为:输入缓存、权值缓存、缓存控制及计算加速单元等4个主要模块。其中,实现了CNN算法中每层的卷积计算单元和池化计算单元及相应的缓存单元控制,产生所有局部的数据特征向量,实现全连接层将局部特征数据结合起来变成全局特征数据,完成特征分类计算。通过配置卷积运算单元,利用CNN的并行计算特征以及循环变换方法,实现可高效进行并行流水化卷积计算单元电路。提高了电路的整体性能。

【技术实现步骤摘要】
一种卷积神经网络算法的FPGA并行系统
本专利技术属于数字信号处理、数字集成电路设计
,具体涉及一种卷积神经网络(CNN)算法的FPGA并行系统设计。
技术介绍
近年来,神经网络领域依靠深度学习技术使其算法性能方面的优异表现被广泛关注,其中卷积神经网络表现突出,其中的一个典型应用场景是图像中手写数字的识别。在图像中手写数字的识别应用中,对于卷积神经网络的训练过程,所输入的样本集是由(输入向量,给定标签)这样的向量所组成,通过用大量的样本进行网络训练,构造输入和输出之间的映射关系,这样大量的统计训练不但可以实现较高识别率,同时不需要对输入样本与标签进行精确的数学表述。卷积神经网络中存在大量独立、重复的乘法和加法运算,并且这些计算过程涉及大量数据访问以及中间数据的存储。为了提高CNN算法的硬件电路性能,采用具有很多专用算术功能单元、大量通用逻辑资源、片上存储资源、外围I/O接口和高速网络接口的FPGA器件是一个非常好的选择。
技术实现思路
本专利技术旨在解决以上现有技术的问题。提出了一种提高电路性能和减少硬件资源使用的卷积神经网络算法的FPGA并行系统。本专利技术的技术方案如下:一种卷积神经网络算法的FPGA并行系统,其包括:输入缓存模块、权值缓存模块、缓存控制模块及计算加速单元,其中,所述输入缓存模块用于保存输入图像数据,权值缓存模块用于保存每层所需的权值数据,缓存控制模块用于产生控制逻辑信号,控制数据流在各模块之间传递的先后关系及状态标志信号,计算加速单元用于实现卷积神经网络中的核心运算,完成卷积核与特征图之间的卷积运算、池化运算及全连接层运算,所述计算加速单元包括第一层卷积计算模块、第二层卷积计算模块、输入寄存器组、权值寄存器组、第一输出FIFO阵列、第一池化计算模块、第二池化计算模块、第二输出FIFO阵列、中间结果输出RAM阵列、输出RAM阵列及全连接层计算模块,其中,输入缓存模块与输入寄存器组相连接,所述输入寄存器组与第一层卷积计算模块相连接,所述权值缓存模块与权值寄存器组相连接,所述权值寄存器组与第一层卷积计算模块相连接,所述第一层卷积计算模块与第一输出FIFO阵列相连接,所述第一输出FIFO阵列与第一池化计算模块相连接,所述第一池化计算模块与中间结果输出RAM阵列相连接,所述中间结果输出RAM阵列与第二层卷积计算模块相连接,所述第二层卷积计算模块与第二输出FIFO阵列相连接,所述第二输出FIFO阵列依次通过第二池化计算模块、输出RAM阵列与全连接层计算模块相连接。进一步的,所述第一层卷积计算模块、第二层卷积计算模块采用均匀分块对多个卷积运算循环进行处理,第一层卷积计算模块的循环分块尺寸为<Tm,Tn>=<3,1>,第二层卷积计算模块的循环分块尺寸为<Tm,Tn>=<6,3>。进一步的,所述缓存控制模块采用乒乓缓存设计,输入像素点以数据流的方式输入CNN算法的第一个卷积层,每层计算结束后会把输出结果送到下一层模块中,每层循环分块后进行乒乓缓存Buffer设计以实现数据存储,即当前的Buffer在工作完成时,另一块Buffer已经存储好下一次需要的数据。进一步的,所述第一层卷积计算模块、第二层卷积计算模块的卷积核大小为5×5,卷积核滑动步长为1;第一池化计算模块、第二池化计算模块采用最大池法,其滑动窗口大小为2×2,滑动步长为2。进一步的,所述第一层卷积计算模块、第二层卷积计算模块的计算公式如下:式中为第l隐含层的第j个输出特征图,为第l层的第j个卷积核的第i个系数,为第l卷积层的第j个输出特征对应的偏置系数,Mi为第l层卷积运算对输入特征图的选择,f(x)为激活函数。进一步的,还包括控制模块,所述控制模块控制数据流在各模块之间传递的先后关系以及模块之间互联通信的控制、握手信号,首先,控制逻辑产生数据请求信号,在该信号的控制下输入的像素数据流与系统时钟同步,并在每个周期后更新数据;然后输入的像素数据被送入到系统中各个并行或串行子系统的功能模块,完成若干个特征映射图的运算;最后,在经过逐层特征提取后,需要进行特征分类,它把多路局部特征数据流组合成全局特征送入到全连接层内积运算模块进行分类。进一步的,所述第一层卷积计算模块、第二层卷积计算模块包括K个输入图像的宽度为N的FIFO缓存阵列作为输入的数据通路,以及K2个乘法器和K2个加法器,其中K2-1个加法器用作二维卷积基本计算单元自身的卷积运算,另外一个加法器作为多个二维卷积计算单元的累加单元。本专利技术的优点及有益效果如下:本专利技术在硬件实现过程中,主要以卷积神经网络消耗的MAC算术运算单元的数量来衡量FPGA的硬件开销,以实现每秒运行的操作数来衡量网络的计算性能GOPS(每秒十亿次运算数)。其中GOPS的公式如下式:计算性能=操作总数/执行周期数操作总数=2×R×C×M×N×K×K;执行周期数为完成计算所需的时钟周期,一般取实际测量值。其中N和M分别为输入和输出特征图的数量,R和C分别为输出特征图的行列数,K为卷积核的尺寸。本专利技术的优点在于利用了CNN的并行计算特征以及循环变换方法,实现可高效进行并行流水化卷积计算单元电路,而这有利于提高电路的整体性能,使得计算性能GOPS得到提升。实验结果表明在XilinxVirtex7485t器件中进行的电路设计,对于MNIST数据集的手写数字识别的识别率达到了98.81%,并且电路的计算性能达到了20.62GOPS。附图说明图1是本专利技术提供优选实施例CNN卷积神经网络硬件架构图;图2是3×3内核的卷积层操作;图3是卷积基本计算模块硬件电路;图4是卷积层卷积计算模块及缓存设计模块。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本专利技术的一部分实施例。本专利技术解决上述技术问题的技术方案是:本专利技术选择在FPGA器件上实现6层结构的CNN算法。为了提高电路性能和减少硬件资源使用,本专利技术对其CNN算法的计算模式进行了重新划分,并采用循环分块和兵乓缓存以增加计算单元利用率和减少存储器的访存时间。并针对手写数字图像集MNIST中的样本进行了具体分析。本专利技术的具体技术方案如下:1.对于CNN卷积神经网络,建立的CNN模型。其结构包括:一个输入层(input)、两个卷积层(C1和C2)、两个池化层(S1和S2)和一个全连接层(FC)。其中卷积核大小为5×5,卷积核滑动步长为1;池化层采用最大池法,其滑动窗口大小为2×2,滑动步长为2;其中的每一层计算都是在FPGA器件中进行。同时这里的卷积层采用局部感知和权值共享大幅度减少权值参数数目,这种计算方式本身更贴合生物神经网络结构,在保证结果准确度的同时,降低了网络的复杂性。其中卷积神经网络(CNN)的卷积层计算公式如下:式中为第l隐含层的第j个输出特征图,为第l层的第j个卷积核的第i个系数,为第l卷积层的第j个输出特征对应的偏置系数,Mi为第l层卷积运算对输入特征图的选择,f(x)激活函数。2.本专利技术的所设计的卷积神经网络先在MATLAB中进行训练,再将训练好的卷积核参数、偏置参数以及全连接层的权重参数保存在F本文档来自技高网...

【技术保护点】
1.一种卷积神经网络算法的FPGA并行系统,其特征在于,包括:输入缓存模块、权值缓存模块、缓存控制模块及计算加速单元,其中,所述输入缓存模块用于保存输入图像数据,权值缓存模块用于保存每层所需的权值数据,缓存控制模块用于产生控制逻辑信号,控制数据流在各模块之间传递的先后关系及状态标志信号,计算加速单元用于实现卷积神经网络中的核心运算,完成卷积核与特征图之间的卷积运算、池化运算及全连接层运算,所述计算加速单元包括第一层卷积计算模块、第二层卷积计算模块、输入寄存器组、权值寄存器组、第一输出FIFO阵列、第一池化计算模块、第二池化计算模块、第二输出FIFO阵列、中间结果输出RAM阵列、输出RAM阵列及全连接层计算模块,其中,输入缓存模块与输入寄存器组相连接,所述输入寄存器组与第一层卷积计算模块相连接,所述权值缓存模块与权值寄存器组相连接,所述权值寄存器组与第一层卷积计算模块相连接,所述第一层卷积计算模块与第一输出FIFO阵列相连接,所述第一输出FIFO阵列与第一池化计算模块相连接,所述第一池化计算模块与中间结果输出RAM阵列相连接,所述中间结果输出RAM阵列与第二层卷积计算模块相连接,所述第二层卷积计算模块与第二输出FIFO阵列相连接,所述第二输出FIFO阵列依次通过第二池化计算模块、输出RAM阵列与全连接层计算模块相连接。...

【技术特征摘要】
1.一种卷积神经网络算法的FPGA并行系统,其特征在于,包括:输入缓存模块、权值缓存模块、缓存控制模块及计算加速单元,其中,所述输入缓存模块用于保存输入图像数据,权值缓存模块用于保存每层所需的权值数据,缓存控制模块用于产生控制逻辑信号,控制数据流在各模块之间传递的先后关系及状态标志信号,计算加速单元用于实现卷积神经网络中的核心运算,完成卷积核与特征图之间的卷积运算、池化运算及全连接层运算,所述计算加速单元包括第一层卷积计算模块、第二层卷积计算模块、输入寄存器组、权值寄存器组、第一输出FIFO阵列、第一池化计算模块、第二池化计算模块、第二输出FIFO阵列、中间结果输出RAM阵列、输出RAM阵列及全连接层计算模块,其中,输入缓存模块与输入寄存器组相连接,所述输入寄存器组与第一层卷积计算模块相连接,所述权值缓存模块与权值寄存器组相连接,所述权值寄存器组与第一层卷积计算模块相连接,所述第一层卷积计算模块与第一输出FIFO阵列相连接,所述第一输出FIFO阵列与第一池化计算模块相连接,所述第一池化计算模块与中间结果输出RAM阵列相连接,所述中间结果输出RAM阵列与第二层卷积计算模块相连接,所述第二层卷积计算模块与第二输出FIFO阵列相连接,所述第二输出FIFO阵列依次通过第二池化计算模块、输出RAM阵列与全连接层计算模块相连接。2.根据权利要求1所述的一种卷积神经网络算法的FPGA并行系统,其特征在于,所述第一层卷积计算模块、第二层卷积计算模块采用均匀分块对多个卷积运算循环进行处理,第一层卷积计算模块的循环分块尺寸为<Tm,Tn>=<3,1>,第二层卷积计算模块的循环分块尺寸为<Tm,Tn>=<6,3>。3.根据权利要求1所述的一种卷积神经网络算法的FPGA并行系统,其特征在于,所述缓存控制模块采...

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

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

1