CN111931925B - 基于fpga的二值化神经网络的加速系统 - Google Patents
基于fpga的二值化神经网络的加速系统 Download PDFInfo
- Publication number
- CN111931925B CN111931925B CN202010793337.8A CN202010793337A CN111931925B CN 111931925 B CN111931925 B CN 111931925B CN 202010793337 A CN202010793337 A CN 202010793337A CN 111931925 B CN111931925 B CN 111931925B
- Authority
- CN
- China
- Prior art keywords
- module
- convolution
- full
- calculation
- connection
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 30
- 230000001133 acceleration Effects 0.000 title claims abstract description 21
- 238000004364 calculation method Methods 0.000 claims abstract description 119
- 238000011176 pooling Methods 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000006243 chemical reaction Methods 0.000 claims abstract description 20
- 230000015654 memory Effects 0.000 claims description 28
- 230000000630 rising effect Effects 0.000 claims description 19
- 101001106432 Homo sapiens Rod outer segment membrane protein 1 Proteins 0.000 claims description 14
- 102100021424 Rod outer segment membrane protein 1 Human genes 0.000 claims description 14
- 101150065817 ROM2 gene Proteins 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 10
- 230000007480 spreading Effects 0.000 claims description 7
- 238000001514 detection method Methods 0.000 abstract description 4
- 238000013461 design Methods 0.000 abstract description 2
- 101100021997 Arabidopsis thaliana CYP97A3 gene Proteins 0.000 description 15
- 238000013527 convolutional neural network Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 101100021996 Arabidopsis thaliana CYP97C1 gene Proteins 0.000 description 1
- 101100510695 Arabidopsis thaliana LUT2 gene Proteins 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
本发明提出了一种基于FPGA的二值化神经网络的加速系统,本发明属于集成电路设计技术领域,用于解决现有技术中存在的卷积运算的关键计算路径长导致的计算速度易受到串行计算限制,且资源占用较多的技术问题。所述加速系统包含通过FPGA实现的权重数据缓存模块、输入特征数据缓存模块、配置数据缓存模块、权重数据转换模块、卷积模块、池化模块、全连接模块、结果处理模块、结果缓存模块和控制模块。本发明可应用于嵌入式环境下的目标快速检测等场景。
Description
技术领域
本发明属于集成电路设计技术领域,涉及一种二值化神经网络的加速系统,具体涉及一种基于FPGA的二值化神经网络的加速系统,可应用于嵌入式环境下的目标快速检测等场景。
背景技术
随着深度学习的不断发展,其在工业领域中的应用越来越广泛。深度学习技术极大改善了工业应用的自动化水平。其中,卷积神经网络因其出色的表现在计算机视觉方面的应用更为广泛,例如图像分类、目标检测、动态追踪等场景。
在使用卷积神经网络时,为了获得较高的准确率,研究者们通常都趋向于构造更深层和更复杂的神经网络,这样将需要较大的网络数据存储和计算开销。而在嵌入式环境下需要在计算能力和存储空间有限的硬件设备上部署卷积神经网络模型。为了解决该问题,量化、裁剪等方法被提出。其中,量化方法在计算和存储资源优先的嵌入式设备上更加适用。在各种量化方法中,二值化是目前效率相对较高的方法,通过对卷积神经网络中输入特征数据与权重数据进行二值化处理,使得卷积运算由浮点运算类型转化为位运算类型,可通过逻辑单元进行实现。
目前,应用于嵌入式环境下的二值化神经网络加速系统的实现主要有两个研究方向:一个是基于可定制化专用集成芯片ASIC进行实现,通过特定算法对ASIC进行定制优化,计算效率高且设备功耗相对较低;但专用集成芯片缺乏统一的软硬件开发环境,系统开发周期长,且仅能加速特定深度神经网络,灵活性及通用性较差,难以同时满足嵌入式环境的多应用需求。另一个研究方向是基于可编程逻辑门阵列FPGA进行实现,FPGA具有高度并行性,可用于计算加速,且支持片上集成的逻辑单元进行动态可重构配置,具备良好的灵活性与可扩展性,同时FPGA还具备高度集成的软硬件开发环境,是目前实现二值化神经网络的加速系统广泛采用的方法。
目前嵌入式环境下的二值化神经网络加速系统,其系统性能易受到对应的硬件资源的限制,具体体现在当FPGA处理计算过程复杂的卷积运算时易受到FPGA中乘法器数量的限制;其次,实现卷积运算的关键计算路径是决定FPGA的加速系统的计算效率的关键因素,卷积运算的关键计算路径越短,执行卷积运算的速度就越快,且由卷积计算带来的动态功耗也会降低。例如申请公布号为CN111008691A,名称为“一种权值和激活值都二值化的卷积神经网络加速器架构”的专利申请,公开了一种基于FPGA的权值和激活值都二值化的卷积神经网络加速器,该加速器中通过不同存储器储存权值数据与特征图数据,并利用由异或模块和累加模块构成的两类运算器去分别完成对应的卷积层运算与全连接层运算,通过逻辑资源完成的异或逻辑运算替代卷积层运算与全连接层运算中需要由乘法器完成的乘法运算,使得加速器的运算速度不再受到FPGA中乘法器数量的限制,同时,每个运算器中异或模块和累加模块采用并行计算结构,对加速器的运算过程产生加速效果;但其存在的不足之处在于:1、该加速器卷积层运算与全连接层运算中的卷积运算由异或逻辑与累加操作组合完成,卷积运算的关键计算路径长,导致卷积运算的计算速度易受到异或逻辑与累加操作组合的串行计算方式的限制;2、该加速器参与卷积层运算与全连接层运算中的卷积运算的卷积核尺寸为a×a的对称卷积核,计算开销较大,完成对应的卷积运算需要占用的逻辑资源较多。
发明内容
本发明的目的在于针对上述现有技术的缺陷,提出一种基于FPGA的二值化神经网络的加速系统,用于解决现有技术中存在的卷积运算的关键计算路径长导致的计算速度易受到串行计算限制,且资源占用较多的技术问题。
为实现上述目的,本发明采取的技术方案为:
一种基于FPGA的二值化神经网络的加速系统,包含通过FPGA实现的权重数据缓存模块、输入特征数据缓存模块、配置数据缓存模块、权重数据转换模块、卷积模块、池化模块、全连接模块、结果处理模块、结果缓存模块和控制模块,其中:
所述权重数据缓存模块,用于通过FPGA上的存储器DDR,对二值化神经网络的卷积层权重数据和全连接层权重数据进行缓存;
所述输入特征数据缓存模块,用于通过FPGA上的存储器DDR,对二值化神经网络的输入特征数据进行缓存;
所述配置数据缓存模块,用于根据二值化神经网络卷积层包含的M个尺寸为a的非对称卷积核kernela按行计算优先或列计算优先的卷积展开顺序计算kernela的卷积配置数据X,根据二值化神经网络全连接层包含的I个尺寸为b的非对称卷积核kernelb按行计算优先或列计算优先的卷积展开顺序计算kernelb的全连接卷积配置数据Y,并按照卷积配置数据X计算的顺序与按照全连接卷积配置数据Y计算的顺序,以kernela的卷积层权重数据和kernelb的全连接层权重数据为缓存地址,通过FPGA上的片内存储器ROM1与ROM2分别对kernela的卷积配置数据和kernelb的全连接卷积配置数据进行缓存;
所述权重数据转换模块,用于当控制模块提供的专用控制时钟信号为上升沿,且复位号为高电平时,按照kernela的尺寸a和kernelb的尺寸b,分别依次读取存储器DDR中缓存的kernela的卷积层权重数据和kernelb的全连接层权重数据,并将所读取权重数据分别作为访问片内存储器ROM1与ROM2的地址信号,依次读取片内存储器ROM1中缓存的kernela的卷积配置数据和ROM2中缓存的kernelb的全连接卷积配置数据;
所述卷积模块,包括卷积运算控制子模块和由与卷积核kernela数量M相同的待配置卷积计算的LUT逻辑单元组成的可重配卷积计算子模块A,A={Am,M≥2};所述卷积运算控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U1,并根据地址计数器产生的Am的帧地址信号,通过从权重数据转换模块中按照卷积配置数据X计算的顺序依次读取ROM1中Am对应kernela的卷积配置数据对Am进行配置,得到内容配置后的可重配卷积计算子模块A;所述内容配置后的可重配卷积计算子模块A,用于对从FPGA上的存储器DDR读取的输入特征数据进行卷积运算;
所述池化模块,包括池化运算控制子模块和由N个待配置池化计算的LUT逻辑单元组成的可重配池化计算子模块B,B={Bn,N≥2};所述池化运算控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U2,并根据地址计数器产生的Bn的帧地址信号,通过池化计算配置常数对Bn进行配置,得到内容配置后的可重配池化计算子模块B;所述内容配置后的可重配池化计算子模块B,用于对卷积模块的卷积运算结果进行池化运算;
所述全连接模块,包括全连接卷积控制子模块、全连接加法控制子模块、由与卷积核kernelb数量I相同的可重配全连接卷积计算子模块C,C={Ci,I≥2}和由J个待配置全连接加法计算的LUT逻辑单元组成的可重配全连接加法计算子模块D,D={Dj,J≥2};所述全连接卷积控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U3,并根据地址计数器产生的Ci的帧地址信号,通过从权重数据转换模块中按照全连接卷积配置数据Y计算的顺序依次读取ROM2中Ci对应kernelb的全连接卷积配置数据对Ci进行配置,得到内容配置后的可重配全连接卷积计算子模块C;所述内容配置后的可重配全连接卷积计算子模块C,用于对池化模块的池化结果进行卷积运算;所述全连接加法控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U4,并根据地址计数器产生的Dj的帧地址信号,通过加法计算配置常数对Dj进行配置,得到内容配置后的可重配全连接加法计算子模块D;所述内容配置后的可重配全连接加法计算子模块D,用于对内容配置后的C的卷积运算结果进行加法运算;
所述结果处理模块,用于当控制模块提供的专用控制时钟信号为上升沿,且复位信号为高电平时,通过调用FPGA支持的DSP硬核和或Floating-point IP核,对全连接模块的运算结果进行回归或分类处理;
所述结果缓存模块,用于通过FPGA上的嵌入式块BRAM,对结果处理模块所输出的回归或分类处理结果进行缓存;
所述控制模块,用于调用FPGA支持的IP核,通过向权重数据转换模块、卷积模块、池化模块、全连接模块、结果处理模块提供所需的控制信号,实现对这些模块工作过程的控制。
上述的基于FPGA的二值化神经网络的加速系统,所述配置数据缓存模块,其计算kernela的卷积配置数据X和kernelb的全连接卷积配置数据Y的计算公式分别为:
X=[X0,X1,…,Xe,…Xp-1],
Y=[Y0,Y1,…,Yu,…Yq-1],
其中,P表示卷积配置数据的位宽,且P=2a,Xe表示第e位卷积配置数据,R表示数值从0到p-1的二进制数据集合,S表示kernela的权重数据,q表示全连接卷积配置数据的位宽,且q=2b,Yu表示第u位全连接卷积配置数据,Z表示数值从0到q-1的二进制数据集合,W表示kernelb的权重数据。
上述的基于FPGA的二值化神经网络的加速系统,所述可重配卷积计算子模块A所包含的待配置卷积计算的LUT逻辑单元的数量M,可重配池化计算子模块B所包含的待配置卷积计算的LUT逻辑单元的数量N,可重配全连接卷积计算子模块C所包含的待配置卷积计算的LUT逻辑单元的数量I,可重配全连接加法计算子模块D所包含的待配置卷积计算的LUT逻辑单元的数量J,M、N、I、J需要满足以下约束关系:
M+N+I+J<H
其中,H表示FPGA具有的LUT逻辑单元的资源总数。
上述的基于FPGA的二值化神经网络的加速系统,其特征在于,所述控制模块,其所调用的FPGA支持的IP核,采用ARM处理器硬核或XILINX的MicroBlaze软核。
本发明与现有技术相比,具有如下优点:
第一,本发明在现有技术的基础上增加了配置数据缓存模块与权重数据转换模块,通过采用预先计算且缓存配置数据、存储器间关联读取与动态可重配置相结合的技术方法,使得内容配置后的构成可重配卷积计算子模块与全连接层模块中可重配全连接卷积计算子模块的LUT逻辑单元具备卷积计算功能,实现将每一次对输入特征数据的卷积运算过程转化为位逻辑运算过程,解决了现有技术中存在的卷积运算的关键计算路径长导致的计算速度易受到串行计算限制的技术问题,充分发挥了FPGA动态可重配置的优势,有效提高了卷积模块的可重配卷积计算子模块与全连接层模块中可重配全连接卷积计算子模块的计算速度。
第二,本发明二值化神经网络的卷积层和全连接层均采用非对称卷积核,将原本一个尺寸为a×a的对称卷积核卷积运算通过2个尺寸均为a的非对称卷积核进行等价运算,减少了卷积运算的计算次数,降低卷积运算的计算开销,从而降低了二值化卷积神经网络的加速系统的整体资源占用与功耗。
附图说明
图1为本发明的整体结构示意图;
图2(a)、(b)分别为本发明实施例采用的LUT逻辑单元的配置方式图;
图3为本发明实施例中对输入特征数据按行展开的非对称卷积运算示意图;
图4为本发明实施例中对输入特征数据按列展开的非对称卷积运算示意图;
图5为本发明实施例中非对称卷积运算的内容配置完成的LUT逻辑单元结构示意图。
具体实施方式
以下结合附图和具体实施例子,对本发明作进一步详细描述。
参照图1,本发明包含通过FPGA实现的权重数据缓存模块、输入特征数据缓存模块、配置数据缓存模块、权重数据转换模块、卷积模块、池化模块、全连接模块、结果处理模块、结果缓存模块和控制模块,其中:
权重数据缓存模块,用于通过FPGA上的存储器DDR,对二值化神经网络的卷积层权重数据和全连接层权重数据进行缓存;
输入特征数据缓存模块,用于通过FPGA上的存储器DDR,对二值化神经网络的输入特征数据进行缓存;
本实施例中,二值化神经网络的卷积层权重数据、全连接层权重数据、输入特征数据均为二进制0、1数据流,其中,输入特征数据为图像特征数据;
配置数据缓存模块,用于根据二值化神经网络卷积层包含的M个尺寸为a的非对称卷积核kernela按行计算优先或列计算优先的卷积展开顺序计算kernela的卷积配置数据X,根据二值化神经网络全连接层包含的I个尺寸为b的非对称卷积核kernelb按行计算优先或列计算优先的卷积展开顺序计算kernelb的全连接卷积配置数据Y,并按照卷积配置数据X计算的顺序与按照全连接卷积配置数据Y计算的顺序,以kernela的卷积层权重数据和kernelb的全连接层权重数据为缓存地址,通过FPGA上的片内存储器ROM1与ROM2分别对kernela的卷积配置数据和kernelb的全连接卷积配置数据进行缓存;
本实施例中,二值化神经网络的卷积层采用尺寸为a的非对称卷积核kernela和全连接层均采用尺寸为b的非对称卷积核kernelb,其中,a、b取值范围为3,5,7,9,11,本实施例中,卷积层非对称卷积核kernela的尺寸a与全连接层非对称卷积核kernelb的尺寸b均为5;当卷积模块的输入数据大小为α×α×ω,填充为ρ,步长为λ时,其中,α×α表示单通道输入特征数据大小,ω为通道数,若卷积核采用5×5对称卷积核,则卷积模块计算总次数为若卷积核采用2个尺寸均为5的非对称卷积核,则卷积模块计算总次数为/>由上述公式计算结果对比可知,采用非对称卷积核替代对称卷积核进行卷积计算时,减少了卷积运算的计算次数,降低卷积运算的计算开销,从而降低了二值化卷积神经网络的加速系统的整体资源占用与功耗。
配置数据缓存模块,其计算kernela的卷积配置数据X和kernelb的全连接卷积配置数据Y的计算公式分别为:
X=[X0,X1,…,Xe,…Xp-1],
Y=[Y0,Y1,…,Yu,…Yq-1],
其中,P表示卷积配置数据的位宽,且P=2a,Xe表示第e位卷积配置数据,R表示数值从0到p-1的二进制数据集合,S表示kernela的权重数据,q表示全连接卷积配置数据的位宽,且q=2b,Yu表示第u位全连接卷积配置数据,Z表示数值从0到q-1的二进制数据集合,W表示kernelb的权重数据;
本实施例中,一个尺寸为5、对应的卷积层权重数据为5′b01101的非对称卷积核kernela,则根据上述卷积配置数据X的计算公式,计算得到kernela的卷积配置数据为32′b10110010_00100000_11111011_10110010;
本实施例中,非对称卷积核kernela,则根据上述卷积配置数据X的计算公式,计算得到kernela的卷积配置数据X最多有25种,可保存在FPGA上的位宽为32bit、深度为32的片内存储器ROM1中;
本实施例中,非对称卷积核kernelb采用与kernela相同的尺寸,则根据上述全连接卷积配置数据Y的计算公式,计算得到kernelb的全连接卷积配置数据Y同样最多有25种,可保存在FPGA上的位宽为32bit、深度为32的片内存储器ROM2中;
权重数据转换模块,用于当控制模块提供的专用控制时钟信号为上升沿,且复位号为高电平时,按照kernela的尺寸a和kernelb的尺寸b,分别依次读取存储器DDR中缓存的kernela的卷积层权重数据和kernelb的全连接层权重数据,并将所读取权重数据分别作为访问片内存储器ROM1与ROM2的地址信号,依次读取片内存储器ROM1中缓存的kernela的卷积配置数据和ROM2中缓存的kernelb的全连接卷积配置数据;
本实施例中,权重数据转换模块通过FPGA上的AXI_HP接口,以DMA的方式对DDR存储器分别与片内存储器ROM1和ROM2进行关联读取;
卷积模块包括卷积运算控制子模块和由与卷积核kernela数量M相同的待配置卷积计算的LUT逻辑单元组成的可重配卷积计算子模块A,A={Am,M≥2};所述卷积运算控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U1,并根据地址计数器产生的Am的帧地址信号,通过从权重数据转换模块中按照卷积配置数据X计算的顺序依次读取ROM1中Am对应kernela的卷积配置数据对Am进行配置,得到内容配置后的可重配卷积计算子模块A;所述内容配置后的可重配卷积计算子模块A,用于对从FPGA上的存储器DDR读取的输入特征数据进行卷积运算;
LUT逻辑单元的配置方式如图2(a)所示,其允许被配置为1个6位数据输入Data[6:1]、1位数据输出O6的LUT6逻辑单元;另一种配置方式如图2(b)所示,其允许被配置为2个5位相同数据输入Data[5:1]逻辑单元LUT5a与逻辑单元LUT5b,逻辑单元LUT5a的存储内容与LUT5b的存储内容可以为相同或不同,取决于对它的配置数据;O5与O6为独立输出,O5始终输出逻辑单元LUT5b的值,Data[6]为独立数据输出O6的使能信号,当置位为1′b1时数据输出O6为高位输出,输出逻辑单元LUT5a的值,当置位为1′b0时数据输出O6为低位输出,输出逻辑单元LUT5b的值;常用的LUT逻辑单元还有LUT1、LUT2、LUT3及LUT4,其区别在于LUT的输入数据宽度不同,所存储的初始值均为0;
FPGA支持的AXI_HWICAP IP核可配置的LUT逻辑单元的配置数据位宽分别为8bit、16bit或32bit;本实施例中,卷积层运算的非对称卷积核kernela的尺寸为5,对应FPGA支持的AXI_HWICAP IP核U1采用的配置数据位宽为32bit;
卷积模块中,为方便解释,假设输入特征图大小5×5×1,不考虑填充ρ,步长为λ=1,卷积层运算的非对称卷积核kernela有2种,尺寸均为5,权重数据分别为5'bs1s2s3s4s5的行卷积核kernela1与5'bs6s7s8s9s10的列卷积核kernela2,对应的采用LUT5单元实现,对输入特征数据的非对称卷积运算展开方式由预先缓存DDR中的输入特征数据与卷积层权重数据共同确定,对需要配置的行卷积核kernela1与列卷积核kernela2的LUT5单元的数量M由卷积层权重数据确定;
参照图3,如果预先在DDR中缓存的输入特征数据为25'bh11h12h13h14h15_h21h22h23h24h25_h31h32h33h34h35_h41h42h43h44h45_h51h52h53h54h55,预先存储在DDR中缓存的卷积层权重数据组成为30'bs1s2s3s4s5_s1s2s3s4s5_s1s2s3s4s5_s1s2s3s4s5_s1s2s3s4s5_s6s7s8s9s10,则由输入特征数据与卷积层权重数据可知,是对输入特征数据采用按行展开的非对称卷积运算;由卷积层权重数据可知,此时需要配置的行卷积核kernela1的LUT5逻辑单元数量为5个,需要配置的列卷积核kernela2的LUT5逻辑单元数量为1个,需要配置的Am对应kernela的LUT5单元的数量M为6个,其配置完成的LUT5逻辑资源先按行对DDR中缓存的输入特征数据进行卷积计算,对按行计算5'bxh1xh2xh3xh4xh5再进行一次列运算,得到对输入特征数据的卷积计算结果X1;
参照图4,如果预先在DDR中缓存的输入特征数据为25'bL11L12L13L14L15_L21L22L23L24L25_L31L32L33L34L35_L41L42L43L44L45_L51L52L53L54L55,预先存储在DDR中缓存的卷积层权重数据组成为30'bs6s7s8s9s10_s6s7s8s9s10_s6s7s8s9s10_s6s7s8s9s10_s6s7s8s9s10_s1s2s3s4s5,则由输入特征数据与卷积层权重数据可知,是对输入特征数据采用按列展开的非对称卷积运算;由卷积层权重数据可知,需要配置的列卷积核kernela2的LUT5逻辑单元数量为5个,需要配置的行卷积核kernela1的LUT5逻辑单元数量为1个,需要配置的Am对应kernela的LUT5单元的数量M为6个,其配置完成的LUT5逻辑资源先按列对DDR中缓存的输入特征数据进行卷积计算,对按列计算5'bxL1xL2xL3xL4xL5再进行一次行运算,得到对输入特征数据的卷积计算结果X1;
参照图5,由于卷积层运算的非对称卷积核kernela中参与运算的行卷积核kernela1与列卷积核kernela2尺寸相同,区别只在于对应的权值数据不同,因此,无论是对输入特征数据按行计算优先或列计算优先的非对称卷积运算,只要卷积层运算的非对称卷积核kernela的尺寸确定,其用于完成上述不同展开方式非对称卷积运算的内容配置完成的LUT5逻辑单元具有相同且固定的阵列结构;
本实施例中,卷积模块的地址计数器通过PC计数的方式计算待配置LUT逻辑单元的帧地址信号;PC计数的初始值为0,当控制模块提供的控制时钟信号上升沿到来时,PC开始计数,数值累加一次,对应生成Am的帧地址信号增加一帧;
本实施例中,若对当前的地址计数器的PC计数数值对6进行取余,表明已配置的6个Am作为一组固定的LUT逻辑单元阵列结构,已配置的第1到第5个LUT逻辑单元的1bit数据输出将组合作为已配置的第6个LUT逻辑单元的5bit数据输入,第6个LUT逻辑单元的1bit数据输出作为整个LUT逻辑单元阵列结构的输出;通过PC计数数值对应的帧地址信号可以在配置过程中唯一确定阵列结构中每个LUT逻辑单元的输入输出端口的连接关系;
池化模块包括池化运算控制子模块和由N个待配置池化计算的LUT逻辑单元组成的可重配池化计算子模块B,B={Bn,N≥2};所述池化运算控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U2,并根据地址计数器产生的Bn的帧地址信号,通过池化计算配置常数对Bn进行配置,得到内容配置后的可重配池化计算子模块B;所述内容配置后的可重配池化计算子模块B,用于对卷积模块的卷积运算结果进行池化运算;
池化模块中,池化运算可以采用最大池化或平均池化;本实例中采用最大池化,池化计算单元大小为2×2,池化步长μ=2,按照最大池化计算原则,其池化计算配置常数为16′b11111111_111111110,B需要配置的池化计算的LUT4逻辑单元Bn的数量N由卷积模块的卷积运算结果与池化步长μ共同确定;
本实施例中,池化运算采用最大池化,池化计算单元大小为2×2,为充分利用LUT逻辑单元的输入数据位宽,采用LUT4逻辑单元实现,对应FPGA支持的AXI_HWICAP IP核U2采用的配置数据位宽为16bit;
全连接模块包括全连接卷积控制子模块、全连接加法控制子模块、由与卷积核kernelb数量I相同的可重配全连接卷积计算子模块C,C={Ci,I≥2}和由J个待配置全连接加法计算的LUT逻辑单元组成的可重配全连接加法计算子模块D,D={Dj,J≥2};所述全连接卷积控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U3,并根据地址计数器产生的Ci的帧地址信号,通过从权重数据转换模块中按照全连接卷积配置数据Y计算的顺序依次读取ROM2中Ci对应kernelb的全连接卷积配置数据对Ci进行配置,得到内容配置后的可重配全连接卷积计算子模块C;所述内容配置后的可重配全连接卷积计算子模块C,用于对池化模块的池化结果进行卷积运算;所述全连接加法控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U4,并根据地址计数器产生的Dj的帧地址信号,通过加法计算配置常数对Dj进行配置,得到内容配置后的可重配全连接加法计算子模块D;所述内容配置后的可重配全连接加法计算子模块D,用于对内容配置后的C的卷积运算结果进行加法运算;
本实施例中,C需要配置的卷积计算对应kernelb的LUT5逻辑单元Ci的数量I由预先缓存在DDR中的全连接层权重数据确定;全连接卷积计算C需要配置对应kernelb的LUT5逻辑单元,对应FPGA支持的AXI_HWICAP IP核U3采用的配置数据位宽为32bit;
本实施例中,D中的加法运算是指对5位二进制输入数据求和,按照二进制加法计算原则,其加法计算配置常数为32′b11111110_11101000_11101000_10000000,D需要配置的加法计算的LUT5逻辑单元Dj的数量J由C的卷积运算结果确定,对应FPGA支持的AXI_HWICAP IP核U4采用的配置数据位宽为32bit;;
可重配卷积计算子模块A所包含的待配置卷积计算的LUT逻辑单元的数量M,可重配池化计算子模块B所包含的待配置卷积计算的LUT逻辑单元的数量N,可重配全连接卷积计算子模块C所包含的待配置卷积计算的LUT逻辑单元的数量I,可重配全连接加法计算子模块D所包含的待配置卷积计算的LUT逻辑单元的数量J,M、N、I、J需要满足以下约束关系:
M+N+I+J<H
其中,H表示FPGA具有的LUT逻辑单元的资源总数;
不同的FPGA具有的LUT逻辑单元的资源总数不同,本实施例中,采用XILINX公司的Zynq7000系列、名称为AX7010的FPGA,其片上集成的LUT逻辑单元的资源总数H为53200;
结果处理模块,用于当控制模块提供的专用控制时钟信号为上升沿,且复位信号为高电平时,通过调用FPGA支持的DSP硬核和或Floating-point IP核,对全连接模块的运算结果进行回归或分类处理;
本实施例中,基于FPGA的二值化神经网络的加速系统主要用于嵌入式环境下对图像进行目标检测,通过调用FPGA支持的Floating-point IP核,且将IP核的Operationselection和Add/Subtract and FMA Operator options选项分别配置为exponential和Both,用以实现对全连接模块的运算结果进行softmax分类处理;
结果缓存模块,用于通过FPGA上的嵌入式块BRAM,对结果处理模块所输出的回归或分类处理结果进行缓存;
控制模块,用于调用FPGA支持的IP核,通过向权重数据转换模块、卷积模块、池化模块、全连接模块、结果处理模块提供所需的控制信号,实现对这些模块工作过程的控制;
控制模块所调用的FPGA支持的IP核,采用ARM处理器硬核或XILINX的MicroBlaze软核。
本实施例中控制模块采用的名称为ZYNQ7 Processing System的IP核与Processor System Reset的IP核,分别向权重数据转换模块、卷积模块、池化模块、全连接模块、结果处理模块提供所需的时钟控制信号与复位信号。
Claims (3)
1.一种基于FPGA的二值化神经网络的加速系统,其特征在于,包含通过FPGA实现的权重数据缓存模块、输入特征数据缓存模块、配置数据缓存模块、权重数据转换模块、卷积模块、池化模块、全连接模块、结果处理模块、结果缓存模块和控制模块,其中:
所述权重数据缓存模块,用于通过FPGA上的存储器DDR,对二值化神经网络的卷积层权重数据和全连接层权重数据进行缓存;
所述输入特征数据缓存模块,用于通过FPGA上的存储器DDR,对二值化神经网络的输入特征数据进行缓存;
所述配置数据缓存模块,用于根据二值化神经网络卷积层包含的M个尺寸为a的非对称卷积核ker nela按行计算优先或列计算优先的卷积展开顺序计算ker nela的卷积配置数据X,根据二值化神经网络全连接层包含的I个尺寸为b的非对称卷积核ker nelb按行计算优先或列计算优先的卷积展开顺序计算ker nelb的全连接卷积配置数据Y,并按照卷积配置数据X计算的顺序与按照全连接卷积配置数据Y计算的顺序,以ker nela的卷积层权重数据和ker nelb的全连接层权重数据为缓存地址,通过FPGA上的片内存储器ROM1与ROM2分别对ker nela的卷积配置数据和ker nelb的全连接卷积配置数据进行缓存;其中,计算kernela的卷积配置数据X和ker nelb的全连接卷积配置数据Y的计算公式分别为:
X=[X0,X1,…,Xe,…Xp-1],
Y=[Y0,Y1,…,Yu,…Yq-1],
其中,P表示卷积配置数据的位宽,且P=2a,Xe表示第e位卷积配置数据,R表示数值从0到p-1的二进制数据集合,S表示ker nela的权重数据,q表示全连接卷积配置数据的位宽,且q=2b,Yu表示第u位全连接卷积配置数据,Z表示数值从0到q-1的二进制数据集合,W表示ker nelb的权重数据;
所述权重数据转换模块,用于当控制模块提供的专用控制时钟信号为上升沿,且复位号为高电平时,按照ker nela的尺寸a和ker nelb的尺寸b,分别依次读取存储器DDR中缓存的ker nela的卷积层权重数据和ker nelb的全连接层权重数据,并将所读取权重数据分别作为访问片内存储器ROM1与ROM2的地址信号,依次读取片内存储器ROM1中缓存的ker nela的卷积配置数据和ROM2中缓存的ker nelb的全连接卷积配置数据;
所述卷积模块,包括卷积运算控制子模块和由与卷积核ker nela数量M相同的待配置卷积计算的LUT逻辑单元组成的可重配卷积计算子模块A,A={Am,M≥2};所述卷积运算控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U1,并根据地址计数器产生的Am的帧地址信号,通过从权重数据转换模块中按照卷积配置数据X计算的顺序依次读取ROM1中Am对应ker nela的卷积配置数据对Am进行配置,得到内容配置后的可重配卷积计算子模块A;所述内容配置后的可重配卷积计算子模块A,用于对从FPGA上的存储器DDR读取的输入特征数据进行卷积运算;
所述池化模块,包括池化运算控制子模块和由N个待配置池化计算的LUT逻辑单元组成的可重配池化计算子模块B,B={Bn,N≥2};所述池化运算控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U2,并根据地址计数器产生的Bn的帧地址信号,通过池化计算配置常数对Bn进行配置,得到内容配置后的可重配池化计算子模块B;所述内容配置后的可重配池化计算子模块B,用于对卷积模块的卷积运算结果进行池化运算;
所述全连接模块,包括全连接卷积控制子模块、全连接加法控制子模块、由与卷积核ker nelb数量I相同的可重配全连接卷积计算子模块C,C={Ci,I≥2}和由J个待配置全连接加法计算的LUT逻辑单元组成的可重配全连接加法计算子模块D,D={Dj,J≥2};所述全连接卷积控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U3,并根据地址计数器产生的Ci的帧地址信号,通过从权重数据转换模块中按照全连接卷积配置数据Y计算的顺序依次读取ROM2中Ci对应kernelb的全连接卷积配置数据对Ci进行配置,得到内容配置后的可重配全连接卷积计算子模块C;所述内容配置后的可重配全连接卷积计算子模块C,用于对池化模块的池化结果进行卷积运算;所述全连接加法控制子模块,用于当控制模块提供的控制时钟信号为上升沿,且复位信号为高电平时,调用FPGA支持的AXI_HWICAP IP核U4,并根据地址计数器产生的Dj的帧地址信号,通过加法计算配置常数对Dj进行配置,得到内容配置后的可重配全连接加法计算子模块D;所述内容配置后的可重配全连接加法计算子模块D,用于对内容配置后的C的卷积运算结果进行加法运算;
所述结果处理模块,用于当控制模块提供的专用控制时钟信号为上升沿,且复位信号为高电平时,通过调用FPGA支持的DSP硬核和或Floating-point IP核,对全连接模块的运算结果进行回归或分类处理;
所述结果缓存模块,用于通过FPGA上的嵌入式块BRAM,对结果处理模块所输出的回归或分类处理结果进行缓存;
所述控制模块,用于调用FPGA支持的IP核,通过向权重数据转换模块、卷积模块、池化模块、全连接模块、结果处理模块提供所需的控制信号,实现对这些模块工作过程的控制。
2.根据权利要求1所述的基于FPGA的二值化神经网络的加速系统,其特征在于,所述可重配卷积计算子模块A所包含的待配置卷积计算的LUT逻辑单元的数量M,可重配池化计算子模块B所包含的待配置卷积计算的LUT逻辑单元的数量N,可重配全连接卷积计算子模块C所包含的待配置卷积计算的LUT逻辑单元的数量I,可重配全连接加法计算子模块D所包含的待配置卷积计算的LUT逻辑单元的数量J,M、N、I、J需要满足以下约束关系:
M+N+I+J<H
其中,H表示FPGA具有的LUT逻辑单元的资源总数。
3.根据权利要求1所述的基于FPGA的二值化神经网络的加速系统,其特征在于,所述控制模块,其所调用的FPGA支持的IP核,采用ARM处理器硬核或XILINX的MicroBlaze软核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010793337.8A CN111931925B (zh) | 2020-08-10 | 2020-08-10 | 基于fpga的二值化神经网络的加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010793337.8A CN111931925B (zh) | 2020-08-10 | 2020-08-10 | 基于fpga的二值化神经网络的加速系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111931925A CN111931925A (zh) | 2020-11-13 |
CN111931925B true CN111931925B (zh) | 2024-02-09 |
Family
ID=73306544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010793337.8A Active CN111931925B (zh) | 2020-08-10 | 2020-08-10 | 基于fpga的二值化神经网络的加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931925B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112819684B (zh) * | 2021-03-02 | 2022-07-26 | 成都视海芯图微电子有限公司 | 一种面向图像文本识别的加速装置 |
CN113010469B (zh) * | 2021-03-18 | 2023-05-26 | 恒睿(重庆)人工智能技术研究院有限公司 | 图像特征提取方法、装置以及计算机可读存储介质 |
CN114662660A (zh) * | 2022-03-14 | 2022-06-24 | 昆山市工业技术研究院有限责任公司 | 一种cnn加速器数据存取方法及系统 |
CN114897159B (zh) * | 2022-05-18 | 2023-05-12 | 电子科技大学 | 一种基于神经网络的快速推断电磁信号入射角的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
EP3346426A1 (en) * | 2017-01-04 | 2018-07-11 | STMicroelectronics Srl | Reconfigurable interconnect, corresponding system and method |
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
WO2019127838A1 (zh) * | 2017-12-29 | 2019-07-04 | 国民技术股份有限公司 | 卷积神经网络实现方法及装置、终端、存储介质 |
CN110097174A (zh) * | 2019-04-22 | 2019-08-06 | 西安交通大学 | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 |
CN110458279A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种基于fpga的二值神经网络加速方法及系统 |
-
2020
- 2020-08-10 CN CN202010793337.8A patent/CN111931925B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3346426A1 (en) * | 2017-01-04 | 2018-07-11 | STMicroelectronics Srl | Reconfigurable interconnect, corresponding system and method |
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
WO2019127838A1 (zh) * | 2017-12-29 | 2019-07-04 | 国民技术股份有限公司 | 卷积神经网络实现方法及装置、终端、存储介质 |
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
CN110097174A (zh) * | 2019-04-22 | 2019-08-06 | 西安交通大学 | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 |
CN110458279A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种基于fpga的二值神经网络加速方法及系统 |
Non-Patent Citations (1)
Title |
---|
杨一晨 ; 梁峰 ; 张国和 ; 何平 ; 吴斌 ; 高震霆 ; .一种基于可编程逻辑器件的卷积神经网络协处理器设计.西安交通大学学报.2018,(第07期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111931925A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111931925B (zh) | 基于fpga的二值化神经网络的加速系统 | |
CN108133270B (zh) | 卷积神经网络加速方法及装置 | |
WO2018196863A1 (zh) | 卷积加速和计算处理方法、装置、电子设备及存储介质 | |
US20180294950A1 (en) | Homomorphic Processing Unit (HPU) for Accelerating Secure Computations under Homomorphic Encryption | |
CN108665063B (zh) | 用于bnn硬件加速器的双向并行处理卷积加速系统 | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN107256424B (zh) | 三值权重卷积网络处理系统及方法 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
JP2020112901A (ja) | 推論処理装置および推論処理方法 | |
US11455781B2 (en) | Data reading/writing method and system in 3D image processing, storage medium and terminal | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN110598844A (zh) | 一种基于fpga的并行卷积神经网络加速器及加速方法 | |
CN111507465A (zh) | 一种可配置的卷积神经网络处理器电路 | |
KR20240035999A (ko) | 뉴럴 프로세싱 유닛 및 컴퓨트-인-메모리 프로세싱 엘리먼트들을 사용한 하이브리드 머신 러닝 아키텍처 | |
CN115394336A (zh) | 一种存算fpga架构 | |
CN111610963B (zh) | 芯片结构及其乘加计算引擎 | |
CN116167425B (zh) | 一种神经网络加速方法、装置、设备及介质 | |
CN112559954A (zh) | 基于软件定义可重构处理器的fft算法处理方法及装置 | |
CN115879530B (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 | |
CN112508174B (zh) | 面向权重二值型神经网络的预计算逐列卷积计算单元 | |
CN111191780B (zh) | 均值池化累加电路、装置以及方法 | |
KR20240036594A (ko) | 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 | |
Huang et al. | A low-bit quantized and hls-based neural network fpga accelerator for object detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |