一种适应于资源受限的FPGA实现BNN前向推理的方法及系统与流程
未命名
10-21
阅读:68
评论:0
一种适应于资源受限的fpga实现bnn前向推理的方法及系统
技术领域
1.本发明涉及并行计算技术领域,尤其涉及一种适应于资源受限的fpga实现bnn前向推理的方法及系统。
背景技术:
2.二值化神经网络(bnn)指的是仅使用+1和-1两个值来表示weights和activations的神经网络,bnn方法不仅极大的减少了对内存容量、计算资源的需求,同时也改变了传统卷积的计算方式,降低了运算的复杂度和功耗。
3.而fpga在硬件架构设计方面很灵活,可以支持bitswise的高效运算,而且功耗很低,其对应的终极版的专用集成电路asic更是如此,可以比fpga运算更高效,更节能。目前用fpga设计ai加速器基本都是以xilinx的器件和开发工具为主,而他们也为二值化神经网络专门设计了一款架构finn,但是在实现bnn前向推理存在乘法器、存储器的开销较大,运行功耗高的问题。
技术实现要素:
4.为了解决上述问题,本发明的目的在于提供一种适应于资源受限的fpga实现bnn前向推理的方法,能够大幅降低乘法器、存储器的开销,同时大大降低运行功耗。
5.为实现上述目的,本发明采用以下技术方案:
6.一种适应于资源受限的fpga实现bnn前向推理的方法,包括
7.步骤s1:读取特征图信息,权值信息存入fpga的片内ram中;
8.步骤s2:将首层输入图像先进行归一化去均值后进行8bit量化进入中间网络,所述中间网络分为多个宏卷积层,采用二值化权值和激活函数,每个卷积层按照卷积、批正则化、激活顺序进行处理;
9.步骤s3:最后的全连接层采用8bit量化精度进行相乘后判决输出。
10.进一步的,所述步骤s1中从外部存储器或者外部接口直接读取特征图和权值信息,并对权值信息进行二值化处理。
11.进一步的,所述步骤s2将首层输入图像(xr,xg,xb)做归一化去均值再进行8bit量化,具体如下:
12.xr1=(xr-min(xr))/(max(xr)-min(xr));
13.xr2=xr1-mean(xr1);
14.xg1=(xg-min(xg))/(max(xg)-min(xg));
15.xg 2=xg 1-mean(xg 1);
16.xb1=(xb-min(xb))/(max(xb)-min(xb));
17.xb 2=xb 1-mean(xb 1);
18.然后对xr2、xg2、xb2进行带符号的8bit常规线性量化处理。
19.进一步的,所述宏卷积层中的卷积操作,具体如下:
20.将特征图和权值中的-1映射为0;
21.然后采用比特同或xnor操作取代乘法运算,最后对同或结果求和后乘2,并与总长度相减,获得卷积结果。
22.进一步的,所述宏卷积层中的批正则化、激活进行结合处理取代bn处理中乘法和除法的操作,具体如下:
23.在前向推理中bn层的处理为:
[0024][0025]
其中μ表示输入向量均值,σ表示输入向量的标准差,x为输入,y为bn输出,γ和β为训练过程中学习到的参数,用于对激活值进行仿射变换,以保证对原有输入的还原;
[0026]
前向推理的激活函数:
[0027][0028]
结合bn层和激活,得到
[0029][0030]
其中σ》0,γ和β为已知参数,且γ≠0,且在做前向推理过程中是不变的,因此得到:
[0031][0032]
即当γ>0和γ<0时得到不同的计算公式。
[0033]
进一步的,所述全连接层为8bit精度的特征图和权值的相乘处理,采用fpga中的dsp完成乘法操作,通过输入数据的组合输入,达到1个dsp能同时完成两个数据的乘法操作,针对同一个权值系数b,用1个dsp模块同时完成两个特征值的乘法,即a1xb,与a2xb同时用一个dsp模块完成。
[0034]
一种适应于资源受限的fpga实现bnn前向推理系统,包括处理器、存储器以及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时,具体执行如上所述的一种适应于资源受限的fpga实现bnn前向推理的方法中的步骤。
[0035]
一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如上所述的方法步骤。
[0036]
本发明具有如下有益效果:
[0037]
本发明针对计算、存储资源受限的fpga,设计了一种bnn前向推理实现方法,可满足计算和存储资源受限的fpga实现bnn前向推理的需求,大幅降低乘法器、存储器的开销,同时大大降低运行功耗。。
附图说明
[0038]
图1为本发明方法流程图;
[0039]
图2为本发明一实施例中bnn神经网络主体架构框图。
具体实施方式
[0040]
以下结合附图和具体实施例对本发明做进一步详细说明:
[0041]
本发明提供一种适应于资源受限的fpga实现bnn前向推理的方法,包括如下步骤:
[0042]
步骤s1:读取特征图信息,权值信息存入fpga的片内ram中;
[0043]
步骤s2:将首层输入图像先进行归一化去均值后进行8bit量化进入中间网络,所述中间网络分为多个宏卷积层,采用二值化权值和激活函数,每个卷积层按照卷积、批正则化、激活顺序进行处理;
[0044]
步骤s3:最后的全连接层采用8bit量化精度进行相乘后判决输出。
[0045]
优选的,在本实施例中,步骤s1中从外部存储器或者外部接口直接读取特征图和权值信息,并对权值信息进行二值化处理。
[0046]
优选的,在本实施例中,步骤s2将首层输入图像(xr,xg,xb)做归一化去均值再进行8bit量化,具体如下:
[0047]
xr1=(xr-min(xr))/(max(xr)-min(xr));
[0048]
xr2=xr1-mean(xr1);
[0049]
xg1=(xg-min(xg))/(max(xg)-min(xg));
[0050]
xg 2=xg 1-mean(xg 1);
[0051]
xb1=(xb-min(xb))/(max(xb)-min(xb));
[0052]
xb 2=xb 1-mean(xb 1);
[0053]
然后对xr2、xg2、xb2进行带符号的8bit常规线性量化处理。
[0054]
在本实施例中,实现bnn的前向推理运算中,中间的宏卷积层根据不同功能和用途进行组合,但基本单元的宏卷积层都是一样的,因此本方法中重点介绍基本单位宏卷积层,另外可能根据不同用途的网络涉及到池化、softmax等按照通用的方法进行实现,在此不再赘述。
[0055]
优选的,宏卷积层中的卷积操作,具体如下:
[0056]
将特征图和权值中的-1映射为0;然后采用比特同或xnor操作取代乘法运算,最后对同或结果求和后乘2,并与总长度相减,获得卷积结果。如卷积核是3x3,二值化系数为(1,-1,1;-1,1,-1;1,1,-1),而对应特征值进行卷积的区域值为(-1,-1,1;1,1,1;-1,1,-1),按照正常的卷积乘加=1*(-1)+(-1)*(-1)+1*1+(-1)*1+1*1+(-1)*1+1*(-1)+1*1+(-1)*(-1)=1;按照本实现方法不需要做乘法运算,先将-1映射为0,即二值化系数为(1,0,1;0,1,0;1,1,0),特征值卷积区域值为(0,0,1;1,1,1;0,1,0),然后进行同或xnor操作,得到(0,1,1,0,1,0,0,1,1),对同或结果求和后乘2=sum(0,1,1,0,1,0,0,1,1)x2=10,最后与总长度相减,得到10-9=1,与正常卷积乘加相同的结果。
[0057]
优选的,宏卷积层中的批正则化、激活进行结合处理取代bn处理中乘法和除法的操作,具体如下:
[0058]
在前向推理中bn层的处理为:
[0059][0060]
其中μ表示输入向量均值,σ表示输入向量的标准差,x为输入,y为bn输出,γ和β为训练过程中学习到的参数,用于对激活值进行仿射变换,以保证对原有输入的还原;
[0061]
前向推理的激活函数:
[0062][0063]
结合bn层和激活,得到
[0064][0065]
其中σ》0,γ和β为已知参数,且γ≠0,且在做前向推理过程中是不变的,因此得到:
[0066][0067]
即当γ>0和γ<0时得到不同的计算公式。其中由于γ和β为已知参数,因此在具体实现过程中为做前向推理过程前作为一个固定的值输入的,因此实际在做前向推理时,只需要完成与这个固定值与σ相乘的操作,同时完成与μ的减法操作,最后与x进行大小比较即可。由此可见与传统的bn相比,不用做除法运算,只做一次乘法运算即可,大大降低了运算开销。
[0068]
全连接层为8bit精度的特征图和权值的相乘处理,采用fpga中的dsp完成乘法操作,通过输入数据的组合输入,达到1个dsp能同时完成两个数据的乘法操作,针对同一个权值系数b,用1个dsp模块同时完成两个特征值的乘法,即a1xb,与a2xb同时用一个dsp模块完成。如xilinx的fpga,dsp模块的位宽为输入a为25bit即a[24:0],输入b为18bit即b[17:0],那么对两个乘法进行组合的方法是a1=a[24:17],a2=a[7:0],b=b[7:0],即a的25bit的组合是a=[a1,a[16:8],a2]。这样dsp模块进行一次乘法操作时完成了两个同系数的乘法操作,降低了运行开销,提高的运行速度。
[0069]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0070]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程
图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0071]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0072]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0073]
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。
技术特征:
1.一种适应于资源受限的fpga实现bnn前向推理的方法,其特征在于,包括步骤s1:读取特征图信息,权值信息存入fpga的片内ram中;步骤s2:将首层输入图像先进行归一化去均值后进行8bit量化进入中间网络,所述中间网络分为多个宏卷积层,采用二值化权值和激活函数,每个卷积层按照卷积、批正则化、激活顺序进行处理;步骤s3:最后的全连接层采用8bit量化精度进行相乘后判决输出。2.根据权利要求1所述的一种适应于资源受限的fpga实现bnn前向推理的方法,其特征在于,所述步骤s1中从外部存储器或者外部接口直接读取特征图和权值信息,并对权值信息进行二值化处理。3.根据权利要求1所述的一种适应于资源受限的fpga实现bnn前向推理的方法,其特征在于,所述步骤s2将首层输入图像(xr,xg,xb)做归一化去均值再进行8bit量化,具体如下:xr1=(xr-min(xr))/(max(xr)-min(xr));xr2=xr1-mean(xr1);xg1=(xg-min(xg))/(max(xg)-min(xg));xg2=xg1-mean(xg1);xb1=(xb-min(xb))/(max(xb)-min(xb));xb2=xb1-mean(xb1);然后对xr2、xg2、xb2进行带符号的8bit常规线性量化处理。4.根据权利要求1所述的一种适应于资源受限的fpga实现bnn前向推理的方法,其特征在于,所述宏卷积层中的卷积操作,具体如下:将特征图和权值中的-1映射为0;然后采用比特同或xnor操作取代乘法运算,最后对同或结果求和后乘2,并与总长度相减,获得卷积结果。5.根据权利要求1所述的一种适应于资源受限的fpga实现bnn前向推理的方法,其特征在于,所述宏卷积层中的批正则化、激活进行结合处理取代bn处理中乘法和除法的操作,具体如下:在前向推理中bn层的处理为:其中μ表示输入向量均值,σ表示输入向量的标准差,x为输入,y为bn输出,γ和β为训练过程中学习到的参数,用于对激活值进行仿射变换,以保证对原有输入的还原;前向推理的激活函数:结合bn层和激活,得到
其中σ>0,γ和β为已知参数,且γ≠0,且在做前向推理过程中是不变的,因此得到:即当γ>0和γ<0时得到不同的计算公式。6.根据权利要求1所述的一种适应于资源受限的fpga实现bnn前向推理的方法,其特征在于,所述全连接层为8bit精度的特征图和权值的相乘处理,采用fpga中的dsp完成乘法操作,通过输入数据的组合输入,达到1个dsp能同时完成两个数据的乘法操作,针对同一个权值系数b,用1个dsp模块同时完成两个特征值的乘法,即a1xb,与a2xb同时用一个dsp模块完成。7.一种适应于资源受限的fpga实现bnn前向推理系统,其特征在于,包括处理器、存储器以及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时,具体执行如权利要求1-6任一项所述的一种适应于资源受限的fpga实现bnn前向推理的方法中的步骤。8.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~6任意一项的方法步骤。
技术总结
本发明涉及一种适应于资源受限的FPGA实现BNN前向推理的方法及系统,包括步骤S1:读取特征图信息,权值信息存入FPGA的片内RAM中;步骤S2:将首层输入图像先进行归一化去均值后进行8bit量化进入中间网络,所述中间网络分为多个宏卷积层,采用二值化权值和激活函数,每个卷积层按照卷积、批正则化、激活顺序进行处理;步骤S3:最后的全连接层采用8bit量化精度进行相乘后判决输出。本发明能够大幅降低乘法器、存储器的开销,同时大大降低运行功耗。同时大大降低运行功耗。同时大大降低运行功耗。
技术研发人员:李强 赵峰 庄莉 王秋琳 伍臣周 宋立华 邱镇 黄晓光 陈江海
受保护的技术使用者:福建亿榕信息技术有限公司
技术研发日:2023.07.27
技术公布日:2023/10/19
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/