CN106228240B - Deep convolution neural network implementation method based on FPGA - Google Patents
Deep convolution neural network implementation method based on FPGA Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/08—Speech classification or search
- G10L15/16—Speech 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的快速并行处理和极低功耗的高效能计算特性,实现深度卷积神经网络模型中复杂度最高的卷积计算部分,在保证算法正确率的前提下,大幅提升算法效率,降低功耗。
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.
Description
技术领域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、加载训练模型参数
(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、预处理深度卷积神经网络模型
(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、卷积和下采样计算
针对深度卷积神经网络模型中计算量最大的卷积层计算,设计深度流水线实现模式。设网络模型有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函数的表达式为:。具体步骤为: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: . 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、分类计算
将卷积计算和池化计算结果传回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
利用深度卷积神经网络模型的手写体字符识别算法在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
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函数的表达式为:。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: .
具体步骤为: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)
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)
| 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)
| 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)
| 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)
| 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 |
-
2016
- 2016-07-30 CN CN201610615714.2A patent/CN106228240B/en active Active
Patent Citations (8)
| 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)
| 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)
| 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 |



