一种基于FPGA的孪生神经网络硬件加速方法和IP核技术

技术编号:36755012 阅读:39 留言:0更新日期:2023-03-04 10:45
本申请的实施例提供了一种基于FPGA的孪生神经网络硬件加速方法和IP核,该方法包括:对训练完成的孪生神经网络的前向传播过程进行IP核封装,并设计输入输出接口、数据存储方式以及顶层函数;优化封装后的IP核:对所有参数的数据类型进行量化处理;按照卷积核大小和卷积核通道数两个维度对卷积过程进行展开,并对所有循环过程采用pipeline流水化方式实现资源的分时复用;以及对模型各层中间计算结果进行分块处理,并将两条网络分支独立并行执行;将优化后的IP核进行RTL封装。本申请通过对网络进行算法封装和并行化、流水化处理,映射到FPGA平台上,利用硬件换取效率的方法对识别过程进行加速,在保证准确率的同时大幅缩短了运行时间。运行时间。运行时间。

【技术实现步骤摘要】
一种基于FPGA的孪生神经网络硬件加速方法和IP核


[0001]本申请的实施例涉及神经网络
,尤其涉及一种基于FPGA的孪生神经网络硬件加速方法和IP核。

技术介绍

[0002]神经网络随着网络层数的增加,其参数量也会随之增加,且计算过程大部分为乘加运算。对于传统的CPU架构来说,其工作方式为串行处理过程,很难充分发挥出卷积神经网络并行化计算的优势,随着参数的增加导致结构更为复杂,对于CPU消耗的时间成本较大。GPU虽然具有较高吞吐量和内存带宽,但受限于冯诺依曼结构,无法发挥并行运算的特点。

技术实现思路

[0003]本申请的实施例提供了一种基于FPGA的孪生神经网络硬件加速方法和IP核,通过FPGA硬件层面的加速,在保证了准确率的同时大幅缩短了运行时间。
[0004]在本申请的第一方面,提供了一种基于FPGA的孪生神经网络硬件加速方法,包括:
[0005]对训练完成的孪生神经网络的前向传播过程进行IP核封装,并设计输入输出接口、数据存储方式以及顶层函数;
[0006]优化封装后的IP核:
[0007]将所有参数的数据类型量化为ap_fixed<11,6,AP_RND,AP_SAT>;
[0008]按照卷积核大小和卷积核通道数两个维度对卷积过程进行展开,并对所有循环过程采用pipeline流水化方式实现资源的分时复用;以及
[0009]对模型各层中间计算结果进行分块处理,并将两条网络分支独立并行执行;
[0010]将优化后的IP核进行RTL封装。
[0011]在一种可能的实现方式中,所述训练完成的孪生神经网络模型包括3个卷积层、3个池化层、1个平坦层以及1个全连接层,所述全连接层包括神经元个数分别为128、512、128的三层隐蔽层。
[0012]在一种可能的实现方式中,所述前向传播过程包括卷积层计算过程、池化层计算过程、平坦层计算过程、全连接层计算过程、两条网络分支之间的欧式距离计算过程以及判断两条网络分支的输出结果是否为同类目标的计算过程。
[0013]在一种可能的实现方式中,所述欧式距离计算模块用于:
[0014]采用如下公式计算两条网络分支间的欧式距离:
[0015]D
W(
X1,X2)=||G
W
(X1)

G
W
(X2)||
[0016]其中,(X1,X2)为输入的样本对,D
W
(X1,X2)为样本X1和X2之间的欧式距离,G
W
(X1)为输入为X1的网络分支的输出结果,G
W
(X2)为输入为X2的网络分支的输出结果。
[0017]在一种可能的实现方式中,所述训练完成的孪生神经网络模型的损失函数如下:
[0018][0019]其中,L为样本对个数,y
l
为数据集的标签,d为样本对质检的欧式距离,margin为预设阈值。
[0020]在一种可能的实现方式中,所述输入输出接口的总线为AXI总线、协议为AXI4、接口类型为AXI

