CN111488983B - 一种基于fpga的轻量级cnn模型计算加速器 - Google Patents
一种基于fpga的轻量级cnn模型计算加速器 Download PDFInfo
- Publication number
- CN111488983B CN111488983B CN202010214304.3A CN202010214304A CN111488983B CN 111488983 B CN111488983 B CN 111488983B CN 202010214304 A CN202010214304 A CN 202010214304A CN 111488983 B CN111488983 B CN 111488983B
- Authority
- CN
- China
- Prior art keywords
- data
- layer
- convolution
- unit
- input
- 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
- 238000012821 model calculation Methods 0.000 title abstract description 5
- 239000000872 buffer Substances 0.000 claims abstract description 78
- 238000013461 design Methods 0.000 claims abstract description 31
- 238000010606 normalization Methods 0.000 claims abstract description 30
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 25
- 238000011176 pooling Methods 0.000 claims abstract description 22
- 238000013528 artificial neural network Methods 0.000 claims abstract description 11
- 230000001133 acceleration Effects 0.000 claims abstract description 10
- 230000004913 activation Effects 0.000 claims description 37
- 230000006870 function Effects 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 21
- 238000010586 diagram Methods 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 10
- 230000004927 fusion Effects 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 238000013519 translation Methods 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 claims description 2
- 125000004122 cyclic group Chemical group 0.000 claims 2
- 238000004422 calculation algorithm Methods 0.000 abstract description 6
- 238000004364 calculation method Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Abstract
一种基于FPGA的轻量级CNN模型计算加速器,涉及硬件加速技术领域,针对现有技术中的加速器存在运行速度慢的问题,包括:权值缓存区、归一化层、卷积层、池化层、全连接层和Softmax分类器;本发明利用FPGA的快速并行计算和低功耗、灵活性强的特点,进行了针对使用深度可分离卷积结构的轻量级网络的CNN加速器设计,可以帮助将神经网络部署在资源受限的使用场合,大幅提升算法的计算效率,加快了算法的运算速度。
Description
技术领域
本发明涉及硬件加速技术领域,具体为一种基于FPGA的轻量级CNN模型计算加速器。
背景技术
卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一,目前被广泛应用于图像识别、语言识别等领域,取得了显著的成果。但是在CNN检测准确度越来越高的同时,其深度、尺寸和相应的计算复杂度也在成倍增加。目前主流的神经网络模型的尺寸往往在几十到几百兆字节(Mbyte,即MB),需要存储几百万乃至上亿的参数,进行几亿乃至上百亿次的乘加运算。如此大尺寸的网络对底层的硬件提出了存储和运算速度的挑战,难以移植到资源受限的移动端或嵌入式芯片中进行实时推理计算。为此,人们提出了许多种新型的卷积运算,比如分组卷积(Group convolution)、空洞卷积(Dilated convolution)和深度可分离卷积(Depthwise separable convolution)等等。在这其中,深度可分离卷积可以显著降低卷积运算过程中的参数量和计算复杂度,越来越来受到人们青睐。基于深度可分离卷积结构形成了以MobileNet系列为代表的新型轻量级神经网络,更加适合于部署在资源受限的嵌入式平台。但是这些神经网络仍有着庞大的计算需求和存储要求,如果直接在串行处理的CPU上进行训练推理,其实现效率依旧会非常低,无法满足很多实时应用的需求。在此前提下,为了加快运算速度和降低功耗,需要设计专用处理器进行硬件加速,对网络模型的各个部分进行优化加速。
目前常用于硬件加速器设计的专用处理器平台有三种:GPU、ASIC和FPGA,而这其中,FPGA有着高性能、低功耗、可重配置等特点,非常适用于流式的计算密集型任务。FPGA是一种可自定义的半定制电路,具有强大的并行计算能力,非常契合CNN的计算特点,可以充分利用算法网络内部的并行性,实现数据流水线并行;灵活的设计方法也适合于神经网络多变的网络结构,可以为不同的结构设计实现完全优化的电路;除此之外,它还具有较低的功耗。
综上所述,计算密集型的CNN模型尺寸大、储存参数多、运算复杂度高,在移动端或嵌入式平台难以直接部署。而基于深度可分离卷积结构的轻量级网络虽然大幅降低了模型尺寸和计算复杂度,但是它使用的深度可分离卷积结构与普通卷积结构有很大不同,目前还没有针对此结构的专用加速器设计,直接部署在嵌入式平台上,其运行速度和功耗也难以满足实际任务的需求。
发明内容
本发明的目的是:针对现有技术中的加速器存在运行速度慢的问题,提出一种基于FPGA的轻量级CNN模型计算加速器。
本发明为了解决上述技术问题采取的技术方案是:
一种基于FPGA的轻量级CNN模型计算加速器,包括:权值缓存区、归一化层、卷积层、池化层、全连接层和Softmax分类器;
所述权值缓存区用于缓存卷积运算过程中的权值参数;
所述归一化层用于对特征图数据进行归一化处理;
所述卷积层用于对归一化后的数据和权值缓存区的权值参数数据进行卷积操作;
所述池化层用于对卷积后的数据进行平均池化;
所述全连接层和Softmax分类器用于对池化后的数据进行分类;
所述卷积层包括输入行缓冲区、PE单元、BN单元和激活函数单元,
所述输入行缓冲区用于存储从输入FIFO通道读取的数据,然后将数据传递到PE单元;
所述PE单元用于对数据进行乘累加操作,然后发送给BN单元;
所述BN单元用于对数据进行批量归一化处理,然后将数据传给激活函数单元;
所述激活函数单元用于对数据进行线性整流函数处理并将结果通过输出FIFO通道输出。
进一步的,所述卷积层采用层融合策略,所述层融合策略将卷积神经网络中的BN层和激活函数层作为独立的功能单元合并到统一的卷积层中,每当卷积层的PE单元计算出一个输出结果后,数据通过BN单元和激活单元进行相应的批量化归一化处理和激活处理,之后再将数据存储到存储器。
进一步的,所述PE单元包括乘法单元和加法单元,所述乘法单元用于从输入行缓冲区和权值参数缓存区分别读取参数进行相乘,所述加法单元用于将相乘之后的结果进行累加然后传给BN单元。
进一步的,所述BN单元批量归一化处理的公式为:
ybn=A[x]*yconv+B[x]
所述激活函数单元的激活函数为Relu函数,函数表达式为:f(x)=max(0,x)。
进一步的,所述卷积层设有流水策略单元,所述流水策略单元将卷积层内不同循环层次操作进行交叠,形成高效的循环流水线,并根据数组分块指令对行缓冲区的数据进行分块。
进一步的,所述卷积层为标准卷积、深度卷积或逐点卷积。
进一步的,所述加速器还包括数据流区域模块,所述数据流区域模块用于将卷积层、池化层和归一化层连接在一起,并使数据以数据流的形式通过。
本发明的有益效果是:
本发明利用FPGA的快速并行计算和低功耗、灵活性强的特点,进行了针对使用深度可分离卷积结构的轻量级网络的CNN加速器设计,可以帮助将神经网络部署在资源受限的使用场合,大幅提升算法的计算效率,加快了算法的运算速度。
附图说明
图1为本发明的结构图;
图2为数据流区域模块的工作示意图;
图3为深度卷积计算加速功能结构图;
图4为逐点卷积计算加速功能结构图。
具体实施方式
具体实施方式一:参照图1具体说明本实施方式,本实施方式所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于包括:权值缓存区、归一化层、卷积层、池化层、全连接层和Softmax分类器。
本发明的一项特征在于,采用层融合策略,对神经网络模型中相邻的卷积操作,批归一化(Batch Norm,以下简称为BN)操作和激活操作进行融合与优化,将其作为独立的功能单元合并到统一的卷积层中。
本发明的另一项特征在于,对卷积层内的PE单元进行了加速设计。通过行缓冲区设计和层内流水策略两个步骤,保证数据以数据流的形式通过并且降低了单个卷积层的计算用时。
本发明的最后一项特征在于,进行了数据流区域的设计,将卷积层、池化层、归一化层连接在一起,数据会以数据流的形式通过该区域,实现不同层之间的流水计算。
本发明的技术原理包括:利用FPGA高性能、运算高度并行、功耗低和灵活性强等优点,进行CNN加速器设计,
包括:权值缓存区、归一化层、卷积层、池化层、全连接层和Softmax分类器;采用层融合策略,对网络模型中相邻的卷积操作,批归一化(Batch Norm,以下简称为BN)操作和激活操作进行融合与优化,将其作为独立的功能单元合并到统一的卷积层中(一般的神经网络是卷积层-BN层-激活函数层,原本的BN层和激活函数层不是在卷积层内部,而是和卷积层平行,因此层与层之间存在不必要的数据传输,本发明使用层融合之后把原本的三个层融合成一个新的卷积层,减少了数据传输);在卷积层内进行PE单元加速设计,通过行缓冲区设计和卷积层内流水策略,保证数据以数据流的形式通过并且降低了单个卷积层的计算用时;最后,设计了数据流区域,将优化后的卷积层、池化层、归一化层连接在一起,实现不同层之间的流水计算,减轻中间数据存储和运算过程中的资源消耗,加快网络运行的速度。
根据本发明的技术原理,本发明设计的CNN加速器各部分的功能和工作方式分别是:
权值缓存区利用片上缓存BRAM存储卷积运算过程中的权值参数。在本发明中,我们预先将网络中所有的权值数据都储存到片上缓存中。
归一化层负责对数据进行归一化,防止过拟合现象。
卷积层对输入特征图数据和权值缓存区的权值参数数据进行卷积操作。本发明中一共设计了两种卷积层,分别适用于卷积核尺寸大于1的卷积,如标准卷积(StandardConvolution)、深度卷积(Depthwise Convolution)以及卷积尺寸为1的逐点卷积(PointWise Convolution),其中的深度卷积和逐点卷积共同被称为深度可分离卷积。在实际应用中,可以灵活地根据网络种类的不同,选择调用不同的卷积层。这使得本发明可以用于加速使用深度可分离卷积结构的神经网络,提高了加速器设计的通用性。
卷积层的基本组成包括输入行缓冲区、PE(Processing Elements)单元、BN(BatchNorm)单元、激活函数单元。其中,输入行缓冲区的个数和深度由卷积核大小和输入特征图的尺寸决定,用于临时存储从输入FIFO通道读取的数据,然后将数据传递到PE单元。PE单元是卷积层的核心,负责卷积运算需要的乘累加操作,其中的乘法单元负责从输入行缓冲区和权值参数缓存区分别读取参数相乘,加法单元负责将相乘之后的结果累加起来,传给BN单元。在不同卷积操作下,PE单元的设计也有所不同。BN单元负责对数据进行批量归一化处理,然后将数据传给激活函数单元。激活函数单元则负责对数据进行线性整流函数处理,并将结果通过输出FIFO通道输出。
池化层负责对数据进行平均池化,减少特征图的尺寸但同时将图像数据的特征保存。归一化层和池化层都使用FIFO通道读取和存储数据。
全连接层和Softmax分类器负责对数据进行分类,最终可以输出神经网络检测的概率值。
根据工作原理,该卷积神经网络加速器的一项特征在于,采用了层融合策略,将网络中的BN操作和激活操作作为独立的功能单元合并到统一的卷积层中。以正常网络中的卷积和激活操作为例,网络需要从卷积层读取输出值,应用激活函数,然后将结果写回存储器中,这个过程中有两次读取和两次写入存储器的传输步骤。如果在卷积层计算出一个结果之后直接应用激活函数,再输出最终的结果,将节省一部分传输步骤。因此,本发明在卷积层内设置了BN单元和激活单元,功能等同于正常网络中的BN操作和激活操作。每当卷积层的PE单元计算出一个输出结果后,数据不会被立刻存储到存储器,而是通过BN单元和激活单元进行进一步的处理,之后再进行数据的存储,从而节省层与层之间的传输步骤。同时考虑到有些卷积层的结果不需要批归一化和激活操作,我们将BN单元和激活单元都通过使能端设置成可配置的。下面具体介绍BN单元和激活单元的设置。
BN单元的计算公式如下:
式中,yconv是卷积层的输出结果,ybn是批归一化之后的输出结果,E(x)是此次批量数据的均值,Var(x)是数据的方差值,γ是缩放因子,β是平移因子,ε是接近0的极小值。这其中的E(x)、Var(x)、γ、β、ε都是确定值,因此可以将上述公式简化为:
ybn=A[x]*yconv+B[x]
激活单元选用的激活函数是常见的Relu函数,等同于f(x)=max(0,x)。
根据工作原理,该卷积神经网络加速器的另一项特征在于,对卷积层内的PE单元进行了加速设计,保证卷积层能够实现数据输入和输出的同步进行并且降低单个卷积层的计算用时。PE单元加速设计包括行缓冲区设计和层内流水策略两个步骤:
行缓冲区的设计是为了保证卷积层能够实现数据输入和输出的同步进行。它的个数和深度是由卷积核大小和输入特征图的尺寸决定的。假设卷积层的输入特征图块的尺寸是Col×Row×N。当卷积核的尺寸是K×K(K>1)时,行缓冲区的个数为K个且每个缓冲区都是NC×Row的二维数组。在工作的时,首先在前K-1个行缓冲区缓存输入特征图块中每个通道的前K-1行数据,然后当第K个缓冲区缓存到第1个通道的第K个数据的时候启动PE单元进行计算。假设某时刻输入的是第i个通道第m行第n列的数据(m>K,n>k),此时PE单元需要分别读取K个行缓冲区的第(n-k+1)列到第n列一共K*K个数据进行卷积运算。同时需要对行缓冲区第(n-k)列的数据进行更新,前K-1个行缓冲区依次存储下一个行缓冲区对应位置(第(n-k)列)的数据,第K个行缓冲区清空该位置的数据,等待新数据输入。以上设计保证了在PE单元计算的同时行缓冲区的数据也在同步更新,所有在缓冲区内的数据都是等待被PE单元调用的,最终实现数据输入和输出的同步进行。当卷积核尺寸是1×1时,卷积层内只需要一个深度为NC的行缓冲区。在工作时,每当缓冲区存满就启动PE单元进行运算,每个缓冲区的数据需要与全部卷积核运算一遍之后才更新行缓冲区内的数据。这样同样可以保证数据输入和输出的同步进行。行缓冲区的设计可以提高卷积运算中的数据复用,减少片上数据存储的带宽需求,尤其对于卷积核尺寸大于1的卷积层,行缓冲区是保证数据流区域正常工作必不可少的一环。
层内流水策略可以提高每个层内部数据并行处理的效率,加快卷积层的运算速度。我们利用Vivado设计套件高层次综合工具(HLS)的指令对各个层进行优化,实现层内流水设计。优化设计包括以下两步:
1.循环流水线设计:通过将不同循环层次操作执行交叠,形成高效的循环流水线,提高数据处理的并行度,加快处理速度,最终目的是保证PE单元启动之后每个时钟周期至少输出一个数据。对于卷积核尺寸是K*K(K>1)的卷积层,每次需要将K*K个数据的乘加运算并行计算;而对于卷积核尺寸是1*1的卷积层,需要每次将一个行缓冲区深度大小的数据集并行处理,即每次将NC个数据的乘加运算并行运算。
2.数据分块:为了保证数据能够正常读取,利用数组分块指令对行缓冲区的数据进行分块,消除循环流水线中的数据依赖现象。对于卷积核尺寸是K*K(K>1)的卷积层,需要将K个行缓冲区的第二个维度进行完全分块;而对于卷积核尺寸是1*1的卷积层,将行缓冲区直接完全分块即可。
根据工作原理,本发明的最后一项特征在于,进行了数据流区域的设计。数据流区域可以将卷积层、池化层、归一化层连接在一起,数据会以数据流的形式通过该区域。此过程中后面的层无需等待到前面的层处理完毕,只要有数据传递到自己,就可以对数据进行处理,并将结果发送到下一层。因此,整个区域的计算时间取决于耗时最长的层。
在数据流区域中,所有层特征图的输入和输出顺序都是按照通道-列-行,且所有层内都不存在数据阻塞,都能都实现数据的输入和输出的同步进行。数据流区域中层与层之间的通道是FIFO,每个层的输入和输出数据都是流式数据且被存储在FIFO通道中。流式数据会严格按照“先进先出”的方式进行存储和读取,且流式数据只能由单个进程写入并由单个进程写出。
如图1所示,为本发明设计的卷积神经网络优化加速器的硬件结构,以轻量级网络MobileNetV2为例,其工作方式如下:
在工作之前需要将权值参数预先存在FPGA的片上BRAM中,然后制定好每一层的参数,具体来说,对于归一化层需要设定好输入卷积层的尺寸大小;对于卷积层要设定好输入特征图尺寸大小、卷积核尺寸大小、卷积步长、补零的长度、是否有BN单元的状态指示位及相关参数和是否有激活单元的状态指示位;对于池化层需要设定好输入特征图尺寸大小、输出特征图尺寸大小;对于全连接层需要设定好输入特征图尺寸大小、卷积核尺寸大小、卷积步长、补零的长度。
开始工作时,存储在FPGA外部存储器的待测图像数据可以通过AXI4总线传输到网络中。此步需要保证数据是按照通道-列-行的顺序输入到网络中的。
网络中靠前的归一化层、卷积层和池化层被综合设计成一个数据流区域。在这个区域中,将层与层之间的通道设置为深度合适的FIFO通道,每个层输入和输出的数据格式都设置成流式数据,然后在顶层添加Vivado设计套件高层次综合工具(HLS)的数据流(DATAFLOW)指令。通过以上步骤,输入数据会按照数据流的形式依次通过数据流区域的各个层,并且在各个层内执行相应的操作,具体工作方式如图2所示。假设数据流区域中有n+1个层,则需要n个FIFO通道连接它们,又由于每层输入和输出的流式数据都被存储在FIFO通道中,因此我们需要定义n个流式数据数组,也就是图中的Stream_1到Stream_n。在工作的时候,下一层无需等到前面一层计算完毕,只要有数据被输入到FIFO通道中,下一层就可以读取该数据进行处理,并将结果一次发送到下一个FIFO通道中,这样数据依次通过各个层,不同层之间并行工作,最终得到输出结果。这其中,归一化层负责对数据进行归一化,池化层负责对数据进行平均池化,卷积层负责对数据进行卷积运算。下面具体介绍卷积层的实现方式。
图3是适用于MobileNetV2网络中的普通卷积和深度卷积的卷积层功能结构设计图。在本发明的实施中,输入特征图的尺寸为Col×Row×NC,卷积核尺寸大小是3×3,步长是1,对应的输入行缓冲区有3个,每个缓冲区都是NC×Row的二维数组。在工作时,首先在前2个行缓冲区存入输入特征图块中每个通道的前2行数据,然后当第3个缓冲区缓存到第1个通道第3行第3列数据的时候启动PE单元进行计算。每个PE单元需要的数据分别从输入行缓冲区和权值缓冲区内读取相应数据。在进行计算的同时还需要对行缓冲区的内数据进行更新。PE单元输出的数据会相继通过BN单元和激活单元,最终就得到了输出特征图。为了达到最优效果,我们需要对每一个卷积层都进行不同的层内流水设计,调整它们各自的循环流水程度和数据分块大小来达到资源和速度的平衡。
图4是适用于MobileNetV2网络中逐点卷积的卷积层功能结构设计图。在本发明的实施中,输入特征图的尺寸为Col×Row×NC,卷积核尺寸大小是1×1,数量是NF个,步长是1,对应的输入行缓冲区是一个深度为NC的一维数组。在工作时,输入数据通过FIFO通道按照通道-列-行的顺序逐个输入到行缓冲区,当行缓冲区内存满NC个数据就会启动PE单元进行计算。假设某个时刻,行缓冲区存储了输入图块第m行第n列所有通道的NC个数据,根据深度可分离卷积的工作原理,此时缓冲区内的数据需要与NF个输出卷积核分别做卷积运算,一共可得到NF个输出数据,这些数据依次是输出特征图块第m行第n列的NF个通道的全部数据。行缓冲区存储的数据重复使用NF次,之后再将行缓冲区清空去存储下一组数据。输出的数据同样需要通过BN单元和激活单元。为了达到最优效果,同样需要对每一个卷积层进行不同的层内流水设计。
数据流区域的输出数据会被继续传到网络的下一层,即全连接层。全连接层负责整合池化层中具有类别区分性的局部信息,然后将结果输出到Softmax分类器。Softmax分类器对结果进行分类,得到输入图像属于每一类的概率结果。最终这个概率结果在通过AXI4总线传输回外部存储器中,从而完成对待测图像的检测分类。
本发明通过层融合的方式,对网络模型中的BN操作和激活操作作为独立的功能单元合并到统一的卷积层中,减少了网络模型中数据的访问与存储,同时将BN单元的一部分运算提前算好,减少实际计算过程中的资源消耗;
进行了卷积层的PE单元加速设计。通过行缓冲区的设计,保证了卷积层能够实现数据输入和输出的同步进行;通过对不同卷积层实施不同的层内流水策略,提高了卷积运算的并行度,降低单个卷积层的计算用时。
进行了数据流区域的设计。数据流区域的各个层都可以实现数据的输入和输出的同步进行,整个区域运算所需的时间是由耗时最长的层决定的。相比于顺序执行的方式,可以实现不同层之间的并行计算,显著加快了网络运行的速度。并且通过使用FIFO通道和流式数据,减少了数据的中间存储和运算过程中的资源消耗。
需要注意的是,具体实施方式仅仅是对本发明技术方案的解释和说明,不能以此限定权利保护范围。凡根据本发明权利要求书和说明书所做的仅仅是局部改变的,仍应落入本发明的保护范围内。
Claims (6)
1.一种基于FPGA的轻量级CNN模型计算加速器,其特征在于包括:权值缓存区、归一化层、卷积层、池化层、全连接层和Softmax分类器;
所述权值缓存区用于缓存卷积运算过程中的权值参数;
所述归一化层用于对特征图数据进行归一化处理;
所述卷积层用于对归一化后的数据和权值缓存区的权值参数数据进行卷积操作;
所述池化层用于对卷积后的数据进行平均池化;
所述全连接层和Softmax分类器用于对池化后的数据进行分类;
所述卷积层包括输入行缓冲区、PE单元、BN单元和激活函数单元,
所述输入行缓冲区用于存储从输入FIFO通道读取的数据,然后将数据传递到PE单元;
所述PE单元用于对数据进行乘累加操作,然后发送给BN单元;
所述BN单元用于对数据进行批量归一化处理,然后将数据传给激活函数单元;
所述激活函数单元用于对数据进行线性整流函数处理并将结果通过输出FIFO通道输出;
所述加速器还包括PE单元加速设计,所述PE单元加速设计包括行缓冲区设计和层内流水策略:
所述行缓冲区设计用于保证卷积层能够实现数据输入和输出的同步进行,行缓冲区的个数和深度由卷积核大小和输入特征图的尺寸决定,当卷积核的尺寸是K×K时,所述行缓冲区的个数为K个,在前K-1个行缓冲区缓存输入特征图块中每个通道的前K-1行数据,然后当第K个缓冲区缓存到第1个通道的第K个数据的时候启动PE单元进行计算;
某时刻输入的是第i个通道第m行第n列的数据,且m>K,n>k,此时PE单元需要分别读取K个行缓冲区的第n-k+1列到第n列一共K*K个数据进行卷积运算,同时需要对行缓冲区第n-k列的数据进行更新,前K-1个行缓冲区依次存储下一个行缓冲区对应位置,即第n-k列的数据,第K个行缓冲区清空该位置的数据,等待新数据输入;
所述卷积层采用层融合策略,所述层融合策略将卷积神经网络中的BN层和激活函数层作为独立的功能单元合并到统一的卷积层中,每当卷积层的PE单元计算出一个输出结果后,数据通过BN单元和激活单元进行相应的批量化归一化处理和激活处理,之后再将数据存储到存储器。
2.根据权利要求1所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述PE单元包括乘法单元和加法单元,所述乘法单元用于从输入行缓冲区和权值参数缓存区分别读取参数进行相乘,所述加法单元用于将相乘之后的结果进行累加然后传给BN单元。
3.根据权利要求2所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述BN单元批量归一化处理的公式为:
其中,,γ是缩放因子,β是平移因子,ε是接近0的极小值,yconv是卷积层的输出结果,Var(x)是数据的方差值,E(x)是此次批量数据的均值;
所述激活函数单元的激活函数为Relu函数,函数表达式为:f(x) = max(0,x)。
4.根据权利要求1所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述卷积层设有流水策略单元,所述流水策略单元将卷积层内不同循环层次操作进行交叠,形成高效的循环流水线,并根据数组分块指令对行缓冲区的数据进行分块。
5.根据权利要求1所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述卷积层为标准卷积、深度卷积或逐点卷积。
6.根据权利要求1所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述加速器还包括数据流区域模块,所述数据流区域模块用于将卷积层、池化层和归一化层连接在一起,并使数据以数据流的形式通过。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214304.3A CN111488983B (zh) | 2020-03-24 | 2020-03-24 | 一种基于fpga的轻量级cnn模型计算加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214304.3A CN111488983B (zh) | 2020-03-24 | 2020-03-24 | 一种基于fpga的轻量级cnn模型计算加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111488983A CN111488983A (zh) | 2020-08-04 |
CN111488983B true CN111488983B (zh) | 2023-04-28 |
Family
ID=71798216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010214304.3A Active CN111488983B (zh) | 2020-03-24 | 2020-03-24 | 一种基于fpga的轻量级cnn模型计算加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488983B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112070210A (zh) * | 2020-08-20 | 2020-12-11 | 成都恒创新星科技有限公司 | 一种基于fpga的多并行策略卷积网络加速器 |
CN112288082B (zh) * | 2020-11-23 | 2023-06-13 | 天津大学 | 一种基于hls的可重构通用标准卷积加速器设计方法 |
CN112732638B (zh) * | 2021-01-22 | 2022-05-06 | 上海交通大学 | 基于ctpn网络的异构加速系统及方法 |
CN112801285B (zh) * | 2021-02-04 | 2024-01-26 | 南京微毫科技有限公司 | 一种基于fpga的高资源利用率cnn加速器及其加速方法 |
CN112884123B (zh) * | 2021-02-23 | 2024-03-01 | 杭州海康威视数字技术股份有限公司 | 神经网络优化方法、装置、电子设备及可读存储介质 |
CN112862080B (zh) * | 2021-03-10 | 2023-08-15 | 中山大学 | EfficientNet的注意力机制的硬件计算方法 |
CN113033794B (zh) * | 2021-03-29 | 2023-02-28 | 重庆大学 | 基于深度可分离卷积的轻量级神经网络硬件加速器 |
CN113362292B (zh) * | 2021-05-27 | 2023-04-28 | 重庆邮电大学 | 一种基于可编程逻辑门阵列的骨龄评估方法及系统 |
CN113312285B (zh) * | 2021-06-11 | 2023-08-18 | 西安微电子技术研究所 | 一种卷积神经网络加速器及其工作方法 |
CN113392973B (zh) * | 2021-06-25 | 2023-01-13 | 广东工业大学 | 一种基于fpga的ai芯片神经网络加速方法 |
CN113361699B (zh) * | 2021-07-16 | 2023-05-26 | 安谋科技(中国)有限公司 | 乘法电路、片上系统和电子设备 |
CN113946538B (zh) * | 2021-09-23 | 2024-04-12 | 南京大学 | 一种基于行缓存机制的卷积层融合存储装置及方法 |
CN114492781A (zh) * | 2022-04-02 | 2022-05-13 | 苏州浪潮智能科技有限公司 | 一种硬件加速器及数据处理方法、系统、设备、介质 |
CN114911628A (zh) * | 2022-06-15 | 2022-08-16 | 福州大学 | 一种基于FPGA的MobileNet硬件加速系统 |
CN115228765A (zh) * | 2022-07-21 | 2022-10-25 | 安徽理工大学 | 一种基于图像处理和fpga的煤矸石识别分选设备及其方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656899A (zh) * | 2017-09-27 | 2018-02-02 | 深圳大学 | 一种基于fpga的模板卷积实现方法和系统 |
CN108805267A (zh) * | 2018-05-28 | 2018-11-13 | 重庆大学 | 用于卷积神经网络硬件加速的数据处理方法 |
CN110390383A (zh) * | 2019-06-25 | 2019-10-29 | 东南大学 | 一种基于幂指数量化的深度神经网络硬件加速器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229670B (zh) * | 2018-01-05 | 2021-10-08 | 中国科学技术大学苏州研究院 | 基于fpga的深度神经网络加速平台 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
CN109032781A (zh) * | 2018-07-13 | 2018-12-18 | 重庆邮电大学 | 一种卷积神经网络算法的fpga并行系统 |
CN109635944B (zh) * | 2018-12-24 | 2020-10-27 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN109948784B (zh) * | 2019-01-03 | 2023-04-18 | 重庆邮电大学 | 一种基于快速滤波算法的卷积神经网络加速器电路 |
CN110097174B (zh) * | 2019-04-22 | 2021-04-20 | 西安交通大学 | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 |
CN110070181A (zh) * | 2019-04-30 | 2019-07-30 | 深圳朴生智能科技有限公司 | 一种用于边缘计算设备的深度学习的优化方法 |
-
2020
- 2020-03-24 CN CN202010214304.3A patent/CN111488983B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656899A (zh) * | 2017-09-27 | 2018-02-02 | 深圳大学 | 一种基于fpga的模板卷积实现方法和系统 |
CN108805267A (zh) * | 2018-05-28 | 2018-11-13 | 重庆大学 | 用于卷积神经网络硬件加速的数据处理方法 |
CN110390383A (zh) * | 2019-06-25 | 2019-10-29 | 东南大学 | 一种基于幂指数量化的深度神经网络硬件加速器 |
Non-Patent Citations (1)
Title |
---|
李理等.基于FPGA的卷积神经网络Softmax层实现.《现代计算机(专业版)》.2017,第26卷21-24. * |
Also Published As
Publication number | Publication date |
---|---|
CN111488983A (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488983B (zh) | 一种基于fpga的轻量级cnn模型计算加速器 | |
CN110097174B (zh) | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 | |
US10936941B2 (en) | Efficient data access control device for neural network hardware acceleration system | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速系统及其加速方法 | |
CN110751280A (zh) | 一种应用于卷积神经网络的可配置卷积加速器 | |
CN110738308B (zh) | 一种神经网络加速器 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN110516801A (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器架构 | |
CN113051216B (zh) | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 | |
US20210019594A1 (en) | Convolutional neural network accelerating device and method | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN111047008B (zh) | 一种卷积神经网络加速器及加速方法 | |
CN108229671A (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN109472734B (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
CN117217274B (zh) | 向量处理器、神经网络加速器、芯片及电子设备 | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
CN110598844A (zh) | 一种基于fpga的并行卷积神经网络加速器及加速方法 | |
CN114359662B (zh) | 一种基于异构fpga和融合多分辨率的卷积神经网络的实现方法 | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
US20230334289A1 (en) | Deep neural network accelerator with memory having two-level topology | |
CN113158132A (zh) | 一种基于非结构化稀疏的卷积神经网络加速系统 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
US20230221994A1 (en) | Dynamic uncompression for channel-separable operation in neural network |
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 |