CN115564035A - 一种基于fpga的改进神经网络硬件加速方法及装置 - Google Patents
一种基于fpga的改进神经网络硬件加速方法及装置 Download PDFInfo
- Publication number
- CN115564035A CN115564035A CN202211242004.1A CN202211242004A CN115564035A CN 115564035 A CN115564035 A CN 115564035A CN 202211242004 A CN202211242004 A CN 202211242004A CN 115564035 A CN115564035 A CN 115564035A
- Authority
- CN
- China
- Prior art keywords
- convolution
- calculation
- data
- fpga
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 16
- 230000001133 acceleration Effects 0.000 title claims abstract description 15
- 238000004364 calculation method Methods 0.000 claims abstract description 114
- 238000012549 training Methods 0.000 claims abstract description 39
- 238000013138 pruning Methods 0.000 claims abstract description 33
- 238000013139 quantization Methods 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims abstract description 18
- 238000000137 annealing Methods 0.000 claims abstract description 9
- 238000013526 transfer learning Methods 0.000 claims abstract description 8
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 5
- 230000004913 activation Effects 0.000 claims description 19
- 238000010586 diagram Methods 0.000 claims description 17
- 238000010606 normalization Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 8
- 238000005520 cutting process Methods 0.000 claims description 5
- 238000013461 design Methods 0.000 claims description 5
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 238000002360 preparation method Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 10
- 230000002349 favourable effect Effects 0.000 abstract description 2
- 108091006146 Channels Proteins 0.000 description 12
- 230000035945 sensitivity Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 4
- 230000008707 rearrangement Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010206 sensitivity analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect 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/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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- 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)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及图像处理技术领域,尤其涉及一种基于FPGA的改进神经网络硬件加速方法及装置,包括通过迁移学习、数据增强、多尺度训练、余弦退火对SSD_MobilenetV1网络进行训练;对训练后的SSD_MobilenetV1网络进行结构化剪枝,以卷积核或每个网络层为基本单位进行剪枝;采用QAT算法,引入伪量化的操作进行训练,用于模拟量化过程的误差;将量化后的SSD_MobilenetV1网络转换为计算图。本发明同时使用FPGA和ARM处理器对模型进行推理,将卷积网络模型中耗时的卷积算子在FPGA执行,其它算子在ARM处理器中执行,能够实现网络模型的快速推理,并且功耗较低,利于部署到终端。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及一种基于FPGA的改进神经网络硬件加速方法及装置。
背景技术
神经网络已经被广泛应用于图像处理领域进行对目标的识别,而基于深度卷积神经网络的图像处理模型往往具有很大的参数量和计算量。对于传统的通用处理器,比如中央处理器(Central Processing Unit,CPU),有着丰富的控制逻辑,能够进行各种运算,进而支持各种模型的运行,但是只有少量的逻辑计算单元,计算资源较少,当用于网络模型推理时效率低,速度慢;对于并行处理器,比如图形处理器(Graphics Processing Unit,GPU),能够进行数据的并行快速计算,加快模型的推理速度,但是体积大,功耗高,并且价格昂贵,难以应用在终端领域;对于专用硬件ASIC(专用集成电路),能够实现各类资源自行分配,达到更块的计算速度并且更低的功耗,推理时间大大加快,但是由于开发周期长,难以应用新的技术和网络。
而FPGA(现场可编程逻辑阵列),能够达到高推理速度,低功耗,低成本的要求,但是更换网络模型时往往需要重新设计结构,对网络模型的适应性较弱。
发明内容
针对现有算法的不足,本发明同时使用FPGA和ARM处理器对模型进行推理,将卷积网络模型中耗时的卷积算子在FPGA执行,其它算子在ARM处理器中执行,能够实现网络模型的快速推理,并且功耗较低,利于部署到终端,同时对其它除SSD_MobilenetV1以外的卷积神经网络模型也有很好的支持。
本发明所采用的技术方案是:一种基于FPGA的改进神经网络硬件加速方法包括以下步骤:
步骤一、通过迁移学习、数据增强、多尺度训练、余弦退火对SSD_MobilenetV1网络进行训练;
进一步的,余弦退火的函数学习率公式为:
步骤二、对训练后的SSD_MobilenetV1网络进行结构化剪枝,以卷积核或每个网络层为基本单位进行剪枝;
进一步的,包括:从第i个卷积层剪掉mi个卷积核,过程为:
S21、对每个卷积核Fi,j,计算卷积核的权重绝对值之和:
其中,Kl表示卷积核的第l层,ni为卷积核的层数;
S22、根据sj排序;
S23、将mi个权重绝对值之和最小的卷积核以及对应的特征层剪掉,移除下一个卷积层中与剪掉的特征层相关的卷积核;
S24、创建第i层和第i+1层的新的权重矩阵;
S25、当对多层同时剪枝时,采用贪心策略,剪枝过后,模型结构发生变化,再次进行训练,并采用交替剪枝和训练,逐层或逐卷积核剪枝。
步骤三、采用QAT算法,引入伪量化的操作进行训练,用于模拟量化过程带来的误差;
进一步的,具体包括:
在反向传播的过程中,weight在输入卷积之前进行量化,如果有BatchNormalization层,就将Batch Normalization层融入到weight中,激活值在激活函数执行完成之后再进行量化;
其中浮点数和8bit定点数的转换通过仿射映射完成,公式如下:
r=S(q-Z) (3)
其中,r为要量化的实数;q为量化后的整数;n为量化位宽;S和Z分别是量化尺度和零点;arraymax和arraymin分别为要量化的一系列实数中的最大值和最小值。
步骤四、将量化后的SSD_MobilenetV1网络转换为计算图;
基于FPGA的改进神经网络硬件加速方法的装置,包括:AIX总线接口模块、模式配置器模块、数据调度模块、卷积计算模块和数据缓存区,AXI总线接口模块负责FPGA加速器与HPS数据的交换,包括从HPS接收数据,将FPGA加速器的配置信息传输给模式配置器模块,对各个寄存器进行配置准备计算;从DDR中读取卷积计算的特征图和卷积参数,传输到计算数据缓存区;并接收卷积计算结果存储到DDR中;
模式配置器模块是对HPS传入的配置数据进行解析;对FPGA加速器的各个模块进行配置;
进一步的,配置的内容包括卷积计算的类型、特征图的尺寸、输入特征图参数和输入输出数据的地址、是否在卷积计算后进行批标准化和激活处理;
数据调度模块控制FPGA加速器在计算过程中的数据流向,数据调度模块根据输入特征图和卷积参数的地址加载数据至计算数据缓存区;当卷积计算完成后控制计算结果缓存区对卷积计算结果进行接收;
进一步的,数据缓存区包括:计算数据缓存区和计算结果缓存区,计算数据缓存区采用乒乓操作的设计,当某块缓存区接收完成数据开始进行下一步的卷积计算时,数据调度模块会控制另一块计算数据缓存区接收下一卷积数据;
计算结果缓存区采用乒乓操作的设计,当某块计算结果缓存区对上一卷积结果进行存储时,数据调度模块会控制另一块计算结果缓存区接收下一卷积的计算结果。
卷积计算模块对卷积、深度卷积、批标准化和激活算子的计算;卷积和深度卷积根据硬件资源将卷积核按通道的数量进行分组,每组包含16个通道数,计算完一组后再进行下一组的计算;批标准化和激活算子采用流水线的方式,通道数设置为16。
本发明的有益效果:
1、相较于传统的基于ARM处理器的模型推理方法,能够在保证网络模型精度的条件下,充分利用FPGA计算资源,提高网络推理速度;
2、通过迁移学习、数据增强、多尺度训练、余弦退火等训练策略对SSD_MobilenetV1网络进行训练;基于网络模型中每一层的敏感度进行结构化剪枝并且训练;通过Quantization Aware Training方法对模型进行8bit量化压缩模型;在计算图的层面上对网络进行操作融合、prior_box算子离线计算、算子选优操作;利用FPGA的并行计算特性设计加速器对卷积运算进行加速;基于PaddleLite框架进行网络的FPGA+ARM混合推理。
附图说明
图1是本发明的基于FPGA的改进神经网络硬件加速方法流程图;
图2是本发明的伪量化示意图;
图3是本发明的prior_box结构示意图;
图4是本发明的基于FPGA的改进神经网络硬件加速方法的装置结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明,此图为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
如图1所示,一种基于FPGA的改进神经网络硬件加速方法包括以下步骤:
步骤一、通过迁移学习、数据增强、多尺度训练、余弦退火对SSD_MobilenetV1网络进行训练;
采用特征金字塔思想获取SSD_MobilenetV1网络的6个卷积层的特征信息,用来进行多尺度多目标的目标检测;
SSD_MobilenetV1网络训练基于VOC(The PASCAL Visual Object Classes)数据集,训练集和验证集一共包含16551张图片,共计40058个目标。
训练过程中通过迁移学习、数据增强、多尺度训练、余弦退火等方式提高模型精度;
迁移学习:选取MS COCO(Microsoft Common Objects in Context)数据集进行迁移学习,COCO数据集与VOC数据集的场景相似,使用该数据集得到的模型作为预训练模型,使边缘、形状、角落、亮度之类特定的低层特征在任务间分享。
数据增强:通过包括随机翻转、旋转、裁剪、变形缩放、添加噪声、颜色扰动方式进行数据增强,利用有限的数据创造尽可能多的利用价值,从已有的图片中得到新的数据集,大大增加数据集的数量,人为地引入人视觉上的先验知识,提高模型泛化能力和鲁棒性,并且在一定程度上避免样本不均衡。
多尺度训练:通过多尺度训练对输入不同尺度的图像数据集进行训练,让SSD_MobilenetV1网络充分地学习不同分辨率下图像的特征,所用的数据集中针对同一种目标,有多个尺度大小的数据集,用于提升模型对各个尺度的精度。
余弦退火:通过余弦函数来降低学习率,在训练过程中学习率先缓慢下降,然后加速下降,再减速下降,并且当学习率减小到规定值后马上增大到初始值,循环该过程,从而达到冲出局部最优解达到全局最优解的效果,学习率ηt的具体变化如下:
步骤二、对训练后的SSD_MobilenetV1网络进行结构化剪枝,以卷积核或每个网络层为基本单位进行剪枝;
采用基于敏感度的结构化剪枝策略,首先进行敏感度分析,确定SSD_MobilenetV1网络中每层对剪枝的敏感度,对每层独立剪枝并在验证集上对剪枝后的网络进行评估,观察模型精度随剪枝率的变化,斜率比较平缓的层对剪枝的敏感度更高;根据各层的敏感度确定剪枝率,对于敏感度低的层,设置的剪枝比例较大,而对于敏感度高的层,设置剪枝比例很小,甚至不进行剪枝;
确定每层剪枝率之后进行剪枝,根据剪枝率计算出第i层需要减去的通道数mi;用Fi,j表示第i层的第j个卷积核,通过∑|Fi,j|(一个卷积核内所有权值绝对值的和——L1正则项)表征每个层中该卷积核的重要性,剪掉重要性比较低的层。
对于从第i个卷积层剪掉mi个卷积核的过程如下:
1、对每个卷积核Fi,j,计算它的权重绝对值之和:
其中,Kl表示该卷积核的第l层;
2、根据sj排序;
3、将mi个权重绝对值之和最小的卷积核以及对应的特征层剪掉,下一个卷积层中与剪掉的特征层相关的卷积核移除;
4、一个对于第i层和第i+1层的新的权重矩阵被创建,并且剩下的权重参数被复制到新模型中。
当对多层同时剪枝时,为了避免层与层之间的影响,采用贪心策略,即在新的一层的剪枝时,已移除的卷积核不参与计算;剪枝过后,模型结构发生变化,需要再次进行训练以补偿剪枝造成的精度损失,采用交替剪枝和训练的方式,逐层或逐卷积核剪枝,然后再训练,重复多次。
步骤三、采用QAT算法,引入伪量化的操作进行训练,用于模拟量化过程带来的误差;
采用QAT(Quantization Aware Training量化感知训练),引入伪量化的操作进行训练,用于模拟量化过程带来的误差;如图2所示,在反向传播的过程中,weight在输入卷积之前就进行量化,如果有Batch Normalization层,就将Batch Normalization层融入到weight中,激活值在激活函数执行完成之后再进行量化;
其中浮点数和8bit定点数的转换通过仿射映射完成,公式如下:
r=S(q-Z) (3)
其中,r为要量化的实数;q为量化后的整数;n为量化位宽,值取8;S和Z分别是量化尺度和零点,均为量化参数;arraymax和arraymin分别为要量化的一系列实数中的最大值和最小值。
步骤四、将量化后的SSD_MobilenetV1网络转换为计算图;
SSD_MobilenetV1网络中的每个算子或变量都对应计算图的一个节点;其中,算子节点和变量节点相邻;在计算图的基础上,进行以下模型优化操作,包括操作融合、prior_box算子离线计算和算子选优;
得到计算图后,通过操作融合将多个连续的算子合并为一个算子,从而节省中间变量的存储,加快模型的推理;在计算图上的表现形式是将一系列连续的算子节点以及变量节点用一个新的计算节点来代替;其中,对以下两种计算图进行替换,第一种是卷积conv2d+批标准化层batch_norm+激活层relu6;第二种是深度卷积depthwise_conv2d+批标准化层batch_norm+激活层relu6;将第一种计算图的三个计算节点融合到一起,形成一个新的计算节点,公式如下:
ReLU6=min(6,max(0,BNγ,β(xi))) (10)
其中,w为卷积核的一个权重参数;x为输入特征图中的一个数据;m为一个batch中数据的数量,∈为极小量,μB和分别为一个batch中数据的均值和方差;其中γ、β可学习参数,在网络训练过程中得到;对第二种计算图采用同样的方法进行融合。
在计算图中对图3所示的prior_box算子结构进行优化,对计算图中所有算子进行遍历,当检索到prior_box算子时,根据prior_box算子只与特征图的通道数相关而不依赖于特征图的具体数值的特性,计算得到prior_box算子的结果,同时后面连接的flatten2算子和concat算子的结果也可以计算得出。将得到的结果固化为box_coder算子的参数,同时删除prior_box算子以及后面连接的flatten2算子和concat算子,只保留box_coder算子;在模型的推理时,不需要再次进行相关算子的计算,减小计算量从而加快模型推理。
在推理时,本发明采用ARM CPU处理器和FPGA加速器混合推理,卷积算子在处理器端和FPGA加速器端均能执行,通过算子选优根据计算图中算子的类型、输入输出数据类型、计算规模等确定算子的执行设备;在FPGA加速器中执行的算子应该同时满足以下条件:
(1)算子类型为卷积算子或深度卷积算子;
(2)算子的输入和输出数据类型均为int8量化类型,对这些满足条件的算子进行标记,并且对于连续的能在加速器执行的算子进行融合,划分为一个包含多个算子节点的子图。
基于FPGA的改进神经网络硬件加速方法的装置,包括:
SSD_MobilenetV1网络中计算量最大并且耗时最长的操作是卷积操作和深度卷积操作,并且大部分卷积层和深度卷积层后面连接着批标准化层和激活层,计算量占比达到了90%以上。针对于以上特点,本发明设计的FPGA加速器实现的算子有卷积算子、深度卷积算子、批标准化算子和激活算子;FPGA加速器的结构设计如图4所示,主要包括AIX总线接口模块、模式配置器模块、数据调度模块、卷积计算模块、数据缓存区;FPGA加速器不包括HPS和DDR,HPS(硬处理器系统)是ARM处理器及其外设。
AXI总线接口模块负责FPGA加速器与外部数据的交换,是一种面向高性能,低延迟、高带宽的片内总线,拥有独立的地址和数据通道,能对每一个通道进行优化,能够根据需要控制时序通道,可以提高时钟频率、降低延迟;AXI总线接口模块完成的功能包括从HPS接收数据,将FPGA加速器的配置信息传输给模式配置器模块,对各个寄存器进行配置准备计算,其中,各个寄存器为FPGA加速器内部的存储单元,用来存储计算时的配置信息;并且从DDR中读取卷积计算所需要的特征图和卷积参数数据,传输到计算数据缓存区,最后接收卷积计算结果并存储到DDR中。
模式配置器模块是对HPS传入的配置数据进行解析,并且对FPGA加速器的各个模块进行配置,配置内容包括卷积计算的类型、特征图的尺寸、输入特征图参数和输入输出数据的地址、是否在卷积计算后进行批标准化和激活处理;为了增强FPGA加速器的通用性和可靠性,将以上配置内容的参数组成一个参数集,在卷积计算开始前一次性传输到模式配置器模块,再由模式配置器模块对相关的卷积计算模块、数据调度模块进行配置。
数据调度模块控制FPGA加速器在计算过程中的数据流向,在模式配置器模块配置完成后,由HPS发送计算开始信号,数据调度模块接收到信号后开始FPGA加速器的计算;首先数据调度模块根据输入特征图和卷积参数的地址加载数据至计算数据缓存区,计算数据缓存区采用了乒乓操作的设计,例如计算数据缓存区1接收完成数据开始进行下一步的卷积计算时,数据调度模块会控制计算数据缓存区2开始下一卷积数据的接收;当卷积计算完成后,数据调度模块控制计算结果缓存区对计算结果进行接收,对于计算结果缓存区同样采用乒乓操作的设计,例如计算结果缓存区1对上一卷积结果进行存储时,同时控制计算结果缓存区2接收下一卷积的计算结果。
数据缓存区包括计算数据缓存区和计算结果缓存区,由于采用了乒乓操作的设计,各个缓存区内部包括两个相同的存储块;根据SSD_MobilenetV1网络中卷积计算的运算量计算存储块的大小,保证每次卷积计算的数据不会丢失;其中,计算数据缓存区需要接收AXI总线传输的外部的特征值和卷重参数等数据,并且还需要发送至卷积计算模块,计算结果缓存区需要接收卷积计算模块发送的数据,并且还需要通过AXI总线存储进DDR,所以计算数据缓存区和计算结果缓存区均采用异步双口RAM实现。
卷积计算模块是FPGA加速器的核心,包括对卷积、深度卷积、批标准化、激活多个算子的计算;对于卷积和深度卷积,为了充分利用FPGA的计算资源,采用并行计算的方式,首先根据硬件资源将卷积核按通道的数量进行分组,每组包含一定固定数量的通道,通道数设置为16个,计算完一组后再进行下一组的计算;对于批标准化和激活算子,计算量相对卷积计算较少,不涉及多维度的大量数据处理,所以采用流水线的方式,为了提高处理效率,批标准化和激活计算要与卷积计算的并行度保持一致,通道数也设置为16。
基于PaddleLite的FPGA+ARM混合推理;
SSD_MobilenetV1网络的推理由FPGA加速器和ARM处理器共同完成;其中,FPGA加速器进行卷积和深度卷积的计算,ARM处理器进行calib、transpose2、flatten2等算子的计算以及整体的调度;其中,ARM处理器的部署通过PaddleLite完成,PaddleLite是由百度开发的推理引擎,支持多种硬件共同进行推理计算;本发明完成PaddleLite后端接入,并且开发配套的SDK(Software Development Kit)和驱动程序。
将设计的FPGA加速器通过子图接入的方式接入硬件后端,在PaddleLite框架中添加FPGA加速器的子图检测优化器,通过算子优选将对应的卷积和深度卷积算子映射到FPGA加速器上并形成子图;并且注册FPGA加速器的子图Op,在检测得到FPGA的子图后,将其下降为便于部署的硬件图IR,包括对权重数据的重排,使加速器能够接收,然后对子图的输入输出节点分配空间。
SDK中主要进行输入数据重排,驱动调用、输出重排,输入输出重排是将PaddleLite的数据格式重排为FPGA加速器所接受的数据格式,驱动调用是在数据重排完成后调用驱动,将重排后的输入数据和权重数据等传递给驱动,由驱动进行下一步的工作,等到计算完成后驱动返回计算后的输出数据。
驱动程序的主要功能是与FPGA加速器进行交互,将需要的数据在用户空间和内核空间之间进行搬运,并且传递数据在DDR对应的地址给FPGA加速器,包括驱动的初始化、内存空间的申请、卷积参数的传递等,其中对于子图中多个节点的计算采用双缓冲的方式,在进行当前节点的计算时,同时进行下一节点的参数传输,用计算时间掩盖参数传输时间,加快推理速度。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
Claims (6)
1.一种基于FPGA的改进神经网络硬件加速方法,其特征在于,包括以下步骤:
步骤一、通过迁移学习、数据增强、多尺度训练、余弦退火对SSD_MobilenetV1网络进行训练;
步骤二、对训练后的SSD_MobilenetV1网络进行结构化剪枝,以卷积核或每个网络层为基本单位进行剪枝;
步骤三、采用QAT算法,引入伪量化的操作进行训练,用于模拟量化过程的误差;
步骤四、将量化后的SSD_MobilenetV1网络转换为计算图。
5.采用权利要求1-4任意一项所述的基于FPGA的改进神经网络硬件加速方法的装置,其特征在于,包括:AIX总线接口模块、模式配置器模块、数据调度模块、卷积计算模块和数据缓存区,AXI总线接口模块用于FPGA加速器与HPS数据的交换,包括从HPS接收数据,将FPGA加速器的配置信息传输给模式配置器模块,对各个寄存器进行配置准备计算;从DDR中读取卷积计算的特征图和卷积参数,传输到数据缓存区;并接收卷积计算结果存储到DDR中;
模式配置器模块是对HPS传入的配置数据进行解析;对FPGA加速器的模块进行配置;
数据调度模块是控制FPGA加速器在计算过程中的数据流向,数据调度模块根据输入特征图和卷积参数的地址加载数据至计算数据缓存区;当卷积计算完成后控制计算结果缓存区对卷积计算结果进行接收;
卷积计算模块是对卷积、深度卷积、批标准化和激活算子的计算;卷积和深度卷积根据硬件资源将卷积核按通道的数量进行分组,每组包含多个通道数,计算完一组后再进行下一组的计算;批标准化和激活算子采用流水线的方式,设置多个通道数。
6.根据权利要求5所述的基于FPGA的改进神经网络硬件加速方法的装置,其特征在于,数据缓存区包括:计算数据缓存区和计算结果缓存区,计算数据缓存区采用乒乓操作的设计,当某块缓存区接收完成数据开始进行下一步的卷积计算时,数据调度模块会控制另一块计算数据缓存区接收下一卷积数据;
计算结果缓存区采用乒乓操作的设计,当某块计算结果缓存区对上一卷积结果进行存储时,数据调度模块会控制另一块计算结果缓存区接收下一卷积的计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211242004.1A CN115564035A (zh) | 2022-10-11 | 2022-10-11 | 一种基于fpga的改进神经网络硬件加速方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211242004.1A CN115564035A (zh) | 2022-10-11 | 2022-10-11 | 一种基于fpga的改进神经网络硬件加速方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115564035A true CN115564035A (zh) | 2023-01-03 |
Family
ID=84745955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211242004.1A Pending CN115564035A (zh) | 2022-10-11 | 2022-10-11 | 一种基于fpga的改进神经网络硬件加速方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115564035A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116739054A (zh) * | 2023-06-19 | 2023-09-12 | 南京航空航天大学 | 一种基于fpga的a3c深度强化学习算法加速器 |
-
2022
- 2022-10-11 CN CN202211242004.1A patent/CN115564035A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116739054A (zh) * | 2023-06-19 | 2023-09-12 | 南京航空航天大学 | 一种基于fpga的a3c深度强化学习算法加速器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112101083B (zh) | 使用神经网络进行弱监督的对象检测方法及系统 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN108470190B (zh) | 基于fpga定制脉冲神经网络的图像识别方法 | |
KR102142889B1 (ko) | 스파스 연결용 인공 신경망 계산 장치와 방법 | |
US20200151288A1 (en) | Deep Learning Testability Analysis with Graph Convolutional Networks | |
CN109388777A (zh) | 一种用于经优化的Winograd卷积加速器的系统和方法 | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
CN112529146B (zh) | 神经网络模型训练的方法和装置 | |
CN114127740A (zh) | 人工智能模型的分布式训练中的数据并行性 | |
CN113449859A (zh) | 一种数据处理方法及其装置 | |
CN114127702A (zh) | 在存储器受限设备上执行大型人工智能模型 | |
CN114127741A (zh) | 用于人工智能建模的动态多层执行 | |
US20240135174A1 (en) | Data processing method, and neural network model training method and apparatus | |
EP3678037A1 (en) | Neural network generator | |
CN108304926B (zh) | 一种适用于神经网络的池化计算装置及方法 | |
CN114925320B (zh) | 一种数据处理方法及相关装置 | |
CN113051216A (zh) | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 | |
CN114792359A (zh) | 渲染网络训练和虚拟对象渲染方法、装置、设备及介质 | |
CN112085056A (zh) | 目标检测模型生成方法、装置、设备及存储介质 | |
US20230237342A1 (en) | Adaptive lookahead for planning and learning | |
CN114429208A (zh) | 基于残差结构剪枝的模型压缩方法、装置、设备及介质 | |
CN113792621A (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN115564035A (zh) | 一种基于fpga的改进神经网络硬件加速方法及装置 | |
Loni et al. | Designing compact convolutional neural network for embedded stereo vision systems |
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 |