一种卷积神经网络的FPGA并行加速方法技术

技术编号:16780186 阅读:25 留言:0更新日期:2017-12-13 00:15
本发明专利技术为一种卷积神经网络的FPGA并行加速方法,包括如下步骤:(1)建立CNN模型;(2)配置硬件架构;(3)配置卷积运算单元;本发明专利技术的有益效果在于:本方法使用FPGA来实现CNN,通过设计了优化硬件加速方案,使得相对于手写图像数据集MNIST的卷积神经网络计算,相较于GPU实现近5倍的加速,相较于12核的CPU实现10倍的加速,而功耗只有GPU的1/3。

FPGA parallel acceleration method for a convolution neural network

FPGA the present invention relates to a convolutional neural network parallel acceleration method, which comprises the following steps: (1) the establishment of CNN model; (2) the configuration of the hardware architecture; (3) the allocation of the convolution unit; the invention has the advantages that: the method of using FPGA to realize CNN, through the design of hardware acceleration optimization scheme, the compared with the convolutional neural network handwritten image data sets MNIST calculation, to achieve nearly 5 times faster than GPU, accelerated compared to 12 nuclear CPU achieve 10 times, while the power consumption is only GPU 1/3.

【技术实现步骤摘要】
一种卷积神经网络的FPGA并行加速方法
本专利技术计算机计算领域,特别涉及一种卷积神经网络的FPGA并行加速方法。
技术介绍
卷积神经网络(ConvolutionalNeutralNetwork)是人工神经网络的一种。CNN是第一个真正成功训练多层网络结构的学习算法。它利用空间关系,采用权值共享网络结构,使之更类似于生物神经网络,降低了网络模型的复杂度并减少了权值的数量,以提高一般前向BP算法的训练性能。该优点在网络的输入是多维图像时表现得更明显。另一方面,在CNN中,图像可以直接作为网络的底层输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著的特征,避免了传统识别算法中复杂的特征提取和数据重建。这个方法能够获取对平移、缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础的特征,例如定向边缘或者角点。CNN的这些优点使得它如今已成为当前语音分析和图像识别领域的研究热点。AT&T的支票读取系统、微软的OCR和手写识别系统、Google街景中的人脸识别和车牌识别以及法国电信视频会议系统中的人脸识别都用到了CNN。现有的大部分CNN实现主要是基于通用处理器CPU实现的。在CNN网络结构中,层内计算是独立不相关的,而层间结构可以理解为是一个流水结构。CPU由于其自身特点无法充分地挖掘CNN内部的并行性。FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,作为一种计算密集型加速部件,通过将算法映射到FPGA上的并行硬件进行加速。FPGA上所设计的各个硬件模块可以并行执行。各个硬件模块输入输出的相互连接以及FPGA所提供的流水结构可以很好地和CNN算法相匹配,充分利用算法网络结构内部的并行性,在提高运算速度的同时缩小了能耗。之前已经有学者在FPGA上实现了不同结构的CNN来做简单的实时图像识别或分类,但并没有完全发挥出FPGA的计算潜能,并具有较差的扩展性。
技术实现思路
本专利技术的目的就是克服现有技术的不足,而提出的一种卷积神经网络的FPGA并行加速方法。本专利技术的技术方案是,一种卷积神经网络的FPGA并行加速方法,包括如下步骤:(1)建立CNN模型,该模型包括一个输入层input、一个输出层output、两个卷积层、两个池化和一个全连接网络Softmax,其中,输入层输入的图像集为手写数字图像集MNIST,每幅图像的大小为28×28像素点;(2)配置硬件架构,采用FPGA电路板通过带宽为8GB/s的PCIExpress2.0x8与CPU进行连接;CNN在FPGA上的实现采用流水结构,图像数据的输入是以数据流的方式进行流入,在每个时钟周期内传入一个图像的像素点,网络中的每一层需要每时钟输入一个值并且输出一个值;(3)配置卷积运算单元,在网络的各层中,对卷积层做以下配置:(a)将单个卷积运算继续拆分实现并行化,使得单个卷积运算能够在每个时钟周期输出一个点;(b)将同一层内的多个卷积运算进行并行化,使得在给定的时钟周期内能够同时流出完该层的多个特征图;其中,(a)中根据硬件电路的数据流的特点设置卷积运算单元(CCU),使得在单个FPGA周期就可以完成整个5×5大小卷积运算。本专利技术的有益效果在于:本方法使用FPGA来实现CNN,通过设计了优化硬件加速方案,使得相对于手写图像数据集MNIST的卷积神经网络计算,相较于GPU实现近5倍的加速,相较于12核的CPU实现10倍的加速,而功耗只有GPU的1/3。附图说明图1为本专利技术CNN模型结构。图2为本专利技术CNN-FPGA硬件架构设计。图3为本专利技术3×3卷积运算单元(CCU)电路简图。具体实施方式下面,结合附图对于本专利技术进行如下详细说明:本专利技术的一卷积神经网络的FPGA并行加速方法包括如下几点:一是CNN模型结构。本专利技术所采用的CNN模型结构是由1个输入层input,1个输出层output,2个卷积层,2个池化和一个全连接网络Softmax组成,如图1所示。在本文实验中,输入的图像集为手写数字图像集MNIST。每幅图像的大小为28×28像素点。具体的网络结构如下:Inputlayer:28×28;C1Convlayer:3kernels,eachwithsize5×5,stride=1;S1Max-poolinglayer:eachwithsize2×2,stride=2,β=1.0b=0.0;C2Convlayer:6kernels,eachwithsize5×5,stride=1;S2Max-poolinglayer:eachwithsize2×2,stride=2,β=1.0b=0.0;Softmax:output:10vector(classificationresult).其中kernel是卷积核,都采用大小为5×5的卷积核对特征图像进行卷积操作;kernel的stride表示卷积核在特征图像上做卷积的平移步数。在上述模型中涉及的权重系数以及偏置系数个数如下:w参数个数计算公式:w参数个数=卷积核个数×单个卷积核的w参数个数b参数个数计算公式:b参数个数=卷积核个数(1)第一层:w参数个数为3×25=75个,b参数个数为3个。(2)第二层:w参数个数为(3×6)×25=450个,b参数个数为18个。(3)Softmax层:w参数个数为6×4×4×10=960个,b参数个数为1个。三层所有参数个数的总数为1507个,如果采用float来存储参数的话,每个参数占32位,则总共消耗的存储约为6kB,非常得小,PCIE的带宽为8GB/s,因此参数的传输时间占得比重很低。而且这些权重以及偏执参数在较长的时间内是不会发生改变,需要多次的前向操作后才会更新。考虑到程序的扩展性,这些参数通过DRAM传入。二是硬件架构设计。本专利技术使用的FPGA电路板通过带宽为8GB/s的PCIExpress2.0x8与CPU进行连接,在FPGA板上有最大带宽为38GB/s的24GB的的DDR3DRAM。CNN算法中每一层算完之后需要把该层所有的输出信息作为下一层的输入,此时该层将会停止运作,直至当前的图片被完全地处理完。FPGA不同于CPU,单核CPU每一时刻只能执行一条指令,而FPGA上的硬件模块可以同时进行运算。因此如果CNN在FPGA上的实现采用流水结构可以大大提高资源的使用效率。图像数据的输入是以数据流的方式进行流入,在每个时钟周期内传入一个图像的像素点。因此在最理想的情况下,每28×28个时钟周期便可以完成对一幅图像的运算。为了达到这种效果,网络中的每一层需要每时钟输入一个值并且输出一个值。如图2所示,在CPU端,读取了输入的训练数据图像集,对输入图像做归一化预处理之后,通过PCIE总线传输给DataflowEngine;CNN中用到的参数w和参数b是在CPU中初始化的,也通过PCIE传输到DataflowEngine的FastMemory当中,这样将加快卷积运算取参数的过程;DataflowEngine中实现了2个卷积层和1个softmax全连接层的硬件电路,数据流过DataflowEngine之后将会产生图像的分类结果并将结果传回CPU。三是卷积运算单元设计。在网络的各层本文档来自技高网
...
一种卷积神经网络的FPGA并行加速方法

