CN110880038A - 基于fpga的加速卷积计算的系统、卷积神经网络 - Google Patents
基于fpga的加速卷积计算的系统、卷积神经网络 Download PDFInfo
- Publication number
- CN110880038A CN110880038A CN201911196648.XA CN201911196648A CN110880038A CN 110880038 A CN110880038 A CN 110880038A CN 201911196648 A CN201911196648 A CN 201911196648A CN 110880038 A CN110880038 A CN 110880038A
- Authority
- CN
- China
- Prior art keywords
- convolution
- parameter
- fpga
- module
- layer
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 90
- 238000013528 artificial neural network Methods 0.000 title abstract description 5
- 238000013139 quantization Methods 0.000 claims abstract description 53
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 28
- 238000010586 diagram Methods 0.000 claims abstract description 18
- 239000011159 matrix material Substances 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims 1
- 238000003860 storage Methods 0.000 abstract description 8
- 230000001133 acceleration Effects 0.000 abstract description 4
- 238000013135 deep learning Methods 0.000 abstract description 3
- 238000013461 design Methods 0.000 description 8
- 238000007667 floating Methods 0.000 description 7
- 238000000354 decomposition reaction Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013138 pruning Methods 0.000 description 4
- 238000007670 refining Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013141 low-rank factorization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000035945 sensitivity Effects 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/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
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明属于深度学习领域,具体涉及一种基于FPGA的加速卷积计算的系统、卷积神经网络,旨在为了解决解决现有技术中的上述问题。本发明包括:参数量化模块,存储各卷积层的定点化后的权值参数、尺度、偏置;参数加载模块,将定点化后的CNN模型参数文件加载到FPGA中;输入模块,获取输入数据定点化后的低比特数据;卷积计算模块,将输入数据的特征图矩阵拆分为多个小矩阵依次加载到FPGA中,根据卷积核的数量分批进行卷积计算;输出模块,各小矩阵对应的卷积计算结果进行合并作为下一层的输入图像;本发明在硬件FPGA上保证了网络模型精度损失很小的前提下,减少网络模型的存储,实现加速卷积计算。
Description
技术领域
本发明属于深度学习领域,具体涉及一种基于FPGA的加速卷积计算的系统、卷积神经网络。
背景技术
目前的针对卷积神经网络压缩的方法可以大致分为五类,权值参数裁剪和共享、低秩分解、模型量化(参数定点化)、特定网络结构设计和知识精炼。
1、权值参数裁剪和共享。基于参数修剪和共享的方法针对模型参数的冗余性,试图去除冗余和不重要的项,网络剪枝和共享已经被用于降低网络复杂度和解决过拟合问题。参数裁剪这个方向目前的趋势是在预先训练的CNN模型中修剪冗余的、非重要信息量的权重。剪枝和共享方法存在一些潜在的问题。首先,若使用了L1或L2正则化,则剪枝方法需要更多的迭代次数才能收敛,此外,所有的剪枝方法都需要手动设置层的敏感度,即需要精调超参数,在某些应用中会显得很冗长繁重。
2、低秩分解。图像在计算机中是以像素点矩阵的形式存储的,对矩阵计算的优化可以用在对图像处理中,基于低秩因子分解的技术使用矩阵/张量分解来估计深度学习模型的信息参数。CNN中的耗时主要来自卷积运算,减少卷积层会提高压缩率以及整体加速。长期以来,使用低阶滤波器来加速卷积,例如高维DCT和使用张量积的小波系统分别由一维DCT变换和一维小波构成。低秩方法很适合模型压缩和加速,该方法补充了深度学习的近期发展,如dropout、修正单元(rectified unit)和maxout。但是,低秩方法的实现并不容易,因为它涉及计算成本高昂的分解操作。另一个问题是目前的方法逐层执行低秩近似,无法执行非常重要的全局参数压缩,因为不同的层具备不同的信息。最后,分解需要大量的重新训练来达到收敛,耗时比较长。
3、模型量化。通过减少权重所占存储空间来压缩网络。网络量化通过减少表示每个权重所需的比特数来压缩原始网络。此类二元网络的准确率在处理大型CNN网络如GoogleNet时会大大降低。另一个缺陷是现有的二进制化方法都基于简单的矩阵近似,忽视了二进制化对准确率的影响。
4、特定网络设计。该方法又被称为基于传输/紧凑卷积滤波器的方法,该方法设计了特殊的结构卷积滤波器来降低存储和计算复杂度。将迁移信息应用到卷积滤波器的方法需要解决几个问题。首先,这些方法的性能可与宽/平坦的架构(如VGG-Net)相媲美,但是无法与较窄/特殊的架构(如Google-Net、Residual Net)相比。其次,迁移假设有时过于强大以致无法指导算法,使得在某些数据集上的结果不稳定。
5、知识精炼。知识精炼方法通过学习一个精炼模型,训练一个更紧凑的神经网络来重现一个更大的网络输出。其也有一些缺点,例如KD方法只能用于具有Softmax损失函数分类任务,这阻碍了其应用。另一个缺点是模型的假设太严格了,导致其性能有所下降。
综合目前的研究状况,卷积神经网络定点量化可以有效缓解浮点卷积计算带来的功耗问题,而基于硬件FPGA的加速定点卷积神经网络可以进一步提高卷积神经网络在嵌入式设备部署的可行性。
发明内容
为了解决现有技术中的上述问题,即为了解决卷积神经网络模型功耗高及运行延迟的问题,本发明的第一方面提出了一种基于FPGA的加速卷积计算的系统,包括参数量化模块、参数加载模块、输入模块、卷积计算模块和输出模块;
所述参数量化模块,配置为存储第一参数文件;所述第一参数文件为定点化后的CNN模型参数文件,包括预先计算得到的各卷积层的定点化后的权值参数、尺度和偏置;
所述参数加载模块,配置为在卷积运算时,将定点化后的CNN模型参数文件加载到FPGA内部存储器Block-RAM中;
所述输入模块,配置为对每一个卷积层,将输入图像的图像像素值依据所述第一参数文件进行定点化,得到定点化后的低比特数据作为对应卷积层的输入数据;
所述卷积计算模块,配置为对每一个卷积层,将该层对应的输入数据的特征图矩阵拆分为多个小矩阵,将所述小矩阵依次加载到FPGA的Block-RAM中缓存,根据卷积核的数量分批进行卷积计算;
所述输出模块,配置为对每一个卷积层,将通过所述卷积计算模块得到的各小矩阵对应的卷积计算结果进行合并作为下一层的输入图像。
在一些优选实施方式中,所述第一参数文件中各卷积层的定点化后的权值参数,其获取方法为:采用动态定点量化的方式对权值参数进行量化。
在一些优选实施方式中,“采用动态定点量化的方式对权值参数进行量化”,其方法为:
fl_w=(-1)s log2(|w|max)
在一些优选实施方式中,所述第一参数文件中各卷积层的尺度,其获取方法为:
fll+1=fl_wl+fl_inl-fl_inl+1
其中,fll+1为l+1卷积层的尺度,fl_wl为l卷积层的权值参数的尺度,fl_inl为l卷积层的输入量化尺度,fl_inl+1为l+1卷积层的输入量化尺度。
在一些优选实施方式中,卷积层的输入量化尺度计算方法为:
其中,fl_in为对应卷积层的输入量化尺度,T为由32-bit数据向n-bit定点数的映射关的阈值。
在一些优选实施方式中,所述第一参数文件中各卷积层的定点化后的偏置,其获取方法为:
y2=(-1)s*2-fl_bia*biai
其中y2为量化后的偏置参数,s为符号位,fl_bia为当前卷积层偏置项参数的尺度,biai为量化前的偏置参数。
在一些优选实施方式中,“将定点化后的CNN模型参数文件加载到FPGA内部存储器Block-RAM中”,其方法为:
设置所述参数量化模的处理器将第一参数文件中的参数读取到DDR内存中,再将输入参数、权值参数和输出参数的地址通过AXI总线配置到FPGA中,FPGA将数据读取到Block-RAM中,接口配置信息存储在一个32-bit的变量中,中间层计算结果存储在片上RAM中。
在一些优选实施方式中,所述卷积计算模块中“将该层对应的输入数据的特征图矩阵拆分为多个小矩阵,将所述小矩阵依次加载到FPGA的Block-RAM中缓存,根据卷积核的数量分批进行卷积计算”,其方法为:
每一层卷积层的特征图的长和宽均为16的倍数,在每一层卷积层进行运算时,将特征图拆分为边长为16的小矩阵,每次选取M个小矩阵分别与M个卷积核进行并行卷积计算;M为预设的卷积核的数量。
本发明的第二方面,提出了一种基于FPGA的加速卷积计算的系统的卷积神经网络,包括卷积模块,所述卷积模块为上述的基于FPGA的加速卷积计算的系统。
本发明的有益效果:
本发发明通过动态定点方法将权值参数和每一层的特征参数定点量化为低比特整数,减少网络参数的存储空间,原始卷积计算转化为定点数的乘加和移位与运算,同时,设计模型参数在硬件FPGA上复用及流水线计算方法,在保证了网络模型精度损失很小的前提下,减少网络模型的存储,实现加速卷积计算。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本发明一种实施例的基于FPGA的加速卷积计算的系统框架示意图;
图2是本发明一种实施例的权值参数动态定点量化示意图;
图3是本发明一种实施例的特征参数阈值选择示意图;
图4是本发明一种实施例的数据加载接口设计示意图;
图5是本发明一种实施例的基于FPGA的加速卷积计算的系统构成示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明的一种基于FPGA的加速卷积计算的系统,包括参数量化模块、参数加载模块、输入模块、卷积计算模块和输出模块;
所述参数量化模块,配置为存储第一参数文件;所述第一参数文件为定点化后的CNN模型参数文件,包括预先计算得到的各卷积层的定点化后的权值参数、尺度、偏置;
所述参数加载模块,配置为在卷积运算时,将定点化后的CNN模型参数文件加载到FPGA内部存储器Block-RAM中;
所述输入模块,配置为对每一个卷积层,将输入图像的图像像素值依据所述第一参数文件进行定点化,得到定点化后的低比特数据作为对应卷积层的输入数据;
所述卷积计算模块,配置为对每一个卷积层,将该层对应的输入数据的特征图矩阵拆分为多个小矩阵,将所述小矩阵依次加载到FPGA的Block-RAM中缓存,根据卷积核的数量分批进行卷积计算;
所述输出模块,配置为对每一个卷积层,将通过所述卷积计算模块得到的各小矩阵对应的卷积计算结果进行合并作为下一层的输入图像。
为了更清晰地对本发明基于FPGA的加速卷积计算的系统进行说明,下面结合附图对本方发明一种实施例进行展开详述。
FPGA是一种集成电路,包含大量的定点计算单元,与GPU相比,FPGA具有低功耗低成本的特点,制造成本低,并且在大多数情况下能达到相近的加速效果,因此,本发明使用FPGA加速定点卷积运算,提高了运算速度。
为了加速定点化后的CNN模型,本发明设计了基于FPGA的加速卷积计算的系统,本发明提出的模型主要分为五个模块,如图1所示分别为参数量化模块、参数加载模块、输入模块、卷积计算模块和输出模块。在本实施例中参数量化模块设置于ARM处理器中,通过参数加载模块中的AXI高速总线接口进行ARM处理器与FPGA之间的数据传输。
1、参数量化模块
该模块配置为存储第一参数文件;所述第一参数文件为定点化后的CNN模型参数文件,包括预先计算得到的各卷积层的定点化后的权值参数、尺度、偏置。
计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。所谓定点数和浮点数,是指在计算机中一个数的小数点的位置是固定的还是浮动的:如果一个数中的小数点、位置是固定的,则为定点数;如果一个数中小数点的位置是浮动的,则为浮点数。一般来说,定点格式可表示的数值的范围有限,但要求的处理硬件比较简单,构造简单,造价低,一般微型机和单片机大多采用定点数的表示方法。而浮点格式可表示的数值的范围很大,但要求的处理硬件比较复杂,比定点机复杂,造价高,在相同的条件下浮点运算比定点运算速度慢,一般大、中型计算机及高档微型机都采用浮点表示法,或同时具有定点和浮点两种表示方法。
本发明的参数量化模块是预先计算定点CNN模型,将定点后的参数存储在文件中作为第一参数文件,卷积计算时,直接使用定点化后的参数文件。该模块由三部分构成,第一部分是卷积核(权值)参数经过量化器进行量化,计算出n-bit权值参数以及每层参数的尺度fl_w;第二部分是经过矫正数据集(k张图片)计算出fl_in;第三部分对偏置进行int-32量化,得到定点化后的偏置。
(1)第一参数文件中各卷积层的定点化后的权值参数
本发明采用动态定点量化的方式对权值参数进行量化,动态定点量化是指针不同的卷积层的权值参数范围是动态变化的,因此设置不同的尺度,将浮点参数量化为定点参数。在对每一层参数进行量化时,将每层参数分组为具有指数为常数fl_w的组中,分配给小数部分的位数在该组内是恒定的,但与其他组相比是不同的,如图2所示。图2中左图,符号位为0,尾数为11001,fl=2,整数部分为5位,小数部分为2位;图2中右图,符号位为1,尾数为0011101,fl=-1,整数部分为8位,小数部分为空。
每个卷积层分为三组:一个用于层输入,一个用于权重,一个用于层输出,可以更好地覆盖每层输入参数和权重参数的动态范围。采用动态定点量化的方式对权值参数进行量化计算的方法如公式(1)所示,其中:
当前卷积层权值参数的尺度fl-w的计算方法如公式(2)所示:
fl_w=(-1)s log2(|x|max) (2)
其中,|x|max为量化前当前卷积层的权值参数绝对值的最大值。
卷积计算时使用定点化后的CNN模型,卷积计算转化为定点数的尾数部分进行乘累加运算,将运算的结果使用每层的量化尺度再进行量化,之后参与下一层的卷积计算,依次类推,直到完成所有的卷积计算。
(2)第一参数文件中各卷积层的尺度
在对输入层数据量化时,由于每次传入的图片数据不一样,每一层计算的输出差异很大,因此每次的输入不能直接确定量化范围。卷积计算时,每层的输入都计算量化位宽会增加前向推理运算时间。为了减少计算量并且保证精度损失不大,本发明采用KL散度来计算输入参数定点化的尺度。
首先构建一种由32-bit数据向n-bit定点数的映射关系,该映射中的边界并不是两种数据类型的最大值(图3左中的-|MAX|、+|MAX|),而是设置一个阈值T(图3右中的-|T|、+|T|),将这个阈值与n-bit定点数的最大值(例如8bit定点数最大为127)构建映射关系,计算输入尺度fl_in。
确定这种映射关系的阈值T和尺度采用KL散度。不同的网络层阈值T、每层的尺度是不同的,32-bit浮点数映射到n-bit定点数相当于重新编码信息,在选择阈值T和尺度时应尽量保证减少信息的丢失,设置一个矫正数据集(calibration dataset)来进行输入尺度的选取,计算最小化KL散度来确定最佳尺度,如公式(3):
式中P,Q是两个离散概率分布,x为输入特征图像,X为输入特征图像集。
当公式(2)中KL取最小值时,得到此刻的x值,并将该值作为阈值T,通过公式(4)计算得出卷积层的输入量化尺度fl_in:
尺度信息的计算如式(5)所示
fll+1=fl_wl+fl_inl-fl_inl+1 (5)
其中,fll+1为l+1卷积层的尺度,fl_wl为l卷积层的权值参数的尺度,fl_inl为l卷积层的输入量化尺度,fl_inl+1为l+1卷积层的输入量化尺度。
(3)第一参数文件中各卷积层的定点化后的偏置
卷积计算过程中的偏置项对激活层的计算结果有很大影响,为了减少量化后对结果的影响,由于偏置项参数个数较少,因此设计动态定点量化方法将偏置量化为32-bit的整数,方法如公式(6)所示:
y2=(-1)s*2-fl_bia*biai (6)
其中y2为量化后的偏置参数,s为符号位,fl_bia为当前卷积层偏置项参数的尺度,biai为量化前的偏置参数。
最后将定点化后的权值参数、尺度fl以及偏置存储在文件中,得到定点化后的CNN模型。
2、参数加载模块
该模块配置为在卷积运算时,将定点化后的CNN模型参数文件加载到FPGA内部存储器Block-RAM中。
在卷积运算时,需要将定点化后的CNN模型参数文件加载到FPGA内部存储器Block-RAM中。本发明设计读取参数文件的AXI高速总线接口,如图4所示,
首先ARM处理器将参数文件中的参数读取到DDR内存中,再将输入参数、权值参数和输出参数的地址通过AXI总线配置到FPGA中,FPGA将数据读取到Block-RAM中,一些接口配置信息存储在一个int-32的整数变量(Inf)中,中间层计算结果存储在片上存储器(Temp)中。图中Inputs-DDR为存储在内存中的数据,Weights为内存中的权值参数,Outputs-DDR为内存中的输出缓存数据,Layer_n为第n个卷积层。
3、输入模块
该模块配置为对每一个卷积层,将输入图像的图像像素值依据所述第一参数文件中各层对应的输入量化尺度fl_in进行定点化,得到定点化后的低比特数据作为对应卷积层的输入数据。
4、卷积计算模块
该模块配置为对每一个卷积层,将该层对应的输入数据的特征图矩阵拆分为多个小矩阵,将所述小矩阵依次加载到FPGA的Block-RAM中缓存,根据卷积核的数量分批进行卷积计算。
首先考虑数据的复用。FPGA与数据存储位置ARM之间的交互会造成较大的通信延迟,因此设计了一种合理的数据循环复用方法:FPGA内部高速存储资源(Block-RAM)有限,每个卷积核(权重参数)会多次与特征图进行卷积,所以在卷积计算前,将特征图矩阵进行拆分,分批加载数据,将大矩阵拆分为小的矩阵,再将小矩阵依次加载到FPGA的Block-RAM中缓存。本发明使用的模型每一层的特征图的长和宽均为16的倍数,因此将每一层的特征图拆分为边长为16的小矩阵,分批对16*16的特征图与3*3的卷积核进行卷积计算,每次选取M个小矩阵分别与M个卷积核进行并行卷积计算,最终将计算结果合并在一起。M为预设的卷积核的数量。
其次考虑卷积计算的流水线操作。加速卷积计算采用将3*3卷积核及拆分后的16*16小特征图矩阵,拆分后的小特征图与多个卷积和并行计算,循环展开及流水线卷积计算,如5图所示。
5、输出模块
该模块配置为对每一个卷积层,将通过所述卷积计算模块得到的各小矩阵对应的卷积计算结果进行合并作为下一层的输入图像。循环每层卷积计算得到最后一层的计算结果,作为计算目标识别的坐标回归和类别预测的输入。
如图5所示,一个实施例的基于FPGA的加速卷积计算的系统中,(1)参数量化模块:32-bit的卷积核经量化器得到n-bit的卷积核,并获取fl_w;32-bit的k张输入图片(Pictures)经量化器得到fl_in;32-bit浮点的偏置(biases)经量化器得到int_bia;基于fl_w、fl_in得到fl;构建n-bit的参数文件作为第一参数文件;(2)参数加载模块:将n-bit的参数文件存储信息中n-bit卷积核、int_bia、fl读取到DDR中,并依照AXI总线IP向FPGA加载参数;(3)输入模块:将32-bit的输入图片通过量化器得到n-bit的特征图片(Frature-map);(4)卷积计算模块(即图中的卷积加速模块):FPGA的Block-RAM(B-RAM)中存储有n-bit的卷积核、int_bia、fl;基于输入图片量化后的图片进行逐层卷积,基于拆分后的小矩阵、n-bit的卷积核在进行分组并行卷积(IP-Conv),合并后输出(IP-Conv下方的Outputs),得到32-bit的特征图,然后进行池化操作和激活计算(Pool&Relu)得到激活后输出(Pool&Relu下方的Outputs),再经过量化器得到下一个卷积层的输入,如此往复直至最后一个卷积层完成卷积,判定为卷积计算结束(End);(5)输出模块:将最后一个卷积层的输出作为输出结果。
本发明第二实施例的一种基于FPGA的加速卷积计算的系统的卷积神经网络,包括卷积模块,所述卷积模块为上述的基于FPGA的加速卷积计算的系统。
所属技术领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的卷积神经网络的具体工作过程及有关说明,可以参考前述基于FPGA的加速卷积计算的系统实施例中的对应过程,在此不再赘述。
需要说明的是,上述实施例提供的基于FPGA的加速卷积计算的系统,仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块来完成,即将本发明实施例中的模块或者步骤再分解或者组合,例如,上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块,以完成以上描述的全部或者部分功能。对于本发明实施例中涉及的模块、步骤的名称,仅仅是为了区分各个模块或者步骤,不视为对本发明的不当限定。
本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的模块、方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,软件模块、方法步骤对应的程序可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
术语“第一”、“第二”等是用于区别类似的对象,而不是用于描述或表示特定的顺序或先后次序。
术语“包括”或者任何其它类似用语旨在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备/装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者还包括这些过程、方法、物品或者设备/装置所固有的要素。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
Claims (9)
1.一种基于FPGA的加速卷积计算的系统,其特征在于,包括参数量化模块、参数加载模块、输入模块、卷积计算模块和输出模块;
所述参数量化模块,配置为存储第一参数文件;所述第一参数文件为定点化后的CNN模型参数文件,包括预先计算得到的各卷积层的定点化后的权值参数、尺度、偏置;
所述参数加载模块,配置为在卷积运算时,将定点化后的CNN模型参数文件加载到FPGA内部存储器Block-RAM中;
所述输入模块,配置为对每一个卷积层,将输入图像的图像像素值依据所述第一参数文件进行定点化,得到定点化后的低比特数据作为对应卷积层的输入数据;
所述卷积计算模块,配置为对每一个卷积层,将该层对应的输入数据的特征图矩阵拆分为多个小矩阵,将所述小矩阵依次加载到FPGA的Block-RAM中缓存,根据卷积核的数量分批进行卷积计算;
所述输出模块,配置为对每一个卷积层,将通过所述卷积计算模块得到的各小矩阵对应的卷积计算结果进行合并作为下一层的输入图像。
2.根据权利要求1所述的基于FPGA的加速卷积计算的系统,其特征在于,所述第一参数文件中各卷积层的定点化后的权值参数,其获取方法为:采用动态定点量化的方式对权值参数进行量化。
4.根据权利要求3所述的基于FPGA的加速卷积计算的系统,其特征在于,所述第一参数文件中各卷积层的尺度,其获取方法为:
fll+1=fl_wl+fl_inl-fl_inl+1
其中,fll+1为l+1卷积层的尺度,fl_wl为l卷积层的权值参数的尺度,fl_inl为l卷积层的输入量化尺度,fl_inl+1为l+1卷积层的输入量化尺度。
6.根据权利要求1所述的基于FPGA的加速卷积计算的系统,其特征在于,所述第一参数文件中各卷积层的定点化后的偏置,其获取方法为:
y2=(-1)s*2-fl_bia*biai
其中y2为量化后的偏置参数,s为符号位,fl_bia为当前卷积层偏置项参数的尺度,biai为量化前的偏置参数。
7.根据权利要求1所述的基于FPGA的加速卷积计算的系统,其特征在于,“将定点化后的CNN模型参数文件加载到FPGA内部存储器Block-RAM中”,其方法为:
设置所述参数量化模的处理器将第一参数文件中的参数读取到DDR内存中,再将输入参数、权值参数和输出参数的地址通过AXI总线配置到FPGA中,FPGA将数据读取到Block-RAM中,接口配置信息存储在一个32-bit的变量中,中间层计算结果存储在片上RAM中。
8.根据权利要求1-7任一项所述的基于FPGA的加速卷积计算的系统,其特征在于,所述卷积计算模块中“将该层对应的输入数据的特征图矩阵拆分为多个小矩阵,将所述小矩阵依次加载到FPGA的Block-RAM中缓存,根据卷积核的数量分批进行卷积计算”,其方法为:
每一层卷积层的特征图的长和宽均为16的倍数,在每一层卷积层进行运算时,将特征图拆分为边长为16的小矩阵,每次选取M个小矩阵分别与M个卷积核进行并行卷积计算;M为预设的卷积核的数量。
9.一种基于FPGA的加速卷积计算的系统的卷积神经网络,包括卷积模块,其特征在于,所述卷积模块为权利要求1-8任一项所述的基于FPGA的加速卷积计算的系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911196648.XA CN110880038B (zh) | 2019-11-29 | 2019-11-29 | 基于fpga的加速卷积计算的系统、卷积神经网络 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911196648.XA CN110880038B (zh) | 2019-11-29 | 2019-11-29 | 基于fpga的加速卷积计算的系统、卷积神经网络 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110880038A true CN110880038A (zh) | 2020-03-13 |
CN110880038B CN110880038B (zh) | 2022-07-01 |
Family
ID=69729613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911196648.XA Active CN110880038B (zh) | 2019-11-29 | 2019-11-29 | 基于fpga的加速卷积计算的系统、卷积神经网络 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110880038B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111142808A (zh) * | 2020-04-08 | 2020-05-12 | 浙江欣奕华智能科技有限公司 | 存取设备及存取方法 |
CN111178522A (zh) * | 2020-04-13 | 2020-05-19 | 杭州雄迈集成电路技术股份有限公司 | 一种软硬件协同加速方法、系统及计算机可读存储介质 |
CN111416743A (zh) * | 2020-03-19 | 2020-07-14 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111626298A (zh) * | 2020-04-17 | 2020-09-04 | 中国科学院声学研究所 | 一种实时图像语义分割装置及分割方法 |
CN111814676A (zh) * | 2020-07-08 | 2020-10-23 | 上海雪湖科技有限公司 | 基于kl散度的fpga离线量化方法 |
CN111860771A (zh) * | 2020-06-19 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种应用于边缘计算的卷积神经网络计算方法 |
CN111896823A (zh) * | 2020-06-30 | 2020-11-06 | 成都四威功率电子科技有限公司 | 一种对功放进行在线健康监测与故障预警的系统 |
CN112328511A (zh) * | 2021-01-04 | 2021-02-05 | 统信软件技术有限公司 | 一种数据处理方法、计算设备及可读存储介质 |
CN112396178A (zh) * | 2020-11-12 | 2021-02-23 | 江苏禹空间科技有限公司 | 一种提高cnn网络压缩效率的方法 |
CN112990438A (zh) * | 2021-03-24 | 2021-06-18 | 中国科学院自动化研究所 | 基于移位量化操作的全定点卷积计算方法、系统及设备 |
CN113010469A (zh) * | 2021-03-18 | 2021-06-22 | 恒睿(重庆)人工智能技术研究院有限公司 | 图像特征提取方法、装置以及计算机可读存储介质 |
CN113362292A (zh) * | 2021-05-27 | 2021-09-07 | 重庆邮电大学 | 一种基于可编程逻辑门阵列的骨龄评估方法及系统 |
WO2021223528A1 (zh) * | 2020-05-04 | 2021-11-11 | 神盾股份有限公司 | 用于执行卷积神经网络运算的处理装置与处理方法 |
CN114764756A (zh) * | 2022-06-15 | 2022-07-19 | 杭州雄迈集成电路技术股份有限公司 | 去雾模型的量化剪枝方法及系统 |
CN114898108A (zh) * | 2022-03-30 | 2022-08-12 | 哈尔滨工业大学 | 一种基于fpga的cnn模型轻量化方法、目标检测方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184362A (zh) * | 2015-08-21 | 2015-12-23 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN107239829A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种优化人工神经网络的方法 |
CN107463990A (zh) * | 2016-06-02 | 2017-12-12 | 国家计算机网络与信息安全管理中心 | 一种卷积神经网络的fpga并行加速方法 |
CN107480770A (zh) * | 2017-07-27 | 2017-12-15 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速系统 |
CN110413255A (zh) * | 2018-04-28 | 2019-11-05 | 北京深鉴智能科技有限公司 | 人工神经网络调整方法和装置 |
CN110490310A (zh) * | 2018-05-14 | 2019-11-22 | 北京深鉴智能科技有限公司 | 神经网络数据压缩及其相关计算方法和装置 |
-
2019
- 2019-11-29 CN CN201911196648.XA patent/CN110880038B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184362A (zh) * | 2015-08-21 | 2015-12-23 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
CN107463990A (zh) * | 2016-06-02 | 2017-12-12 | 国家计算机网络与信息安全管理中心 | 一种卷积神经网络的fpga并行加速方法 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN107239829A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种优化人工神经网络的方法 |
CN107480770A (zh) * | 2017-07-27 | 2017-12-15 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
CN110413255A (zh) * | 2018-04-28 | 2019-11-05 | 北京深鉴智能科技有限公司 | 人工神经网络调整方法和装置 |
CN110490310A (zh) * | 2018-05-14 | 2019-11-22 | 北京深鉴智能科技有限公司 | 神经网络数据压缩及其相关计算方法和装置 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速系统 |
Non-Patent Citations (1)
Title |
---|
王羽: "基于FPGA的卷积神经网络应用研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111416743A (zh) * | 2020-03-19 | 2020-07-14 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111416743B (zh) * | 2020-03-19 | 2021-09-03 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111142808A (zh) * | 2020-04-08 | 2020-05-12 | 浙江欣奕华智能科技有限公司 | 存取设备及存取方法 |
CN111178522A (zh) * | 2020-04-13 | 2020-05-19 | 杭州雄迈集成电路技术股份有限公司 | 一种软硬件协同加速方法、系统及计算机可读存储介质 |
CN111178522B (zh) * | 2020-04-13 | 2020-07-10 | 杭州雄迈集成电路技术股份有限公司 | 一种软硬件协同加速方法、系统及计算机可读存储介质 |
CN111626298A (zh) * | 2020-04-17 | 2020-09-04 | 中国科学院声学研究所 | 一种实时图像语义分割装置及分割方法 |
CN111626298B (zh) * | 2020-04-17 | 2023-08-18 | 中国科学院声学研究所 | 一种实时图像语义分割装置及分割方法 |
WO2021223528A1 (zh) * | 2020-05-04 | 2021-11-11 | 神盾股份有限公司 | 用于执行卷积神经网络运算的处理装置与处理方法 |
CN111860771A (zh) * | 2020-06-19 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种应用于边缘计算的卷积神经网络计算方法 |
CN111860771B (zh) * | 2020-06-19 | 2022-11-25 | 苏州浪潮智能科技有限公司 | 一种应用于边缘计算的卷积神经网络计算方法 |
CN111896823A (zh) * | 2020-06-30 | 2020-11-06 | 成都四威功率电子科技有限公司 | 一种对功放进行在线健康监测与故障预警的系统 |
CN111814676B (zh) * | 2020-07-08 | 2023-09-29 | 上海雪湖科技有限公司 | 基于kl散度的fpga离线量化方法 |
CN111814676A (zh) * | 2020-07-08 | 2020-10-23 | 上海雪湖科技有限公司 | 基于kl散度的fpga离线量化方法 |
CN112396178A (zh) * | 2020-11-12 | 2021-02-23 | 江苏禹空间科技有限公司 | 一种提高cnn网络压缩效率的方法 |
CN112328511A (zh) * | 2021-01-04 | 2021-02-05 | 统信软件技术有限公司 | 一种数据处理方法、计算设备及可读存储介质 |
CN112328511B (zh) * | 2021-01-04 | 2021-05-04 | 统信软件技术有限公司 | 一种数据处理方法、计算设备及可读存储介质 |
CN113010469A (zh) * | 2021-03-18 | 2021-06-22 | 恒睿(重庆)人工智能技术研究院有限公司 | 图像特征提取方法、装置以及计算机可读存储介质 |
CN113010469B (zh) * | 2021-03-18 | 2023-05-26 | 恒睿(重庆)人工智能技术研究院有限公司 | 图像特征提取方法、装置以及计算机可读存储介质 |
CN112990438B (zh) * | 2021-03-24 | 2022-01-04 | 中国科学院自动化研究所 | 基于移位量化操作的全定点卷积计算方法、系统及设备 |
CN112990438A (zh) * | 2021-03-24 | 2021-06-18 | 中国科学院自动化研究所 | 基于移位量化操作的全定点卷积计算方法、系统及设备 |
CN113362292A (zh) * | 2021-05-27 | 2021-09-07 | 重庆邮电大学 | 一种基于可编程逻辑门阵列的骨龄评估方法及系统 |
CN114898108A (zh) * | 2022-03-30 | 2022-08-12 | 哈尔滨工业大学 | 一种基于fpga的cnn模型轻量化方法、目标检测方法及系统 |
CN114898108B (zh) * | 2022-03-30 | 2023-01-06 | 哈尔滨工业大学 | 一种基于fpga的cnn模型轻量化方法、目标检测方法及系统 |
CN114764756A (zh) * | 2022-06-15 | 2022-07-19 | 杭州雄迈集成电路技术股份有限公司 | 去雾模型的量化剪枝方法及系统 |
CN114764756B (zh) * | 2022-06-15 | 2022-09-20 | 杭州雄迈集成电路技术股份有限公司 | 去雾模型的量化剪枝方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110880038B (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110880038B (zh) | 基于fpga的加速卷积计算的系统、卷积神经网络 | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
CN110555450B (zh) | 人脸识别神经网络调整方法和装置 | |
CN112292816B (zh) | 处理核心数据压缩和存储系统 | |
US20200097828A1 (en) | Processing method and accelerating device | |
CN110610237A (zh) | 模型的量化训练方法、装置及存储介质 | |
CN110555508A (zh) | 人工神经网络调整方法和装置 | |
US11544542B2 (en) | Computing device and method | |
US11704556B2 (en) | Optimization methods for quantization of neural network models | |
US20200265300A1 (en) | Processing method and device, operation method and device | |
CN111105017A (zh) | 神经网络量化方法、装置及电子设备 | |
CN114677548A (zh) | 基于阻变存储器的神经网络图像分类系统及方法 | |
CN114970853A (zh) | 一种跨范围量化的卷积神经网络压缩方法 | |
CN110874627A (zh) | 数据处理方法、数据处理装置及计算机可读介质 | |
CN116976428A (zh) | 模型训练方法、装置、设备及存储介质 | |
CN113947206A (zh) | 一种深度神经网络量化方法及系统及装置及介质 | |
CN113850365A (zh) | 卷积神经网络的压缩和移植方法、装置、设备及存储介质 | |
Wong et al. | Low bitwidth CNN accelerator on FPGA using Winograd and block floating point arithmetic | |
US20220405576A1 (en) | Multi-layer neural network system and method | |
CN113177627B (zh) | 优化系统、重新训练系统及其方法及处理器和可读介质 | |
CN113177634B (zh) | 基于神经网络输入输出量化的图像分析系统、方法和设备 | |
CN114492778A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN114154621A (zh) | 一种基于fpga的卷积神经网络图像处理方法及装置 | |
CN113902928A (zh) | 图像特征的提取方法、装置及电子设备 | |
CN113537447A (zh) | 多层神经网络的生成方法、装置、应用方法及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |