CN106228240B - Deep convolution neural network implementation method based on FPGA - Google Patents

Deep convolution neural network implementation method based on FPGA Download PDF

Info

Publication number
CN106228240B
CN106228240B CN201610615714.2A CN201610615714A CN106228240B CN 106228240 B CN106228240 B CN 106228240B CN 201610615714 A CN201610615714 A CN 201610615714A CN 106228240 B CN106228240 B CN 106228240B
Authority
CN
China
Prior art keywords
convolution
calculation
matrix
fpga
data
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.)
Active
Application number
CN201610615714.2A
Other languages
Chinese (zh)
Other versions
CN106228240A (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.)
Fudan University
Original Assignee
Fudan University
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 Fudan University filed Critical Fudan University
Priority to CN201610615714.2A priority Critical patent/CN106228240B/en
Publication of CN106228240A publication Critical patent/CN106228240A/en
Application granted granted Critical
Publication of CN106228240B publication Critical patent/CN106228240B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/16Speech classification or search using artificial neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

本发明方法属于数字图像处理、模式识别技术领域。具体为一种基于FPGA的深度卷积神经网络实现方法。本发明实现的硬件平台是XilinxZYNQ‑7030可编程片上SoC,硬件平台内置FPGA和ARM Cortex A9处理器。本发明首先将训练好的网络模型参数加载到FPGA端,然后在ARM端对输入数据进行预处理,再将结果传输到FPGA端,在FPGA端实现深度卷积神经网络的卷积计算和下采样,形成数据特征向量并传输至ARM端,完成特征分类计算。本发明利用FPGA的快速并行处理和极低功耗的高效能计算特性,实现深度卷积神经网络模型中复杂度最高的卷积计算部分,在保证算法正确率的前提下,大幅提升算法效率,降低功耗。

Figure 201610615714

The method of the invention belongs to the technical fields of digital image processing and pattern recognition. Specifically, it is a deep convolutional neural network implementation method based on FPGA. The hardware platform realized by the invention is Xilinx ZYNQ-7030 programmable on-chip SoC, and the hardware platform has a built-in FPGA and an ARM Cortex A9 processor. The present invention firstly loads the trained network model parameters to the FPGA side, then preprocesses the input data on the ARM side, and then transmits the result to the FPGA side, and realizes the convolution calculation and downsampling of the deep convolutional neural network on the FPGA side , form a data feature vector and transmit it to the ARM side to complete the feature classification calculation. The invention utilizes the fast parallel processing of FPGA and the high-efficiency computing characteristics of extremely low power consumption to realize the convolutional computing part with the highest complexity in the deep convolutional neural network model. On the premise of ensuring the accuracy of the algorithm, the algorithm efficiency is greatly improved, Reduce power consumption.

Figure 201610615714

Description

基于FPGA的深度卷积神经网络实现方法Implementation method of deep convolutional neural network based on FPGA

技术领域technical field

本发明属于数字图像处理、模式识别技术领域,具体涉及一种在FPGA硬件平台上实现深度卷积神经网络模型的方法。The invention belongs to the technical field of digital image processing and pattern recognition, and particularly relates to a method for implementing a deep convolutional neural network model on an FPGA hardware platform.

背景技术Background technique

在当前计算机技术及互联网高速发展的情况下,数据规模呈爆发式增长,海量数据的智能化分析处理成为有效利用数据价值的关键所在。人工智能技术是实现从海量数据中发现有价值的信息的一种有效手段,近年来在计算机视觉、语音识别和自然语言处理等应用领域取得突破性进展。基于深度卷积神经网络的深度学习算法模型是其中的一个典型代表。With the current rapid development of computer technology and the Internet, the scale of data is growing explosively, and the intelligent analysis and processing of massive data has become the key to effectively utilizing the value of data. Artificial intelligence technology is an effective means to discover valuable information from massive data. In recent years, breakthroughs have been made in the fields of computer vision, speech recognition and natural language processing. The deep learning algorithm model based on deep convolutional neural network is a typical representative.

卷积神经网络(Convolutional Neural Network,CNN)受神经科学研究的启发。经过20多年的演变,在模式识别,人机对抗等领域取得令人瞩目的理论研究及实际应用成果,在著名的人机围棋对抗赛中,基于CNN+蒙特卡洛搜索树算法的人工智能系统AlphaGo,以4:1大比分优势战胜了世界围棋冠军李世石。典型的CNN算法模型由两部分组成:特征提取器和分类器。其中特征提取器负责生成输入数据的低维特征向量,对数据具有较好的鲁棒性。该向量作为分类器(通常基于传统的人工神经网络)的输入数据进行分类,得到输入数据的分类结果。Convolutional Neural Networks (CNN) are inspired by neuroscience research. After more than 20 years of evolution, remarkable theoretical research and practical application results have been achieved in pattern recognition, human-machine confrontation and other fields. In the famous human-machine Go competition, the artificial intelligence system AlphaGo based on CNN + Monte Carlo search tree algorithm, He defeated the world Go champion Lee Sedol by 4:1. A typical CNN algorithm model consists of two parts: a feature extractor and a classifier. The feature extractor is responsible for generating the low-dimensional feature vector of the input data, which has better robustness to the data. This vector is used as the input data of the classifier (usually based on the traditional artificial neural network) to classify, and the classification result of the input data is obtained.

在实现卷积神经网络算法模型中,卷积计算占整个算法模型90%的计算量[1],因此卷积层的高效计算是大幅提升CNN算法模型计算效率的关键,通过硬件加速实现卷积计算是一种有效途径。In the implementation of the convolutional neural network algorithm model, the convolution calculation accounts for 90% of the calculation amount of the entire algorithm model [1] . Therefore, the efficient calculation of the convolution layer is the key to greatly improve the calculation efficiency of the CNN algorithm model. The convolution is realized through hardware acceleration. Computing is an efficient way.

当前,业内普遍使用GPU集群实现深度学习算法模型,通过大规模并行计算实现深度神经网络模型,取得了令人瞩目的高效率与高性能结果,然而GPU的高功耗也制约了其大规模应用,进而成为深度卷积神经网络算法模型的实际推广应用的瓶颈所在。FPGA具有高性能并行计算和超低功耗的优点,在FPGA上实现深度学习算法模型是该领域的必然发展方向。At present, GPU clusters are widely used in the industry to implement deep learning algorithm models, and deep neural network models are implemented through large-scale parallel computing, which has achieved remarkable high efficiency and high performance results. However, the high power consumption of GPU also restricts its large-scale application. , and then become the bottleneck of the practical promotion and application of the deep convolutional neural network algorithm model. FPGA has the advantages of high-performance parallel computing and ultra-low power consumption. Implementing deep learning algorithm models on FPGA is an inevitable development direction in this field.

目前利用FPGA实现CNN的方案主要有三种:At present, there are three main schemes for implementing CNN using FPGA:

(1)利用软核CPU实现控制部分,配合FPGA实现算法加速;(1) Use the soft-core CPU to realize the control part, and cooperate with the FPGA to realize the algorithm acceleration;

(2)利用硬核SoC内嵌的硬核ARM Cortex A9 CPU实现控制部分,配合FPGA实现算法加速;(2) Use the hard-core ARM Cortex A9 CPU embedded in the hard-core SoC to realize the control part, and cooperate with the FPGA to realize the algorithm acceleration;

(3)利用云端服务器配合FPGA实现算法加速。(3) Use cloud server with FPGA to achieve algorithm acceleration.

三种方案各有利弊,根据不同的运用场合,可以选择不同的加速方案。The three schemes have their own advantages and disadvantages, and different acceleration schemes can be selected according to different application scenarios.

在深度卷积神经网络中,卷积层计算占用了超过90%的计算量,而且是整个网络模型中承前启后的关键环节,其计算效率直接影响了模型算法实现的性能。然而,在FPGA上实现卷积计算具有很大难度,主要体现在以下几个方面:In the deep convolutional neural network, the calculation of the convolutional layer occupies more than 90% of the calculation amount, and is a key link in the entire network model, and its computational efficiency directly affects the performance of the model algorithm implementation. However, it is very difficult to implement convolution calculation on FPGA, which is mainly reflected in the following aspects:

(1)深度学习算法模型目前基本还处于学术界研究的阶段,大规模产业化应用还有很多算法及模型优化的工作,因此算法模型需要不断优化,以适应不同的应用场景,需要对深度学习理论及算法有非常深入的理解;(1) The deep learning algorithm model is still basically in the academic research stage, and there are still many algorithms and model optimization work for large-scale industrial applications. Therefore, the algorithm model needs to be continuously optimized to adapt to different application scenarios. A very in-depth understanding of theories and algorithms;

(2)FPGA的研发基于底层的硬件语言,适于算法模型相对稳定的情况,不断变化的深度学习算法模型为其在FPGA上实现带来很大的难度;(2) The research and development of FPGA is based on the underlying hardware language, which is suitable for the situation that the algorithm model is relatively stable, and the constantly changing deep learning algorithm model brings great difficulty to its implementation on FPGA;

(3)在FPGA上实现深度卷积神经网络,需要对FPGA的工程实现具有丰富的经验。FPGA的运行时钟频率和使用的乘法器等模块的输出延时(Latency)互相矛盾,时钟频率越高,模块的输出延时越长,时钟频率越低,模块的输出延时越短。需要借助工程经验通过手工实验找到相对平衡的参数。(3) Implementing deep convolutional neural networks on FPGA requires rich experience in FPGA engineering implementation. The operating clock frequency of the FPGA and the output delay of the multiplier and other modules used are contradictory. The higher the clock frequency, the longer the output delay of the module, and the lower the clock frequency, the shorter the output delay of the module. It is necessary to find relatively balanced parameters through manual experiments with the help of engineering experience.

发明内容SUMMARY OF THE INVENTION

本发明方法的目的是提供一种高效率、低功耗的实现深度卷积神经网络模型的方法,以解决当前基于GPU或CPU的深度学习模型功耗大、效率低的问题。The purpose of the method of the present invention is to provide a method for implementing a deep convolutional neural network model with high efficiency and low power consumption, so as to solve the problems of high power consumption and low efficiency of the current deep learning model based on GPU or CPU.

本发明对FPGA硬件设计进行了优化,有效降低了资源消耗,能够在低端FPGA硬件平台上实现深度卷积神经网络模型。The invention optimizes the FPGA hardware design, effectively reduces resource consumption, and can implement a deep convolutional neural network model on a low-end FPGA hardware platform.

本发明提供的实现深度卷积神经网络模型的方法,实现的硬件平台是XilinxZYNQ-7030可编程片上SoC,硬件平台内置FPGA和ARM Cortex A9处理器。本发明首先将训练好的网络模型参数加载到FPGA端,然后在ARM端对输入数据进行预处理,再将结果传输到FPGA端,在FPGA端实现深度卷积神经网络的卷积计算和下采样,形成数据特征向量并传输至ARM端,完成特征分类计算。具体包括4个过程:模型参数加载过程、输入数据预处理操作过程、卷积和下采样计算过程、分类计算过程:The method for realizing a deep convolutional neural network model provided by the present invention is realized by a Xilinx ZYNQ-7030 programmable on-chip SoC, and the hardware platform has a built-in FPGA and an ARM Cortex A9 processor. The present invention firstly loads the trained network model parameters to the FPGA side, then preprocesses the input data on the ARM side, and then transmits the result to the FPGA side, and realizes the convolution calculation and downsampling of the deep convolutional neural network on the FPGA side , form a data feature vector and transmit it to the ARM side to complete the feature classification calculation. Specifically, it includes 4 processes: model parameter loading process, input data preprocessing operation process, convolution and downsampling calculation process, and classification calculation process:

1、模型参数加载过程为:1. The model parameter loading process is:

(1)离线训练深度卷积神经网络模型;(1) Offline training of deep convolutional neural network models;

(2)ARM端加载训练模型参数;(2) ARM side loads training model parameters;

(3)将模型参数传输至FPGA;(3) Transfer the model parameters to the FPGA;

2、输入数据预处理操作过程为:2. The input data preprocessing operation process is as follows:

(1)归一化处理;(1) Normalization processing;

(2)将处理结果传输至FPGA;(2) Transfer the processing results to the FPGA;

(3)在FPGA端存储至Block RAM;(3) Store to Block RAM on the FPGA side;

3、卷积和下采样计算过程为:3. The calculation process of convolution and downsampling is:

(1)初始化卷积流水线;(1) Initialize the convolution pipeline;

(2)卷积计算;(2) Convolution calculation;

(3)池化下采样计算;(3) Pooled downsampling calculation;

(4)重新初始化卷积流水线,进行多层卷积下采样计算;(4) Reinitialize the convolution pipeline and perform multi-layer convolution downsampling calculations;

4、分类计算过程为:4. The classification calculation process is as follows:

(1)将特征向量传回ARM端;(1) Send the feature vector back to the ARM side;

(2)通过分类模型计算;(2) Calculated by classification model;

(3)输出分类结果。(3) Output the classification result.

具体介绍如下:The details are as follows:

步骤1、加载训练模型参数Step 1. Load training model parameters

(1)在ARM端加载离线训练的深度卷积神经网络模型参数;(1) Load the parameters of the deep convolutional neural network model trained offline on the ARM side;

(2)将训练模型参数传输至FPGA端;(2) Transfer the training model parameters to the FPGA side;

(3)FPGA端经过FIFO缓存后存储在Block RAM(块随机存储器)中;(3) The FPGA side is stored in the Block RAM (block random access memory) after being buffered by the FIFO;

步骤2、预处理深度卷积神经网络模型Step 2. Preprocessing the deep convolutional neural network model

(1)对输入数据进行归一化处理,使其满足模型卷积运算要求;(1) Normalize the input data to make it meet the requirements of the model convolution operation;

(2)利用APB总线将ARM端归一化数据传输至FPGA端;(2) Use the APB bus to transmit the normalized data from the ARM side to the FPGA side;

(3)FPGA端将归一化数据经过FIFO缓存后存入Block RAM;(3) The FPGA side stores the normalized data into the Block RAM after passing through the FIFO buffer;

步骤3、卷积和下采样计算Step 3. Convolution and downsampling calculations

针对深度卷积神经网络模型中计算量最大的卷积层计算,设计深度流水线实现模式。设网络模型有H个卷积层和池化层。第h个(h=1,2,…,H)卷积层输入为T个m×m浮点数(32位)矩阵,输出为S个(m-n+1)×(m-n+1)浮点数(32位)矩阵,卷积核为K个n×n浮点数(32位)矩阵(n≤m),输入数据滑动窗尺度为n×n,横向滑动步长为1,纵向滑动步长为1。For the calculation of the convolutional layer with the largest amount of computation in the deep convolutional neural network model, a deep pipeline implementation mode is designed. Suppose the network model has H convolutional layers and pooling layers. The input of the hth (h=1,2,...,H) convolutional layer is T m×m floating-point (32-bit) matrices, and the output is S (m-n+1)×(m-n+1 ) Floating-point number (32-bit) matrix, the convolution kernel is K n×n floating-point number (32-bit) matrix (n≤m), the input data sliding window scale is n×n, the horizontal sliding step is 1, and the vertical sliding The step size is 1.

(1)初始化卷积运算流水线(1) Initialize the convolution operation pipeline

定义n+1个数据缓存寄存器P0,P1,…,Pn-1,Pn,每个寄存器存放m个数据。其中n个寄存器(P(i-1)%(n+1)+0,P(i-1)%(n+1)+1,…,P(i-1)%(n+1)+n-1)存放第t个(t=1,2,…,T)输入数据矩阵的第i个(i=1,2,…,m-n+1)子矩阵(n×m)数据,其中%表示取余数,如果(i-1)%(n+1)+x>n,则(i-1)%(n+1)+x=0,(i-1)%(n+1)+x+1=1,…,其中x=0,1,…,n-1。如果n<m,P(i-1)%(n+1)+n寄存器存放输入数据矩阵中的第i+n行数据,在卷积计算过程中实现并行初始化,以减少FPGA空闲周期,提高计算效率。Define n+1 data buffer registers P 0 , P 1 , . . . , P n-1 , P n , and each register stores m pieces of data. where n registers (P (i-1)%(n+1)+0 , P (i-1)%(n+1)+1 , ..., P (i-1)%(n+1)+ n-1 ) stores the i-th (i=1,2,...,m-n+1) sub-matrix (n×m) data of the t-th (t=1,2,…,T) input data matrix, Among them, % means taking the remainder, if (i-1)%(n+1)+x>n, then (i-1)%(n+1)+x=0, (i-1)%(n+1 )+x+1=1,…, where x=0,1,…,n-1. If n<m, the P (i-1)%(n+1)+n register stores the i+nth row data in the input data matrix, and implements parallel initialization during the convolution calculation process to reduce FPGA idle cycles and improve Computational efficiency.

定义1个卷积核矩阵缓存寄存器W,存放第k个(k=1,2,…,K)n×n个卷积核矩阵权值数据。Define a convolution kernel matrix cache register W to store the kth (k=1, 2, ..., K) n×n convolution kernel matrix weight data.

(2)第h个卷积层计算(2) Calculation of the hth convolutional layer

完成网络第h个卷积层第t个输入数据矩阵和第k个卷积核的卷积计算,通过Sigmoid函数实现计算结果的激活。The convolution calculation of the t-th input data matrix and the k-th convolution kernel of the h-th convolutional layer of the network is completed, and the activation of the calculation result is realized by the Sigmoid function.

具体来说,在进行每次卷积计算的同时,初始化第i+n个数据缓存寄存器P(i-1)%(n+1)+n,作为卷积中第i+1个子矩阵卷积计算的缓存输入数据,实现循环卷积。Specifically, while performing each convolution calculation, initialize the i+nth data buffer register P (i-1)%(n+1)+n as the i+1th submatrix convolution in the convolution Computed buffered input data to implement circular convolution.

在FPGA端通过浮点IP(Floating-point IP)核构建Sigmoid函数,实现卷积计算结果的激活;所述Sigmoid函数的表达式为:

Figure DEST_PATH_IMAGE002
。具体步骤为:On the FPGA side, a Sigmoid function is constructed through a floating-point IP (Floating-point IP) core to realize the activation of the convolution calculation result; the expression of the Sigmoid function is:
Figure DEST_PATH_IMAGE002
. The specific steps are:

如前所述,输入数据为m×m浮点数矩阵,卷积核为n×n浮点数矩阵,滑动窗尺度为n×n,横向滑动步长为1,纵向滑动步长为1,则卷积结果为(m-n+1)×(m-n+1)的浮点数矩阵,矩阵的每个元素加上偏置量b11(离线训练模型参数),利用Sigmoid函数激活后,结果为(m-n+1)×(m-n+1)的浮点数矩阵,存入Block RAM。As mentioned above, the input data is an m×m floating-point number matrix, the convolution kernel is an n×n floating-point number matrix, the sliding window scale is n×n, the horizontal sliding step is 1, and the vertical sliding step is 1, then the convolution The result of the product is a (m-n+1)×(m-n+1) floating-point matrix. Each element of the matrix is added with the offset b11 (offline training model parameter). After activation by the Sigmoid function, the result is ( The floating-point number matrix of m-n+1)×(m-n+1) is stored in the Block RAM.

完成1次卷积计算后,重新初始化卷积核矩阵缓存寄存器W,进行下一次卷积计算,往复循环卷积计算,计算结果为S个(m-n+1)×(m-n+1)浮点数矩阵,存入Block RAM。After completing one convolution calculation, re-initialize the convolution kernel matrix cache register W, perform the next convolution calculation, and reciprocate the circular convolution calculation. The calculation result is S (m-n+1)×(m-n+1 ) Floating point matrix, stored in Block RAM.

(3)第h个池化层计算(3) Calculation of the hth pooling layer

实现第h个卷积层计算结果的池化计算,结果为S个[(m-n+1)/2]×[(m-n+1)/2]浮点数矩阵,存入Block RAM。具体步骤为:设卷积计算结果数据滑动窗尺度为2×2,步长为2,采用平均下采样法实现池化,即逐个2×2浮点数矩阵相加,计算结果取均值,获得S个[(m-n+1)/2]×[(m-n+1)/2]浮点数矩阵,作为第h+1个卷积层计算的输入矩阵。The pooling calculation of the calculation result of the hth convolutional layer is realized, and the result is S [(m-n+1)/2]×[(m-n+1)/2] floating-point number matrices, which are stored in Block RAM. The specific steps are: set the sliding window scale of the convolution calculation result data to be 2×2 and the step size to be 2, and use the average downsampling method to realize pooling, that is, add 2×2 floating-point number matrices one by one, take the average of the calculation results, and obtain S A [(m-n+1)/2]×[(m-n+1)/2] floating-point matrix is used as the input matrix for the calculation of the h+1th convolutional layer.

步骤4、分类计算Step 4. Classification calculation

将卷积计算和池化计算结果传回ARM端进行分类运算。具体步骤为:FPGA端将Block RAM中的卷积池化计算结果矩阵,通过FIFO缓存,APB总线传输至ARM端,ARM端利用Softmax运算完成数据分类计算,得到输入数据的分类结果并输出。The convolution calculation and pooling calculation results are sent back to the ARM side for classification operations. The specific steps are: the FPGA side transfers the convolution pooling calculation result matrix in the Block RAM to the ARM side through the FIFO buffer and the APB bus. The ARM side uses the Softmax operation to complete the data classification calculation, obtains the classification result of the input data and outputs it.

本发明方法的主要特点有:The main features of the method of the present invention are:

(1)在低端FPGA上实现了深度卷积神经网络模型;(1) Implemented a deep convolutional neural network model on a low-end FPGA;

(2)利用流水线计算方式实现了深度卷积神经网络模型中的卷积计算加速;(2) The convolution calculation acceleration in the deep convolutional neural network model is realized by the pipeline calculation method;

(3)控制芯片采用Soc内嵌ARM处理器实现,具有体积小,功耗低,效率高的特点,可广泛应用于嵌入式系统领域。(3) The control chip is implemented by Soc embedded ARM processor, which has the characteristics of small size, low power consumption and high efficiency, and can be widely used in the field of embedded systems.

本发明利用FPGA的快速并行处理和极低功耗的高效能计算特性,实现深度卷积神经网络模型中复杂度最高的卷积计算部分,在保证算法正确率的前提下,大幅提升算法效率。相比于传统基于CPU或GPU实现深度卷积神经网络的方法,本发明方法在有效提高算法计算速度的同时,大幅降低了功耗,有效解决了采用CPU或GPU实现深度卷积神经网络导致的运算时间长或功耗大的问题。The invention utilizes the fast parallel processing of FPGA and the high-efficiency computing characteristics of extremely low power consumption to realize the convolution computing part with the highest complexity in the deep convolutional neural network model, and greatly improves the algorithm efficiency on the premise of ensuring the accuracy of the algorithm. Compared with the traditional method for implementing deep convolutional neural network based on CPU or GPU, the method of the present invention greatly reduces power consumption while effectively improving the calculation speed of the algorithm, and effectively solves the problems caused by using CPU or GPU to implement deep convolutional neural network. The problem of long operation time or high power consumption.

附图说明Description of drawings

图1基于FPGA的深度卷积神经网络实现流程图。Figure 1 is a flow chart of FPGA-based deep convolutional neural network implementation.

图2MNIST数据库(部分)。Figure 2 MNIST database (section).

图3矩阵转置原理图。Figure 3 Schematic diagram of matrix transpose.

图4流水线计算示意图。Figure 4 Schematic diagram of pipeline calculation.

图5卷积计算示意图。Figure 5 Schematic diagram of convolution calculation.

图6 深度卷积神经网络结构图。Figure 6. Structure diagram of deep convolutional neural network.

图7下采样计算示意图。Figure 7 Schematic diagram of downsampling calculation.

图8 基于FPGA的深度卷积神经网络模型仿真结果。Figure 8. Simulation results of the FPGA-based deep convolutional neural network model.

图9 数字“7”的实测分类结果(MNIST数据库)。Figure 9 Measured classification results of the digit "7" (MNIST database).

具体实施方式Detailed ways

以下结合附图解释运用了本发明方法,在FPGA硬件平台上利用深度卷积神经网络模型实现手写体字符识别算法的具体实施。(该深度卷积神经网络模型由输入层I,第一个卷积层C1,第一个下采样层S1,第二个卷积层C2,第二个下采样层S2和全链接层Softmax组成。输入图片大小为28×28,第一层卷积层包含1个大小为5×5的卷积核,第二个卷积层包含3个大小为5×5的卷积核)。The specific implementation of the method of the present invention is explained below in conjunction with the accompanying drawings, and the deep convolutional neural network model is used on the FPGA hardware platform to realize the specific implementation of the handwritten character recognition algorithm. (The deep convolutional neural network model consists of input layer I, first convolutional layer C1, first downsampling layer S1, second convolutional layer C2, second downsampling layer S2 and full link layer Softmax The input image size is 28×28, the first convolutional layer contains 1 convolution kernel of size 5×5, and the second convolutional layer contains 3 convolution kernels of size 5×5).

利用深度卷积神经网络模型的手写体字符识别算法在FPGA上实现的具体运算步骤如附图1所示。The specific operation steps implemented on the FPGA by the handwritten character recognition algorithm using the deep convolutional neural network model are shown in Figure 1.

1、加载训练好的模型参数1. Load the trained model parameters

首先参考DeepLearnToolbox-master中CNN的函数,并进行一定的修改(将卷积函数重写,并将神经网络层数改为5层,一个输入层,两个卷积层,两个下采样层;第一个卷积层1个大小为5×5的卷积核,第二个卷积层3个大小为5×5的卷积核,两个下采样层的滑动步长为2,滑动窗2×2矩阵,训练次数设为10),利用Matlab训练深度卷积神经网络,然后在ARM端加载训练好的权值参数和偏置参数,最后将训练好的模型参数传输至FPGA端,经过FIFO缓存后存储在Block RAM中。First, refer to the function of CNN in DeepLearnToolbox-master, and make certain modifications (rewrite the convolution function, and change the number of neural network layers to 5 layers, one input layer, two convolution layers, and two downsampling layers; The first convolutional layer has 1 convolution kernel of size 5×5, the second convolutional layer has 3 convolution kernels of size 5×5, the sliding step size of the two downsampling layers is 2, and the sliding window 2 × 2 matrix, the number of training is set to 10), use Matlab to train the deep convolutional neural network, then load the trained weight parameters and bias parameters on the ARM side, and finally transfer the trained model parameters to the FPGA side. FIFO is buffered and stored in Block RAM.

2、预处理2. Preprocessing

附图2所示的MNIST手写体图像读入内存,每个像素除以255进行归一化,然后按照附图3所示进行转置。The MNIST handwriting image shown in Figure 2 is read into memory, each pixel is divided by 255 for normalization, and then transposed as shown in Figure 3.

3、将预处理结果传输至FPGA3. Transfer the preprocessing results to the FPGA

通过ZYNQ-7030 Soc上APB总线,将预处理结果传输至FPGA端,经过FIFO缓存后存储在Block RAM中。Through the APB bus on the ZYNQ-7030 Soc, the preprocessing results are transmitted to the FPGA side, and stored in the Block RAM after being buffered by the FIFO.