GP。
[0021]在一种可能的实现方式中,所述数据存储方式为Brust方式。
[0022]在一种可能的实现方式中,确定数据类型的方式:基于拟选择的数据类型和浮点型数据,采用下式计算两者之间的差值Deviation,确定所述数据类型为ap_fixed<11,6,AP_RND,AP_SAT>:
[0023][0024]其中,R
float
[i](+)
为模型参数和计算结果均为标准浮点型数据时第i个数据经过前向传播计算出的分支1的结果,R
float
[i](

)
为模型参数和计算结果均为标准浮点型数据时第i个数据经过前向传播计算出的分支2的结果,R
ap_fixed
[i](+)
为数据类型量化处理后第i个数据经过前向传播输出的分支1的结果,R
ap_fixed
[i](

)
为数据类型量化处理后第i个数据经过前向传播输出的分支2的结果;
[0025]基于确定的所述数据类型对数据进行量化。
[0026]在一种可能的实现方式中,还包括:将经RTL封装后的IP核部署到芯片上,采用评估样本对IP核进行测试,得到识别率曲线;
[0027]将所述识别率曲线与未经优化的标准网络的识别曲线进行对比,从而完成对经RTL封装后的IP核的测试。
[0028]在本申请的第二方面,提供了一种IP核,所述IP核采用如第一方面中任一项所述的方法设计得到。
[0029]在本申请实施例提供的基于FPGA的孪生神经网络硬件加速方法和IP核中,对训练完成的孪生神经网络的前向传播过程进行IP核封装,并设计输入输出接口、数据存储方式以及顶层函数;优化封装后的IP核:将数据类型量化为ap_fixed<11,6,AP_RND,AP_SAT>;按照卷积核大小和卷积核通道数两个维度对卷积过程进行展开,并对所有循环过程采用pipeline流水化方式实现资源的分时复用;以及对模型各层中间计算结果进行分块处理,并将两条网络分支独立并行执行;将优化后的IP核进行RTL封装。通过对其进行算法封装和并行化、流水化处理,映射到FPGA平台上,利用硬件换取效率的方法对识别过程进行加速,在保证准确率的同时大幅缩短了运行时间。
[0030]应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本申请的实施例的关键或重要特征,亦非用于限制本申请的范围。本申请的其它特征将通过以下的描述变得容易理解。
附图说明
[0031]结合附图并参考以下详细说明,本申请各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
[0032]图1示出了根据本申请的实施例的基于FPGA的孪生神经网络硬件加速方法的流程图;
[0033]图2示出了根据本申请的实施例的孪生神经网络的IP核设计结构框图;
[0034]图3示出了根据本申请的实施例的孪生神经网络的权重和偏差数值统计分布图;
[0035]图4示出了根据本申请的实施例的孪生神经网络的中间计算值的数据统计分布图;
[0036]图5示出了根据本申请的实施例的孪生神经网络的循环展开示意图;
[0037]图6示出了根据本申请的实施例的孪生神经网络的循环分块示意图;
[0038]图7示出了根据本申请的实施例的I P核准确性验证流程示意图;
[0039]图8示出了根据本申请的实施例的I P核预测与标准网络预测的抗多普勒频偏性能的结果对比图;
[0040]图9示出了根据本申请的实施例的I P核预测与标准网络预测的抗噪声性能的结果对比图;...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的孪生神经网络硬件加速方法,其特征在于,包括:对训练完成的孪生神经网络的前向传播过程进行IP核封装,并设计输入输出接口、数据存储方式以及顶层函数;优化封装后的IP核:将所有参数的数据类型量化为ap_fixed<11,6,AP_RND,AP_SAT>;按照卷积核大小和卷积核通道数两个维度对卷积过程进行展开,并对所有循环过程采用pipeline流水化方式实现资源的分时复用;以及对模型各层中间计算结果进行分块处理,并将两条网络分支独立并行执行;将优化后的IP核进行RTL封装。2.根据权利要求1所述的方法,其特征在于,所述训练完成的孪生神经网络模型包括两条网络分支,每条网络分支包括3个卷积层、3个池化层、1个平坦层以及1个全连接层,所述全连接层包括神经元个数分别为128、512、128的三层隐蔽层。3.根据权利要求2所述的方法,其特征在于,所述前向传播过程包括卷积层计算过程、池化层计算过程、平坦层计算过程、全连接层计算过程、两条网络分支之间的欧式距离计算过程以及判断两条网络分支的输出结果是否为同类目标的计算过程。4.根据权利要求3所述的方法,其特征在于,所述欧式距离计算模块用于:采用如下公式计算两条网络分支间的欧式距离:D
W
(X1,X2)=||G
W
(X1)

G
W
(X2)||其中,(X1,X2)为输入的样本对,D
W
(X1,X2)为样本X1和X2之间的欧式距离,G
W
(X1)为输入为X1的网络分支的输出结果,G
W
(X2)为输入为X2的网络分支的输出结果。5.根据权利要求3所述的方法,其特征在于,所述训练完成的孪生神经网络模型的损失函数如下:其中,L为样本对个...

【专利技术属性】
技术研发人员:赵旭琛
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1