CN107229969A - 一种基于fpga的卷积神经网络实现方法及装置 - Google Patents

一种基于fpga的卷积神经网络实现方法及装置 Download PDF

Info

Publication number
CN107229969A
CN107229969A CN201710480524.9A CN201710480524A CN107229969A CN 107229969 A CN107229969 A CN 107229969A CN 201710480524 A CN201710480524 A CN 201710480524A CN 107229969 A CN107229969 A CN 107229969A
Authority
CN
China
Prior art keywords
data
convolutional neural
neural networks
fpga
opencl
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710480524.9A
Other languages
English (en)
Inventor
景璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201710480524.9A priority Critical patent/CN107229969A/zh
Publication of CN107229969A publication Critical patent/CN107229969A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

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

Description

一种基于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上实现所述卷积神经网络的处理过程;
全局存储器404,用于所述卷积神经网络中的数据交互。
进一步地,所述FPGA处理器402使用多线程OpenCL核从所述全局存储器中并行读取多个卷积操作处理的数据,使用单线程OpenCL核依次对所述卷积操作处理的数据进行卷积和激活操作,使用单线程OpenCL核依次对经过卷积和激活操作的数据进行池化操作,使用多线程OpenCL核向所述全局存储器写入经过池化操作的数据。
进一步地,所述卷积神经网络中每一层的数据处理结果通过Channel进行传递;对每层的输入数据和输出数据均进行向量化处理。
进一步地,并行从所述全局存储器404读取多个卷积操作处理的数据、串行对多个所述卷积操作处理的数据进行卷积和激活操作、串行对所述数据进行池化操作、并行向所述全局存储器写入经过池化操作的数据。
进一步地,所述卷积神经网络的模型包括以下任意一种:
LeNet,AlexNet,VGG-Net,GoogleNet、ResNet。
卷积神经网络架构基于Intel的Software Development Kit(SDK)开发环境和OpenCL语言实现。硬件平台安装Intel SDK开发环境后,编译即可运行于不同的Intel FPGA平台。
通过以下方案:使用OpenCL编程语言在FPGA上实现所述卷积神经网络的处理过程,解决由于卷积神经网络结构复杂,网络结构发展迅速,使用传统的VHDL/Verilog语言开发效率低、成本高的问题。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

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的卷积神经网络实现装置,其特征在于,包括:FPGA处理器和全局存储器,其中,所述FPGA处理器与所述全局存储器连接,
FPGA处理器,用于实现卷积神经网络中的多层之间串行处理,使用OpenCL编程语言在所述FPGA上实现所述卷积神经网络的处理过程;
全局存储器,用于所述卷积神经网络中的数据交互。
7.根据权利要求6所述的装置,其特征在于,所述FPGA处理器使用多线程OpenCL核从所述全局存储器中并行读取多个卷积操作处理的数据,使用单线程OpenCL核依次对所述卷积操作处理的数据进行卷积和激活操作,使用单线程OpenCL核依次对经过卷积和激活操作的数据进行池化操作,使用多线程OpenCL核向所述全局存储器写入经过池化操作的数据。
8.根据权利要求7所述的装置,其特征在于,所述卷积神经网络中每一层的数据处理结果通过Channel进行传递;
所述FPGA处理器对每层的输入数据和输出数据均进行向量化处理。
9.根据权利要求7所述的装置,其特征在于,并行从所述全局存储器读取多个卷积操作处理的数据、串行对多个所述卷积操作处理的数据进行卷积和激活操作、串行对所述数据进行池化操作、并行向所述全局存储器写入经过池化操作的数据。
10.根据权利要求6至9中任一项所述的装置,其特征在于,所述卷积神经网络的模型包括以下任意一种:
LeNet,AlexNet,VGG-Net,GoogleNet,ResNet。
CN201710480524.9A 2017-06-21 2017-06-21 一种基于fpga的卷积神经网络实现方法及装置 Pending CN107229969A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710480524.9A CN107229969A (zh) 2017-06-21 2017-06-21 一种基于fpga的卷积神经网络实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710480524.9A CN107229969A (zh) 2017-06-21 2017-06-21 一种基于fpga的卷积神经网络实现方法及装置

Publications (1)

Publication Number Publication Date
CN107229969A true CN107229969A (zh) 2017-10-03

Family

ID=59935108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710480524.9A Pending CN107229969A (zh) 2017-06-21 2017-06-21 一种基于fpga的卷积神经网络实现方法及装置

Country Status (1)

Country Link
CN (1) CN107229969A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992299A (zh) * 2017-11-27 2018-05-04 郑州云海信息技术有限公司 神经网络超参数提取转换方法、系统、装置及存储介质
CN108520300A (zh) * 2018-04-09 2018-09-11 郑州云海信息技术有限公司 一种深度学习网络的实现方法和装置
CN109272113A (zh) * 2018-09-13 2019-01-25 深思考人工智能机器人科技(北京)有限公司 一种卷积神经网络的建立装置及方法
CN109886407A (zh) * 2019-02-27 2019-06-14 上海商汤智能科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN111831285A (zh) * 2020-06-23 2020-10-27 西安电子科技大学 一种面向内存计算平台的代码转换方法、系统及应用

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228240A (zh) * 2016-07-30 2016-12-14 复旦大学 基于fpga的深度卷积神经网络实现方法
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228240A (zh) * 2016-07-30 2016-12-14 复旦大学 基于fpga的深度卷积神经网络实现方法
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DONG WANG 等: "PipeCNN: An OpenCL-Based FPGA Accelerator for Large-Scale Convolution Neuron Networks", 《HTTPS://ARXIV.ORG/ABS/1611.02450》 *
余子健 等: "基于FPGA的卷积神经网络加速器", 《计算机工程》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992299A (zh) * 2017-11-27 2018-05-04 郑州云海信息技术有限公司 神经网络超参数提取转换方法、系统、装置及存储介质
CN108520300A (zh) * 2018-04-09 2018-09-11 郑州云海信息技术有限公司 一种深度学习网络的实现方法和装置
CN109272113A (zh) * 2018-09-13 2019-01-25 深思考人工智能机器人科技(北京)有限公司 一种卷积神经网络的建立装置及方法
CN109272113B (zh) * 2018-09-13 2022-04-19 深思考人工智能机器人科技(北京)有限公司 一种基于通道的卷积神经网络建立装置及方法
CN109886407A (zh) * 2019-02-27 2019-06-14 上海商汤智能科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN109886407B (zh) * 2019-02-27 2021-10-22 上海商汤智能科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN111831285A (zh) * 2020-06-23 2020-10-27 西安电子科技大学 一种面向内存计算平台的代码转换方法、系统及应用
CN111831285B (zh) * 2020-06-23 2023-03-14 西安电子科技大学 一种面向内存计算平台的代码转换方法、系统及应用

Similar Documents

Publication Publication Date Title
CN107229969A (zh) 一种基于fpga的卷积神经网络实现方法及装置
Lu et al. Brain intelligence: go beyond artificial intelligence
CN104471552B (zh) 用于处置状态机引擎所接收的数据的方法及系统
Bezdan et al. Feature selection by firefly algorithm with improved initialization strategy
CN110197253A (zh) 用于深度学习加速的算术单元
CN104603741B (zh) 在模式辨识处理系统中用于电力管理的方法及系统
CN104011736B (zh) 用于状态机中的检测的方法及系统
TW201841130A (zh) 經由弱監督的神經網路壓縮
Samudre et al. Optimizing performance of convolutional neural network using computing technique
CN110163359A (zh) 一种计算装置及方法
CN106980650A (zh) 一种面向Twitter观点分类的情感增强词嵌入学习方法
CN110059324A (zh) 基于依存信息监督的神经网络机器翻译方法及装置
Yu et al. Real-time object detection towards high power efficiency
Abdelsalam et al. An efficient FPGA-based overlay inference architecture for fully connected DNNs
CN108920446A (zh) 一种工程文本的处理方法
CN110163350A (zh) 一种计算装置及方法
CN109299753A (zh) 一种用于法律文本信息挖掘的集成学习方法及系统
CN108470211A (zh) 一种卷积计算的实现方法、设备和计算机存储介质
CN114265937A (zh) 科技情报的智能分类分析方法、系统、存储介质及服务器
Soni et al. Optimised prediction model for stock market trend analysis
Wai et al. A scalable FPGA based accelerator for Tiny-YOLO-v2 using OpenCL
Li et al. A capsule-unified framework of deep neural networks for graphical programming
CN108491487A (zh) 一种临床指南知识编码方法及系统
Zhao et al. Fusion with GCN and SE-ResNeXt network for aspect based multimodal sentiment analysis
Salvi et al. Model compression in object detection

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20171003

RJ01 Rejection of invention patent application after publication