4、初始化卷积运算流水线4. Initialize the convolution operation pipeline

如附图4所示,定义6个数据缓存寄存器P0,P1,P2,P3,P4,P5,每个寄存器可存放28个浮点数数据。其中5个寄存器(P(i-1)%(5+1)+0,P(i-1)%(5+1)+1,…,P(i-1)%(5+1)+5-1)存放输入图像矩阵的第i个(i=1,2,…,24)子矩阵(5×28)数据,其中%表示取余数。如果(i-1)%(5+1)+x>5,则(i-1)%(5+1)+x=0,(i-1)%(5+1)+x+1=1,…,其中x=0,1,…,4。P(i-1)%(5+1)+5寄存器存放输入图像矩阵中的第i+5行数据。As shown in FIG. 4 , six data cache registers P 0 , P 1 , P 2 , P 3 , P 4 , and P 5 are defined, and each register can store 28 floating-point data. Among them, 5 registers (P (i-1)%(5+1)+0 , P (i-1)%(5+1)+1 , ..., P (i-1)%(5+1)+ 5-1 ) Store the data of the i-th (i=1, 2,..., 24) sub-matrix (5×28) of the input image matrix, where % means taking the remainder. If (i-1)%(5+1)+x>5, then (i-1)%(5+1)+x=0, (i-1)%(5+1)+x+1= 1,…,where x=0,1,…,4. The P (i-1)%(5+1)+5 register stores the i+5th row data in the input image matrix.

定义1个卷积核矩阵缓存寄存器W,存放第1个卷积层的1个5×5个卷积核矩阵权值数据。Define a convolution kernel matrix cache register W, which stores a 5×5 convolution kernel matrix weight data of the first convolution layer.

5、进行第1个卷积层计算5. Perform the first convolutional layer calculation

完成网络第1个卷积层输入图像矩阵和第1个卷积层第1个卷积核的卷积计算,通过Sigmoid函数实现计算结果的激活。Complete the convolution calculation of the input image matrix of the first convolution layer of the network and the first convolution kernel of the first convolution layer, and activate the calculation result through the Sigmoid function.

在进行卷积计算的同时,初始化第i+5个数据缓存寄存器P(i-1)%(5+1)+5,作为卷积中第i+1个子矩阵卷积计算的缓存输入数据,实现循环卷积,如附图5所示。While performing the convolution calculation, initialize the i+5th data buffer register P (i-1)%(5+1)+5 as the buffered input data for the i+1th submatrix convolution calculation in the convolution, Implement circular convolution, as shown in Figure 5.

在FPGA端通过浮点IP(Floating-point IP)核构建Sigmoid函数,实现卷积计算结果的激活。Sigmoid函数的表达式为:

Figure 217358DEST_PATH_IMAGE002
。On the FPGA side, a sigmoid function is constructed through a floating-point IP (Floating-point IP) core to realize the activation of the convolution calculation result. The expression of the sigmoid function is:
Figure 217358DEST_PATH_IMAGE002
.

具体步骤为:The specific steps are:

如前所述,输入图像为28×28浮点数矩阵,卷积核为5×5浮点数矩阵,滑动窗尺度为5×5,横向滑动步长为1,纵向滑动步长为1,则卷积结果为24×24的浮点数矩阵,矩阵的每个元素加上偏置量b11(离线训练模型参数),利用Sigmoid函数激活后,结果为24×24的浮点数矩阵,存入Block RAM。As mentioned above, the input image is a 28×28 floating-point matrix, the convolution kernel is a 5×5 floating-point matrix, the sliding window scale is 5×5, the horizontal sliding step is 1, and the vertical sliding step is 1, then the convolution The result of the product is a 24×24 floating-point number matrix. Each element of the matrix is added with the offset b11 (offline training model parameter). After activation by the Sigmoid function, the result is a 24×24 floating-point number matrix, which is stored in the Block RAM.

完成1次卷积计算后,计算结果为1个24×24浮点数矩阵,存入Block RAM。After completing one convolution calculation, the calculation result is a 24×24 floating-point number matrix, which is stored in the Block RAM.

6、进行第1个池化层计算6. Perform the first pooling layer calculation

实现第1个卷积层计算结果的池化计算,如附图6所示,结果为1个12×12浮点数矩阵,存入Block RAM。具体步骤为:卷积计算结果数据滑动窗尺度为2×2,步长为2,采用平均下采样法实现池化,即逐个2×2浮点数矩阵相加,计算结果取均值,获得1个12×12浮点数矩阵,作为第2个卷积层计算的输入矩阵,如附图7所示。Implement the pooling calculation of the calculation result of the first convolutional layer, as shown in Figure 6, the result is a 12 × 12 floating-point number matrix, which is stored in the Block RAM. The specific steps are: the sliding window scale of the convolution calculation result data is 2 × 2, the step size is 2, and the average downsampling method is used to realize the pooling, that is, the 2 × 2 floating-point number matrices are added one by one, and the calculation results are averaged to obtain 1 The 12×12 floating-point number matrix is used as the input matrix for the calculation of the second convolutional layer, as shown in Figure 7.

7、重新初始化卷积流水线7. Reinitialize the convolution pipeline

如附图4所示,重新初始化6个数据缓存寄存器P0,P1,P2,P3,P4,P5,每个寄存器存放12个浮点数数据。其中5个寄存器(P(i-1)%(5+1)+0,P(i-1)%(5+1)+1,…,P(i-1)%(5+1)+5-1)存放输入矩阵的第i个(i=1,2,…,8)子矩阵(5×12)数据,其中%表示取余数。如果(i-1)%(5+1)+x>5,则(i-1)%(5+1)+x=0,(i-1)%(5+1)+x+1=1,…,其中x=0,1,…,4。P(i-1)%(5+1)+5寄存器存放输入矩阵中的第i+5行数据。As shown in FIG. 4 , 6 data buffer registers P 0 , P 1 , P 2 , P 3 , P 4 , and P 5 are reinitialized, and each register stores 12 floating-point data. Among them, 5 registers (P (i-1)%(5+1)+0 , P (i-1)%(5+1)+1 , ..., P (i-1)%(5+1)+ 5-1 ) Store the data of the i-th (i=1,2,...,8) submatrix (5×12) of the input matrix, where % means taking the remainder. If (i-1)%(5+1)+x>5, then (i-1)%(5+1)+x=0, (i-1)%(5+1)+x+1= 1,…,where x=0,1,…,4. The P (i-1)%(5+1)+5 register stores the i+5th row data in the input matrix.

重新初始化卷积核矩阵缓存寄存器W,存放第2个卷积层的第1个5×5个卷积核矩阵权值数据。Reinitialize the convolution kernel matrix cache register W, and store the first 5×5 convolution kernel matrix weight data of the second convolution layer.

8、进行第2个卷积层计算8. Perform the second convolutional layer calculation

完成网络第2个卷积层输入数据矩阵和第2个卷积层第1个卷积核的卷积计算,通过Sigmoid函数实现计算结果的激活。Complete the convolution calculation of the input data matrix of the second convolution layer of the network and the first convolution kernel of the second convolution layer, and activate the calculation result through the Sigmoid function.

重新初始化卷积核矩阵缓存寄存器W,存放第2个卷积层的第2个5×5个卷积核矩阵权值数据,完成网络第2个卷积层输入数据矩阵和第2个卷积层第2个卷积核的卷积计算,通过Sigmoid函数实现计算结果的激活。Reinitialize the convolution kernel matrix cache register W, store the second 5 × 5 convolution kernel matrix weight data of the second convolution layer, and complete the input data matrix of the second convolution layer of the network and the second convolution The convolution calculation of the second convolution kernel of the layer realizes the activation of the calculation result through the Sigmoid function.

重新初始化卷积核矩阵缓存寄存器W,存放第2个卷积层的第3个5×5个卷积核矩阵权值数据,完成网络第2个卷积层输入数据矩阵和第2个卷积层第3个卷积核的卷积计算,通过Sigmoid函数实现计算结果的激活。Reinitialize the convolution kernel matrix cache register W, store the third 5×5 convolution kernel matrix weight data of the second convolution layer, and complete the input data matrix of the second convolution layer of the network and the second convolution The convolution calculation of the third convolution kernel of the layer realizes the activation of the calculation result through the Sigmoid function.

在进行每次卷积计算的同时,初始化第i+5个数据缓存寄存器P(i-1)%(5+1)+5,作为卷积中第i+1个子矩阵卷积计算的缓存输入数据,实现循环卷积,如附图5所示。While performing each convolution calculation, initialize the i+5th data buffer register P (i-1)%(5+1)+5 as the buffer input for the i+1th submatrix convolution calculation in the convolution data, implement circular convolution, as shown in Figure 5.

具体步骤为:如前所述,输入图像为12×12浮点数矩阵,卷积核为3个5×5浮点数矩阵,滑动窗尺度为5×5,横向滑动步长为1,纵向滑动步长为1,则卷积结果为3个8×8的浮点数矩阵,3个矩阵的每个元素分别加上偏置量b21,b22,b23(离线训练模型参数),利用Sigmoid函数激活后,结果为3个8×8的浮点数矩阵,存入Block RAM。The specific steps are: as mentioned above, the input image is a 12×12 floating-point matrix, the convolution kernel is three 5×5 floating-point matrices, the sliding window scale is 5×5, the horizontal sliding step is 1, and the vertical sliding step is 1. If the length is 1, the convolution result is three 8×8 floating-point number matrices. Each element of the three matrices is added with offsets b21, b22, b23 (offline training model parameters), and after activation by the Sigmoid function, The result is three 8×8 floating-point number matrices, which are stored in Block RAM.

完成2次卷积计算后,计算结果为3个8×8浮点数矩阵,存入Block RAM。After completing the two convolution calculations, the calculation results are three 8×8 floating-point number matrices, which are stored in the Block RAM.

9、进行第2个池化层计算9. Perform the second pooling layer calculation

实现第2个卷积层计算结果的池化计算,如附图6所示,结果为3个4×4浮点数矩阵,存入Block RAM。具体步骤为:卷积计算结果数据滑动窗尺度为2×2,步长为2,采用平均下采样法实现池化,即逐个2×2浮点数矩阵相加,计算结果取均值,获得3个4×4浮点数矩阵,作为Softmax层的输入矩阵,如附图7所示。Implement the pooling calculation of the calculation results of the second convolution layer, as shown in Figure 6, the results are three 4×4 floating point number matrices, which are stored in the Block RAM. The specific steps are: the sliding window scale of the convolution calculation result data is 2 × 2, the step size is 2, and the average downsampling method is used to realize the pooling, that is, the 2 × 2 floating-point number matrices are added one by one, and the calculation results are averaged to obtain 3 The 4×4 floating point number matrix is used as the input matrix of the Softmax layer, as shown in Figure 7.

10、分类计算10. Classification calculation

将卷积计算和池化计算结果传回ARM端进行分类运算。具体步骤为:FPGA端将Block RAM中的卷积池化计算结果矩阵,通过FIFO缓存,APB总线传输至ARM端,ARM端利用Softmax运算完成数据分类计算,得到输入图片的分类结果并输出。The convolution calculation and pooling calculation results are sent back to the ARM side for classification operations. The specific steps are: the FPGA side transfers the convolution pooling calculation result matrix in the Block RAM to the ARM side through the FIFO buffer and the APB bus. The ARM side uses the Softmax operation to complete the data classification calculation, and obtains the classification result of the input image and outputs it.

上述方法处理MNIST数据库中数字图片“7”的仿真结果如图8所示。The simulation result of the above method processing the digital picture "7" in the MNIST database is shown in Figure 8.

上述方法处理MNIST数据库中数字图片“7”的实测分类结果如图9所示。Figure 9 shows the measured classification results of the above method processing the digital picture "7" in the MNIST database.

参考文献references

[1] Cong J, Xiao B. Minimizing Computation in Convolutional NeuralNetworks[M]// Artificial Neural Networks and Machine Learning – ICANN 2014.Springer International Publishing, 2014:33-7.[1] Cong J, Xiao B. Minimizing Computation in Convolutional NeuralNetworks[M]// Artificial Neural Networks and Machine Learning – ICANN 2014. Springer International Publishing, 2014:33-7.

[2] Farabet C, Poulet C, Han J Y, et al. CNP: An FPGA-based processorfor Convolutional Networks[J]. International Conference on Field ProgrammableLogic & Applications, 2009:32-37.[2] Farabet C, Poulet C, Han J Y, et al. CNP: An FPGA-based processor for Convolutional Networks[J]. International Conference on Field ProgrammableLogic & Applications, 2009:32-37.

[3] Gokhale V, Jin J, Dundar A, et al. A 240 G-ops/s MobileCoprocessor for Deep Neural Networks[C]// IEEE Embedded Vision Workshop.2014:696-701.[3] Gokhale V, Jin J, Dundar A, et al. A 240 G-ops/s MobileCoprocessor for Deep Neural Networks[C]// IEEE Embedded Vision Workshop.2014:696-701.

[4] Zhang C, Li P, Sun G, et al. Optimizing FPGA-based AcceleratorDesign for Deep Convolutional Neural Networks[C]// Acm/sigda InternationalSymposium. 2015:161-170.[4] Zhang C, Li P, Sun G, et al. Optimizing FPGA-based AcceleratorDesign for Deep Convolutional Neural Networks[C]// Acm/sigda InternationalSymposium. 2015:161-170.

[5] Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classificationwith Deep Convolutional Neural Networks[J]. Advances in Neural InformationProcessing Systems, 2012, 25(2):2012.[5] Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks[J]. Advances in Neural Information Processing Systems, 2012, 25(2):2012.

[6] Farabet C, Martini B, Corda B, et al. NeuFlow: A runtimereconfigurable dataflow processor for vision[J]. 2011, 9(6):109-116.[6] Farabet C, Martini B, Corda B, et al. NeuFlow: A runtimereconfigurable dataflow processor for vision[J]. 2011, 9(6):109-116.

[7] Matai J, Irturk A, Kastner R. Design and Implementation of anFPGA-Based Real-Time Face Recognition System[C]// IEEE, InternationalSymposium on Field-Programmable Custom Computing Machines. 2011:97-100.[7] Matai J, Irturk A, Kastner R. Design and Implementation of an FPGA-Based Real-Time Face Recognition System[C]// IEEE, International Symposium on Field-Programmable Custom Computing Machines. 2011:97-100.

[8] Sankaradas M, Jakkula V, Cadambi S, et al. A Massively ParallelCoprocessor for Convolutional Neural Networks[C]// IEEE InternationalConference on Application-Specific Systems, Architectures and Processors.IEEE Computer Society, 2009:53-60.。[8] Sankaradas M, Jakkula V, Cadambi S, et al. A Massively Parallel Coprocessor for Convolutional Neural Networks[C]// IEEE International Conference on Application-Specific Systems, Architectures and Processors. IEEE Computer Society, 2009:53-60.

Claims (1)

