一种基于FPGA的卷积神经网络实现方法及装置制造方法及图纸

技术编号:16346572 阅读:32 留言:0更新日期:2017-10-03 22:33
本发明专利技术提供一种基于FPGA的卷积神经网络实现方法及装置,上述方法包括以下步骤:基于FPGA实现的卷积神经网络中的多层之间串行处理、通过全局存储器进行数据交互;使用OpenCL编程语言在所述FPGA上实现所述卷积神经网络的处理过程,解决由于卷积神经网络结构复杂,网络结构发展迅速,使用传统的VHDL/Verilog语言开发效率低、成本高的问题。

【技术实现步骤摘要】
一种基于FPGA的卷积神经网络实现方法及装置
本专利技术属于计算机领域,尤其涉及一种基于FPGA的卷积神经网络实现方法及装置。
技术介绍
FPGA,即现场可编程门阵列,是一种高速、高密度的半定制IC芯片。原厂(如XILINX、ALTERA、LATTICE等)生产出的是空白的不含配置信息的FPGA芯片,用户可根据自己的需要,利用片上所提供的各种资源开发自己的逻辑,将生成的配置信息写入,从而将其变成自己所需功能的芯片,FPGA可近乎不限次数反复重配。不同于CPU的是,FPGA上的所有逻辑资源都可以以自己的时钟频率并行运行,所以很适合高计算密度算法的实现。卷积神经网络(CNN)是人工神经网络的一种,广泛应用于图像分类、目标识别、行为识别、语音识别、自然语言处理和文档分类等领域。近几年来,随着计算机计算能力的增长以及神经网路结构的发展,CNN的网络性能和识别准确度都有了很大的提高。但与此同时,网络的深度不断加深,网络的计算量也越来越大,因此需要GPU、FPGA等并行计算设备来加速运算。传统的FPGA开发都是使用VHDL/Verilog等硬件描述语言实现,其可以充分利用FPGA的硬件资源,但是开发周期长,程序的维护和升级困难,目前的卷积神经网络结构复杂,网络结构发展迅速,使用传统的VHDL/Verilog开发效率低、成本高。因此,需要一种新的卷积神经网络实现技术,来解决开发效率问题。
技术实现思路
本专利技术提供卷积神经网络实现方法及装置,以解决上述问题。本专利技术提供一种基于FPGA的卷积神经网络实现方法。上述方法包括以下步骤:基于FPGA实现的卷积神经网络中的多层之间串行处理,通过全局存储器进行数据交互;使用OpenCL编程语言在所述FPGA上实现所述卷积神经网络的处理过程。本专利技术还提供一种基于FPGA的卷积神经网络实现装置,包括:FPGA处理器和全局存储器,其中,所述FPGA处理器与所述全局存储器连接,FPGA处理器,用于实现卷积神经网络中的多层之间串行处理,使用OpenCL编程语言在所述FPGA上实现所述卷积神经网络的处理过程;全局存储器,用于所述卷积神经网络中的数据交互。通过以下方案:通过消息中间件传输来自不同数据源的数据,实现了数据一次收取,多出分发,不必将数据进行多次抽取,减轻了源头数据库的压力。通过以下方案:使用OpenCL编程语言在FPGA上实现所述卷积神经网络的处理过程,解决由于卷积神经网络结构复杂,网络结构发展迅速,使用传统的VHDL/Verilog语言开发效率低、成本高的问题。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1所示为本专利技术实施例1的基于FPGA的卷积神经网络实现方法处理流程图;图2所示为本专利技术实施例2的基于FPGA的卷积神经网络实现架构图;图3所示为本专利技术实施例3的基于FPGA的卷积神经网络的每一层实现原理示意图;图4所示为本专利技术实施例4的基于FPGA的卷积神经网络实现装置结构图。具体实施方式下文中将参考附图并结合实施例来详细说明本专利技术。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。图1所示为本专利技术实施例1的基于FPGA的卷积神经网络实现方法处理流程图,包括以下步骤:步骤102:基于FPGA实现的卷积神经网络中的多层之间串行处理,各层之间通过全局存储器进行数据交互。步骤104:使用OpenCL编程语言在所述FPGA上实现所述卷积神经网络的处理过程。进一步地,所述卷积神经网络中每一层的处理过程包括:对每层的输入数据和输出数据进行向量化;使用多线程OpenCL核从所述全局存储器中并行读取多个卷积操作处理的数据;使用单线程OpenCL核依次对所述卷积操作处理的数据进行卷积和激活操作;使用单线程OpenCL核依次对经过卷积和激活操作的数据进行池化操作;使用多线程OpenCL核向所述全局存储器写入经过池化操作的数据。进一步地,所述卷积神经网络中每一层的数据处理结果通过Channel进行传递。进一步地,并行从所述全局存储器读取多个卷积操作处理的数据、串行对多个所述卷积操作处理的数据进行卷积和激活操作、串行对所述数据进行池化操作、并行向所述全局存储器写入经过池化操作的数据。其中,所述卷积神经网络的模型包括以下任意一种:LeNet,A1exNet,VGG-Net,GoogLeNet,ResNet。如图2所示,对于卷积神经网络的多个层,在FPGA上串行实现,各层之间通过全局存储器进行数据交互。卷积神经网络的每一层,包括全局数据读取、卷积、激活、池化、全局数据写入操作单元,这些计算单元并行进行,不同计算单元之间通过Channel进行通信。对于卷积神经网络的每一层,参考图3,具体实现方案如下:将每层计算涉及的多个输入特征图、输出特征图都进行向量化处理,分别设为VEC_SIZE、LANE_SIZE,即VEC_SIZE个输入特征图为一组进行运算,输出一组即LANE_SIZE个输出特征图。(1)全局数据读取使用多线程OpenCL核实现,即从全局存储器读取需要处理的数据。每个线程块中的多个线程并行读取每个卷积操作(如3×3卷积操作)的数据;多个线程块并行读取多组输入特征图的多个卷积操作的数据。读取的数据写入Channel中。(2)卷积和激活操作使用单线程OpenCL核实现,从(1)的输出Channel中读取数据,以流水线的方式依次处理每组输出特征图的每个卷积操作。每组内的单个卷积操作并行进行。每个时钟周期可实现一次卷积操作。输出结果写入Channel中。(3)池化操作使用单线程OpenCL核实现,从(2)的输出Channel中读取数据,以流水线的方式依次处理每组输出特征图的池化操作。每组内的单个池化操作并行进行。每个时钟周期可实现一次池化操作。输出结果写入Channel中。(4)全局数据写入使用多线程OpenCL核实现,即向全局存储器写入处理完成的数据。每个线程块中的多个线程并行从(3)的输出Channel中读取数据,并写入每组输出特征图的数据。多个线程块并行写入多组输出特征图的数据。每组特征图的数据以循环展开的方式并行写入全局存储器。需说明的是,用于FPGA平台的通用卷积神经网络实现架构,如LeNet、AlexNet、VGG-Net、GoogLeNet、ResNet等,通过OpenCL语言实现。卷积神经网络的实现包括模型训练和和应用推理两个阶段。本专利技术适用于应用推理阶段。对于不同的卷积神经网络模型,采用不同的配置实现,即对于LeNet、AlexNet、VGG-Net、GoogLeNet、ResNet等网络模型,只需要修改配置文件,即设置各层的参数即可实现,不用修改算法实现代码。图4所示为本专利技术实施例4的基于FPGA的卷积神经网络实现装置结构图。如图4所示,根据本专利技术的实施例的一种基于FPGA的卷积神经网络实现装置,包括:FPGA处理器402和全局存储器404,其中,所述FPGA处理器402与所述全局存储器404连接,FPGA处理器402,用于实现卷积神经网络中的多层之间串行处理,使用OpenCL编程语言在所述FPGA上实现所述卷积神经网络的处理过程;全局存储器4本文档来自技高网...
一种基于FPGA的卷积神经网络实现方法及装置

【技术保护点】
一种基于FPGA的卷积神经网络实现方法,其特征在于,包括以下步骤:基于FPGA实现的卷积神经网络中的多层之间串行处理、通过全局存储器进行数据交互;使用OpenCL编程语言在所述FPGA上实现所述卷积神经网络的处理过程。

【技术特征摘要】
1.一种基于FPGA的卷积神经网络实现方法,其特征在于,包括以下步骤:基于FPGA实现的卷积神经网络中的多层之间串行处理、通过全局存储器进行数据交互;使用OpenCL编程语言在所述FPGA上实现所述卷积神经网络的处理过程。2.根据权利要求1所述的方法,其特征在于,所述卷积神经网络中每一层的处理过程包括:使用多线程OpenCL核从所述全局存储器中并行读取多个卷积操作处理的数据;使用单线程OpenCL核依次对所述卷积操作处理的数据进行卷积和激活操作;使用单线程OpenCL核依次对经过卷积和激活操作的数据进行池化操作;使用多线程OpenCL核向所述全局存储器写入经过池化操作的数据。3.根据权利要求2所述的方法,其特征在于,所述卷积神经网络中每一层的数据处理结果通过Channel进行传递;对每层的输入数据和输出数据均进行向量化处理。4.根据权利要求2所述的方法,其特征在于,并行从所述全局存储器读取多个卷积操作处理的数据、串行对多个所述卷积操作处理的数据进行卷积和激活操作、串行对所述数据进行池化操作、并行向所述全局存储器写入经过池化操作的数据。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述卷积神经网络的模型包括以下任意一种:LeNet,AlexNet,VGG-Net,GoogLeNet,ResNet。6.一种基于FPGA的卷积神经网络实现装置,...

【专利技术属性】
技术研发人员:景璐
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1