【技术保护点】
一种卷积神经网络的FPGA并行加速方法,其特征在于,包括如下步骤:(1)建立CNN模型,该模型包括一个输入层input、一个输出层output、两个卷积层、两个池化和一个全连接网络Softmax,其中,输入层输入的图像集为手写数字图像集MNIST,每幅图像的大小为28×28像素点;(2)配置硬件架构,采用FPGA电路板通过带宽为8GB/s的PCI Express 2.0 x8与CPU进行连接;CNN在FPGA上的实现采用流水结构,图像数据的输入是以数据流的方式进行流入,在每个时钟周期内传入一个图像的像素点,网络中的每一层需要每时钟输入一个值并且输出一个值;(3)配置卷积运算单元,在网络的各层中,对卷积层做以下配置:(a)将单个卷积运算继续拆分实现并行化,使得单个卷积运算能够在每个时钟周期输出一个点;(b)将同一层内的多个卷积运算进行并行化,使得在给定的时钟周期内能够同时流出完该层的多个特征图;其中,(a)中根据硬件电路的数据流的特点设置卷积运算单元(CCU),使得在单个FPGA周期就可以完成整个5×5大小卷积运算。

【技术特征摘要】
1.一种卷积神经网络的FPGA并行加速方法,其特征在于,包括如下步骤:(1)建立CNN模型,该模型包括一个输入层input、一个输出层output、两个卷积层、两个池化和一个全连接网络Softmax,其中,输入层输入的图像集为手写数字图像集MNIST,每幅图像的大小为28×28像素点;(2)配置硬件架构,采用FPGA电路板通过带宽为8GB/s的PCIExpress2.0x8与CPU进行连接;CNN在FPGA上的实现采用流水结构,图像数据的输入是以数据流的方式...

【专利技术属性】
技术研发人员:徐杰包秀国陈训逊王博王东安
申请(专利权)人:国家计算机网络与信息安全管理中心
类型:发明
国别省市:北京,11

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

1