1.一种基于FPGA的深度卷积神经网络实现方法,其特征在于具体步骤为:1. a deep convolutional neural network implementation method based on FPGA, is characterized in that concrete steps are: 步骤1、加载训练模型参数Step 1. Load training model parameters (1)在ARM端加载离线训练的深度卷积神经网络模型参数;(1) Load the parameters of the deep convolutional neural network model trained offline on the ARM side; (2)将训练模型参数传输至FPGA端;(2) Transfer the training model parameters to the FPGA side; (3)FPGA端经过FIFO缓存后存储在块随机存储器中;(3) The FPGA side is stored in the block random access memory after being buffered by the FIFO; 步骤2、预处理深度卷积神经网络模型Step 2. Preprocessing the deep convolutional neural network model (1)对输入数据进行归一化处理,使其满足模型卷积运算要求;(1) Normalize the input data to make it meet the requirements of the model convolution operation; (2)利用APB总线将ARM端归一化数据传输至FPGA端;(2) Use the APB bus to transmit the normalized data from the ARM side to the FPGA side; (3)FPGA端将归一化数据经过FIFO缓存后存入块随机存储器;(3) The FPGA side stores the normalized data into the block random access memory after passing through the FIFO buffer; 步骤3、卷积和下采样计算Step 3. Convolution and downsampling calculations 设网络模型有H个卷积层和H个池化层,第h个卷积层输入为T个m×m 32位浮点数矩阵,h=1,2,…,H;输出为S个(m-n+1)×(m-n+1)32位浮点数矩阵,卷积核为K个n×n 32位浮点数矩阵,n≤m,输入数据滑动窗尺度为n×n,横向滑动步长为1,纵向滑动步长为1;Suppose the network model has H convolutional layers and H pooling layers, the input of the hth convolutional layer is T m×m 32-bit floating-point number matrices, h=1,2,…,H; the output is S ( m-n+1)×(m-n+1) 32-bit floating-point number matrix, the convolution kernel is K n×n 32-bit floating-point number matrices, n≤m, the input data sliding window scale is n×n, horizontal The sliding step is 1, and the vertical sliding step is 1; (1)初始化卷积运算流水线(1) Initialize the convolution operation pipeline 定义n+1个数据缓存寄存器P0,P1,…,Pn-1,Pn,每个寄存器存放m个数据,其中n个寄存器P(i-1)%(n+1)+0,P(i-1)%(n+1)+1,…,P(i-1)%(n+1)+n-1存放第t个输入数据矩阵的第i个子矩阵n×m数据,t=1,2,…,T,i=1,2,…,m-n+1;用%表示取余数,如果(i-1)%(n+1)+x>n,则(i-1)%(n+1)+x=0,(i-1)%(n+1)+x+1=1,…,其中x=0,1,…,n-1;如果n<m,P(i-1)%(n+1)+n寄存器存放输入数据矩阵中的第i+n行数据,在卷积计算过程中实现并行初始化,以减少FPGA空闲周期,提高计算效率;Define n+1 data cache registers P 0 , P 1 ,..., P n-1 , P n , each register stores m data, of which n registers P (i-1)%(n+1)+0 , P (i-1)%(n+1)+1 ,...,P (i-1)%(n+1)+n-1 stores the i-th submatrix n×m data of the t-th input data matrix , t=1,2,...,T,i=1,2,...,m-n+1; use % to represent the remainder, if (i-1)%(n+1)+x>n, then ( i-1)%(n+1)+x=0, (i-1)%(n+1)+x+1=1,..., where x=0,1,...,n-1; if n <m, P (i-1)%(n+1)+n register stores the i+nth row data in the input data matrix, and implements parallel initialization during the convolution calculation process to reduce FPGA idle cycles and improve computational efficiency ; 定义1个卷积核矩阵缓存寄存器W,存放第k个n×n个卷积核矩阵权值数据,k=1,2,…,K;Define a convolution kernel matrix cache register W to store the kth n×n convolution kernel matrix weight data, k=1,2,...,K; (2)第h个卷积层计算(2) The calculation of the h-th convolutional layer 完成网络第h个卷积层第t个输入数据矩阵和第k个卷积核的卷积计算,通过Sigmoid函数实现计算结果的激活;Complete the convolution calculation of the t-th input data matrix and the k-th convolution kernel of the h-th convolution layer of the network, and activate the calculation result through the Sigmoid function; 在进行每次卷积计算的同时,初始化数据缓存寄存器P(i-1)%(n+1)+n,作为卷积中第i+1个子矩阵卷积计算的缓存输入数据,实现循环卷积;While performing each convolution calculation, initialize the data buffer register P (i-1)%(n+1)+n as the buffered input data for the i+1th sub-matrix convolution calculation in the convolution to realize the circular volume product; 在FPGA端通过浮点IP核构建Sigmoid函数,实现卷积计算结果的激活,Sigmoid函数的表达式为:
Figure FDA0002538557580000011
具体步骤为:
The Sigmoid function is constructed on the FPGA side through the floating-point IP core to realize the activation of the convolution calculation result. The expression of the Sigmoid function is:
Figure FDA0002538557580000011
The specific steps are:
如前所述,输入数据为m×m浮点数矩阵,卷积核为n×n浮点数矩阵,滑动窗尺度为n×n,横向滑动步长为1,纵向滑动步长为1,则卷积结果为(m-n+1)×(m-n+1)的浮点数矩阵,矩阵的每个元素加上偏置量b11,即离线训练模型参数,利用Sigmoid函数激活后,结果为(m-n+1)×(m-n+1)的浮点数矩阵,存入Block RAM;As mentioned above, the input data is an m×m floating-point number matrix, the convolution kernel is an n×n floating-point number matrix, the sliding window scale is n×n, the horizontal sliding step is 1, and the vertical sliding step is 1, then the convolution The result of the product is a (m-n+1)×(m-n+1) floating-point number matrix. Each element of the matrix is added with the offset b11, that is, the offline training model parameters. After activation by the Sigmoid function, the result is ( m-n+1)×(m-n+1) floating-point number matrix, stored in Block RAM; 完成1次卷积计算后,重新初始化卷积核矩阵缓存寄存器W,进行下一次卷积计算,往复循环卷积计算,计算结果为S个(m-n+1)×(m-n+1)浮点数矩阵,存入Block RAM;After completing one convolution calculation, re-initialize the convolution kernel matrix cache register W, perform the next convolution calculation, and reciprocate the convolution calculation. The calculation result is S (m-n+1)×(m-n+1 ) Floating point matrix, stored in Block RAM; (3)第h个池化层计算(3) The calculation of the h-th pooling layer 实现第h个卷积层计算结果的池化计算,结果为S个[(m-n+1)/2]×[(m-n+1)/2]浮点数矩阵,存入Block RAM;具体步骤为:设卷积计算结果数据滑动窗尺度为2×2,步长为2,采用平均下采样法实现池化,即逐个2×2浮点数矩阵相加,计算结果取均值,获得S个[(m-n+1)/2]×[(m-n+1)/2]浮点数矩阵,作为第h+1个卷积层计算的输入矩阵;Implement the pooling calculation of the calculation result of the hth convolutional layer, and the result is S [(m-n+1)/2]×[(m-n+1)/2] floating-point number matrices, which are stored in Block RAM; The specific steps are: set the sliding window scale of the convolution calculation result data to be 2×2 and the step size to be 2, and use the average downsampling method to realize pooling, that is, add 2×2 floating-point number matrices one by one, take the average of the calculation results, and obtain S A [(m-n+1)/2]×[(m-n+1)/2] floating-point number matrix is used as the input matrix calculated by the h+1th convolutional layer; 步骤4、分类计算Step 4. Classification calculation 将卷积计算和池化计算结果传回ARM端进行分类运算;具体步骤为:FPGA端将BlockRAM中的卷积池化计算结果矩阵,通过FIFO缓存,APB总线传输至ARM端,ARM端利用Softmax运算完成数据分类计算,得到输入数据的分类结果并输出。Send the convolution calculation and pooling calculation results back to the ARM side for classification operations; the specific steps are: the FPGA side transmits the convolution pooling calculation result matrix in the BlockRAM to the ARM side through the FIFO buffer, APB bus, and the ARM side uses Softmax. The operation completes the data classification calculation, obtains the classification result of the input data and outputs it.
CN201610615714.2A 2016-07-30 2016-07-30 Deep convolution neural network implementation method based on FPGA Active CN106228240B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610615714.2A CN106228240B (en) 2016-07-30 2016-07-30 Deep convolution neural network implementation method based on FPGA

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610615714.2A CN106228240B (en) 2016-07-30 2016-07-30 Deep convolution neural network implementation method based on FPGA

Publications (2)

Publication Number Publication Date
CN106228240A CN106228240A (en) 2016-12-14
CN106228240B true CN106228240B (en) 2020-09-01

Family

ID=57536621

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610615714.2A Active CN106228240B (en) 2016-07-30 2016-07-30 Deep convolution neural network implementation method based on FPGA

Country Status (1)

