CN107229969A - 一种基于fpga的卷积神经网络实现方法及装置 - Google Patents
一种基于fpga的卷积神经网络实现方法及装置 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical 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,即现场可编程门阵列,是一种高速、高密度的半定制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。
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)
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)
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的深度卷积神经网络的流水化加速系统 |
-
2017
- 2017-06-21 CN CN201710480524.9A patent/CN107229969A/zh active Pending
Patent Citations (2)
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)
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)
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 |