Country Link
CN (1) CN106228240B (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11227086B2 (en) 2017-01-04 2022-01-18 Stmicroelectronics S.R.L. Reconfigurable interconnect
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
US11562115B2 (en) 2017-01-04 2023-01-24 Stmicroelectronics S.R.L. Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US12619678B2 (en) 2022-06-23 2026-05-05 Stmicroelectronics S.R.L. Acceleration of 1X1 convolutions in convolutional neural networks

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018060268A (en) * 2016-10-03 2018-04-12 株式会社日立製作所 Recognition device and learning system
KR102881595B1 (en) * 2016-12-22 2025-11-06 삼성전자주식회사 Convolutional neural network system and operation method thererof
CN106529517B (en) * 2016-12-30 2019-11-01 北京旷视科技有限公司 Image processing method and image processing apparatus
CN106650691A (en) * 2016-12-30 2017-05-10 北京旷视科技有限公司 Image processing method and image processing device
CN106682702A (en) * 2017-01-12 2017-05-17 张亮 Deep learning method and system
CN106875011B (en) * 2017-01-12 2020-04-17 南京风兴科技有限公司 Hardware architecture of binary weight convolution neural network accelerator and calculation flow thereof
CN106909970B (en) * 2017-01-12 2020-04-21 南京风兴科技有限公司 Approximate calculation-based binary weight convolution neural network hardware accelerator calculation device
CN108304922B (en) * 2017-01-13 2020-12-15 华为技术有限公司 Computing device and computing method for neural network computing
WO2018137177A1 (en) * 2017-01-25 2018-08-02 北京大学 Method for convolution operation based on nor flash array
CN106779060B (en) * 2017-02-09 2019-03-08 武汉魅瞳科技有限公司 A kind of calculation method for the depth convolutional neural networks realized suitable for hardware design
CN106875012B (en) * 2017-02-09 2019-09-20 武汉魅瞳科技有限公司 A Pipelined Acceleration System of FPGA-Based Deep Convolutional Neural Network
TWI607389B (en) * 2017-02-10 2017-12-01 耐能股份有限公司 Pool computing operation device and method for convolutional neural network
CN106991474B (en) * 2017-03-28 2019-09-24 华中科技大学 The parallel full articulamentum method for interchanging data of deep neural network model and system
CN106991999B (en) * 2017-03-29 2020-06-02 北京小米移动软件有限公司 Voice recognition method and device
CN108804974B (en) * 2017-04-27 2021-07-02 深圳鲲云信息科技有限公司 Resource estimation and configuration method and system for hardware architecture of target detection algorithm
CN108229645B (en) 2017-04-28 2021-08-06 北京市商汤科技开发有限公司 Convolution acceleration and computing processing method, device, electronic device and storage medium
CN107229969A (en) * 2017-06-21 2017-10-03 郑州云海信息技术有限公司 A kind of convolutional neural networks implementation method and device based on FPGA
CN107451653A (en) * 2017-07-05 2017-12-08 深圳市自行科技有限公司 Computational methods, device and the readable storage medium storing program for executing of deep neural network
CN107451654B (en) * 2017-07-05 2021-05-18 深圳市自行科技有限公司 Acceleration operation method of convolutional neural network, server and storage medium
CN107451659B (en) * 2017-07-27 2020-04-10 清华大学 Neural network accelerator for bit width partition and implementation method thereof
CN107622305A (en) * 2017-08-24 2018-01-23 中国科学院计算技术研究所 Processor and processing method for neutral net
CN107689223A (en) * 2017-08-30 2018-02-13 北京嘉楠捷思信息技术有限公司 Audio identification method and device
CN109729734B8 (en) * 2017-08-31 2020-11-24 中科寒武纪科技股份有限公司 Chip device and related product
US10839286B2 (en) * 2017-09-14 2020-11-17 Xilinx, Inc. System and method for implementing neural networks in integrated circuits
CN107564522A (en) * 2017-09-18 2018-01-09 郑州云海信息技术有限公司 A kind of intelligent control method and device
CN107656899A (en) * 2017-09-27 2018-02-02 深圳大学 A kind of mask convolution method and system based on FPGA
CN107749044A (en) * 2017-10-19 2018-03-02 珠海格力电器股份有限公司 Image information pooling method and device
CN109754062B (en) * 2017-11-07 2024-05-14 上海寒武纪信息科技有限公司 Execution method of convolution expansion instruction and related product
CN107844833A (en) * 2017-11-28 2018-03-27 郑州云海信息技术有限公司 A kind of data processing method of convolutional neural networks, device and medium
CN108009631A (en) * 2017-11-30 2018-05-08 睿视智觉(深圳)算法技术有限公司 A kind of VGG-16 general purpose processing blocks and its control method based on FPGA
WO2019109336A1 (en) * 2017-12-08 2019-06-13 Baidu.Com Times Technology (Beijing) Co., Ltd. Stereo camera depth determination using hardware accelerator
CN109961133B (en) * 2017-12-14 2020-04-24 中科寒武纪科技股份有限公司 Integrated circuit chip device and related product
CN108416422B (en) * 2017-12-29 2024-03-01 国民技术股份有限公司 An FPGA-based convolutional neural network implementation method and device
CN108388943B (en) * 2018-01-08 2020-12-29 中国科学院计算技术研究所 A pooling device and method suitable for neural networks
CN108154229B (en) * 2018-01-10 2022-04-08 西安电子科技大学 Image processing method based on FPGA (field programmable Gate array) accelerated convolutional neural network framework
CN108362628A (en) * 2018-01-11 2018-08-03 天津大学 The n cell flow-sorting methods of flow cytometer are imaged based on polarizing diffraction
CN109643336A (en) * 2018-01-15 2019-04-16 深圳鲲云信息科技有限公司 Artificial intelligence process device designs a model method for building up, system, storage medium, terminal
US11874898B2 (en) 2018-01-15 2024-01-16 Shenzhen Corerain Technologies Co., Ltd. Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal
WO2019136752A1 (en) * 2018-01-15 2019-07-18 深圳鲲云信息科技有限公司 Artificial intelligence convolution processing method and device, readable storage medium and terminal
CN110178146B (en) * 2018-01-15 2023-05-12 深圳鲲云信息科技有限公司 Deconvolution device and artificial intelligence processing device applied thereto
CN109416756A (en) * 2018-01-15 2019-03-01 深圳鲲云信息科技有限公司 Convolver and its applied artificial intelligence processing device
US11568232B2 (en) 2018-02-08 2023-01-31 Quanta Computer Inc. Deep learning FPGA converter
CN108108809B (en) * 2018-03-05 2021-03-02 山东领能电子科技有限公司 Hardware architecture for reasoning and accelerating convolutional neural network and working method thereof
CN108537330B (en) * 2018-03-09 2020-09-01 中国科学院自动化研究所 Convolution computing device and method applied to neural network
CN108256636A (en) * 2018-03-16 2018-07-06 成都理工大学 A kind of convolutional neural networks algorithm design implementation method based on Heterogeneous Computing
CN108710892B (en) * 2018-04-04 2020-09-01 浙江工业大学 A collaborative immune defense method for multiple countermeasures against image attacks
CN108615076B (en) * 2018-04-08 2020-09-11 瑞芯微电子股份有限公司 Deep learning chip-based data storage optimization method and device
CN108470211B (en) * 2018-04-09 2022-07-12 郑州云海信息技术有限公司 A method, device and computer storage medium for realizing convolution calculation
CN108520300A (en) * 2018-04-09 2018-09-11 郑州云海信息技术有限公司 A method and device for implementing a deep learning network
CN110399976B (en) * 2018-04-25 2022-04-05 华为技术有限公司 Computing device and computing method
CN108549935B (en) * 2018-05-03 2021-09-10 山东浪潮科学研究院有限公司 Device and method for realizing neural network model
CN108805270B (en) * 2018-05-08 2021-02-12 华中科技大学 Convolutional neural network system based on memory
CN108595379A (en) * 2018-05-08 2018-09-28 济南浪潮高新科技投资发展有限公司 A kind of parallelization convolution algorithm method and system based on multi-level buffer
CN108805267B (en) * 2018-05-28 2021-09-10 重庆大学 Data processing method for hardware acceleration of convolutional neural network
CN108764182B (en) * 2018-06-01 2020-12-08 阿依瓦(北京)技术有限公司 Optimized acceleration method and device for artificial intelligence
CN108711429B (en) * 2018-06-08 2021-04-02 Oppo广东移动通信有限公司 Electronic device and device control method
CN109086879B (en) * 2018-07-05 2020-06-16 东南大学 Method for realizing dense connection neural network based on FPGA
CN109032781A (en) * 2018-07-13 2018-12-18 重庆邮电大学 A kind of FPGA parallel system of convolutional neural networks algorithm
CN109117949A (en) * 2018-08-01 2019-01-01 南京天数智芯科技有限公司 Flexible data stream handle and processing method for artificial intelligence equipment
CN109036459B (en) * 2018-08-22 2019-12-27 百度在线网络技术(北京)有限公司 Voice endpoint detection method and device, computer equipment and computer storage medium
CN109102070B (en) * 2018-08-22 2020-11-24 地平线(上海)人工智能技术有限公司 Method and device for preprocessing of convolutional neural network data
CN109214506B (en) * 2018-09-13 2022-04-15 深思考人工智能机器人科技(北京)有限公司 Convolutional neural network establishing device and method based on pixels
US20200090023A1 (en) * 2018-09-14 2020-03-19 Huawei Technologies Co., Ltd. System and method for cascaded max pooling in neural networks
US20200090046A1 (en) * 2018-09-14 2020-03-19 Huawei Technologies Co., Ltd. System and method for cascaded dynamic max pooling in neural networks
CN109359732B (en) 2018-09-30 2020-06-09 阿里巴巴集团控股有限公司 Chip and data processing method based on chip
CN109376843B (en) * 2018-10-12 2021-01-08 山东师范大学 FPGA-based electroencephalogram signal rapid classification method, implementation method and device
CN109146067B (en) * 2018-11-19 2021-11-05 东北大学 An FPGA-based Policy Convolutional Neural Network Accelerator
CN109670578A (en) * 2018-12-14 2019-04-23 北京中科寒武纪科技有限公司 Neural network first floor convolution layer data processing method, device and computer equipment
CN109800867B (en) * 2018-12-17 2020-09-29 北京理工大学 Data calling method based on FPGA off-chip memory
CN109711539B (en) * 2018-12-17 2020-05-29 中科寒武纪科技股份有限公司 Operation method, device and related product
CN109740748B (en) * 2019-01-08 2021-01-08 西安邮电大学 Convolutional neural network accelerator based on FPGA
CN109784483B (en) * 2019-01-24 2022-09-09 电子科技大学 In-memory computing accelerator for binarized convolutional neural network based on FD-SOI process
CN109871939B (en) * 2019-01-29 2021-06-15 深兰人工智能芯片研究院(江苏)有限公司 Image processing method and image processing device
CN109615067B (en) * 2019-03-05 2019-05-21 深兰人工智能芯片研究院(江苏)有限公司 A kind of data dispatching method and device of convolutional neural networks
TWI696129B (en) * 2019-03-15 2020-06-11 華邦電子股份有限公司 Memory chip capable of performing artificial intelligence operation and operation method thereof
CN110032374B (en) * 2019-03-21 2023-04-07 深兰科技(上海)有限公司 Parameter extraction method, device, equipment and medium
CN110084363B (en) * 2019-05-15 2023-04-25 电科瑞达(成都)科技有限公司 A Method of Accelerating Deep Learning Model Based on FPGA Platform
CN110223687B (en) * 2019-06-03 2021-09-28 Oppo广东移动通信有限公司 Instruction execution method and device, storage medium and electronic equipment
CN110209627A (en) * 2019-06-03 2019-09-06 山东浪潮人工智能研究院有限公司 A kind of hardware-accelerated method of SSD towards intelligent terminal
CN110727634B (en) * 2019-07-05 2021-10-29 中国科学院计算技术研究所 Embedded intelligent computer system for object-end data processing
CN110458279B (en) * 2019-07-15 2022-05-20 武汉魅瞳科技有限公司 An FPGA-based binary neural network acceleration method and system
CN110472442A (en) * 2019-08-20 2019-11-19 厦门理工学院 An IP Core for Automatically Detecting Hardware Trojans
TWI724515B (en) * 2019-08-27 2021-04-11 聯智科創有限公司 Machine learning service delivery method
CN110619387B (en) * 2019-09-12 2023-06-20 复旦大学 Channel expansion method based on convolutional neural network
CN110689088A (en) * 2019-10-09 2020-01-14 山东大学 CNN-based LIBS ore spectral data classification method and device
CN110910434B (en) * 2019-11-05 2023-05-12 东南大学 Method for realizing deep learning parallax estimation algorithm based on FPGA (field programmable Gate array) high energy efficiency
CN110991632B (en) * 2019-11-29 2023-05-23 电子科技大学 A Design Method of Heterogeneous Neural Network Computing Accelerator Based on FPGA
CN110880038B (en) * 2019-11-29 2022-07-01 中国科学院自动化研究所 FPGA-based system for accelerating convolution computing, convolutional neural network
CN111008629A (en) * 2019-12-07 2020-04-14 怀化学院 Cortex-M3-based method for identifying number of tip
CN110928318A (en) * 2019-12-31 2020-03-27 苏州清研微视电子科技有限公司 FPGA-based binocular vision assisted driving system
CN111310921B (en) * 2020-03-27 2022-04-19 西安电子科技大学 FPGA implementation method of lightweight deep convolutional neural network
CN111667053B (en) * 2020-06-01 2023-05-09 重庆邮电大学 A Forward Propagation Calculation Acceleration Method for Convolutional Neural Network Accelerator
CN111832718B (en) * 2020-06-24 2021-08-03 上海西井信息科技有限公司 Chip Architecture
CN111860773B (en) * 2020-06-30 2023-07-28 北京百度网讯科技有限公司 Processing device and method for information processing
CN112508184B (en) * 2020-12-16 2022-04-29 重庆邮电大学 Design method of fast image recognition accelerator based on convolutional neural network
CN113012689B (en) * 2021-04-15 2023-04-07 成都爱旗科技有限公司 Electronic equipment and deep learning hardware acceleration method
CN113762491B (en) * 2021-08-10 2023-06-30 南京工业大学 Convolutional neural network accelerator based on FPGA
CN113850814A (en) * 2021-09-26 2021-12-28 华南农业大学 A CNN model-based method for identification of litchi leaf diseases and insect pests
CN114299514B (en) * 2021-12-07 2025-05-13 南京理工大学 A method for realizing handwritten digit recognition
CN114546484A (en) * 2022-02-21 2022-05-27 山东浪潮科学研究院有限公司 Deep convolution optimization method, system and device based on micro-architecture processor
CN116188868B (en) * 2023-03-08 2025-11-11 合肥工业大学 Plastic sorting method based on ZYNQ development board
CN116718894B (en) * 2023-06-19 2024-03-29 上饶市广强电子科技有限公司 Circuit stability test method and system for corn lamp

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882164B1 (en) * 2004-09-24 2011-02-01 University Of Southern California Image convolution engine optimized for use in programmable gate arrays
CN104035750A (en) * 2014-06-11 2014-09-10 西安电子科技大学 Field programmable gate array (FPGA)-based real-time template convolution implementing method
CN105046681A (en) * 2015-05-14 2015-11-11 江南大学 Image salient region detecting method based on SoC
CN105469039A (en) * 2015-11-19 2016-04-06 天津大学 Target identification system based on AER image sensor
CN105491269A (en) * 2015-11-24 2016-04-13 长春乙天科技有限公司 High-fidelity video amplification method based on deconvolution image restoration
CN105678379A (en) * 2016-01-12 2016-06-15 腾讯科技(深圳)有限公司 CNN processing method and device
CN105678378A (en) * 2014-12-04 2016-06-15 辉达公司 Indirect access to sample data to perform multiple convolution operations in parallel processing systems
CN105740773A (en) * 2016-01-25 2016-07-06 重庆理工大学 Deep learning and multi-scale information based behavior identification method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9078162B2 (en) * 2013-03-15 2015-07-07 DGS Global Systems, Inc. Systems, methods, and devices for electronic spectrum management

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882164B1 (en) * 2004-09-24 2011-02-01 University Of Southern California Image convolution engine optimized for use in programmable gate arrays
CN104035750A (en) * 2014-06-11 2014-09-10 西安电子科技大学 Field programmable gate array (FPGA)-based real-time template convolution implementing method
CN105678378A (en) * 2014-12-04 2016-06-15 辉达公司 Indirect access to sample data to perform multiple convolution operations in parallel processing systems
CN105046681A (en) * 2015-05-14 2015-11-11 江南大学 Image salient region detecting method based on SoC
CN105469039A (en) * 2015-11-19 2016-04-06 天津大学 Target identification system based on AER image sensor
CN105491269A (en) * 2015-11-24 2016-04-13 长春乙天科技有限公司 High-fidelity video amplification method based on deconvolution image restoration
CN105678379A (en) * 2016-01-12 2016-06-15 腾讯科技(深圳)有限公司 CNN processing method and device
CN105740773A (en) * 2016-01-25 2016-07-06 重庆理工大学 Deep learning and multi-scale information based behavior identification method

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
A Multistage Dataflow Implementation of a Deep Convolutional Neural Network Based on FPGA For High-Speed Object Recognition;Li, Ning 等;《2016 IEEE SOUTHWEST SYMPOSIUM ON IMAGE ANALYSIS AND INTERPRETATION》;20160308;第165-168页 *
Design space exploration of FPGA-based Deep Convolutional Neural Networks;Mohammad Motamedi 等;《2016 21st Asia and South Pacific Design Automation Conference》;20160310;全文 *
Fast Pipeline 128times128 pixel spiking convolution core for event-driven vision processing in FPGAs;Yousefzadeh, A 等;《2015 First International Conference on Event-Based Control, Communication and Signal Processing 》;20151231;全文 *
一种新型2-D卷积器的FPGA实现;桑红石 等;《微电子学与计算机》;20110930;全文 *
基于FPGA的图像卷积IP核的设计与实现;朱学亮 等;《微电子学与计算机》;20160630;第188-192页 *
空间模板卷积滤波算法的FPGA实现新方法;李明 等;《计算机应用与软件》;20100831;第17-18页 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11227086B2 (en) 2017-01-04 2022-01-18 Stmicroelectronics S.R.L. Reconfigurable interconnect
US11562115B2 (en) 2017-01-04 2023-01-24 Stmicroelectronics S.R.L. Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links
US11675943B2 (en) 2017-01-04 2023-06-13 Stmicroelectronics S.R.L. Tool to create a reconfigurable interconnect framework
US12073308B2 (en) * 2017-01-04 2024-08-27 Stmicroelectronics International N.V. Hardware accelerator engine
US12118451B2 (en) 2017-01-04 2024-10-15 Stmicroelectronics S.R.L. Deep convolutional network heterogeneous architecture
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11880759B2 (en) 2020-02-18 2024-01-23 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
US11836608B2 (en) 2020-06-23 2023-12-05 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
US12619678B2 (en) 2022-06-23 2026-05-05 Stmicroelectronics S.R.L. Acceleration of 1X1 convolutions in convolutional neural networks

Also Published As

Publication number Publication date
CN106228240A (en) 2016-12-14

Similar Documents

Publication Publication Date Title
CN106228240B (en) Deep convolution neural network implementation method based on FPGA
CN111459877B (en) Winograd YOLOv2 target detection model method based on FPGA acceleration
CN109284817B (en) Deep separable convolutional neural network processing architecture/method/system and medium
TWI795519B (en) Computing apparatus, machine learning computing apparatus, combined processing device, neural network chip, electronic device, board, and method for performing machine learning calculation
CN109978161B (en) Universal convolution-pooling synchronous processing convolution kernel system
CN108427990B (en) Neural network computing system and method
CN110263925B (en) A hardware acceleration implementation device for forward prediction of convolutional neural network based on FPGA
CN110163357B (en) A computing device and method
CN107545303B (en) Computing device and computing method for sparse artificial neural network
CN113051216B (en) MobileNet-SSD target detection device and method based on FPGA acceleration
CN108090565A (en) Accelerated method is trained in a kind of convolutional neural networks parallelization
CN110390385A (en) A Configurable Parallel General Convolutional Neural Network Accelerator Based on BNRP
CN109447241B (en) A Dynamic Reconfigurable Convolutional Neural Network Accelerator Architecture for the Internet of Things
CN110458279A (en) An FPGA-based binary neural network acceleration method and system
CN107729989A (en) A kind of device and method for being used to perform artificial neural network forward operation
CN108256636A (en) A kind of convolutional neural networks algorithm design implementation method based on Heterogeneous Computing
CN107239824A (en) Apparatus and method for realizing sparse convolution neutral net accelerator
CN111582451B (en) Image recognition interlayer parallel pipeline type binary convolution neural network array architecture
CN104915322A (en) Method for accelerating convolution neutral network hardware and AXI bus IP core thereof
CN108320018B (en) Artificial neural network operation device and method
CN110991631A (en) Neural network acceleration system based on FPGA
CN110991630A (en) Convolutional neural network processor for edge calculation
CN107203808A (en) A kind of two-value Convole Unit and corresponding two-value convolutional neural networks processor
CN111275167A (en) High-energy-efficiency pulse array framework for binary convolutional neural network
CN109948787A (en) Computing device, chip and method for neural network convolution layer

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant