本发明属于神经网络模型计算,具体为一种嵌入式神经网络二值化量化方法及相关设备。
背景技术:
1、神经网络算法数据类型为浮点型,为了将神经网络算法部署在计算资源有限的嵌入式设备上并实现高效计算,需要将浮点型神经网络模型量化为整型网络。二值化神经网络是将神经网络的激活/权重量化为1比特,即将激活/权重转换为-1(0)或+1,能够大幅降低神经网络模型的存储和计算资源需求,在计算资源有限的端侧推理场景下有着重要的应用前景。已有神经网络模型的二值化量化方法存在以下问题:
2、(1)在对激活/权值进行1比特量化时,采用取绝对值平均值的规则计算二值化神经网络的量化参数,无法对量化参数进行自适应优化,已有的动态参数生成方法也仅针对二值化神经网络的激活层参数,缺乏对量化参数的自动化调整方法;
3、(2)已有二值化方法仅适用于将数据二值化为-1和+1,缺乏二值化为0和+1的方法,限制了二值化神经网络的应用范围;
4、(3)已有方法聚焦如何训练二值化网络,在嵌入式端部署时,仅按照8比特的反量化计算过程迁移到1比特,造成性能的大幅下降,欠缺在嵌入式端整型推理二值化模型的有效方法。
技术实现思路
1、本发明的提供了一种嵌入式神经网络二值化量化方法及相关设备,解决了现有二值化方法应用范围小,造成性能大幅下降的问题。
2、为实现上述目的,本发明提供如下技术方案:
3、一种嵌入式神经网络二值化量化方法,包括:
4、选取若干图像为校准集,作为卷积层的输入,并获得卷积层的输出;
5、对卷积层输入、输出和权重进行初始化量化参数计算;
6、对初始化权重量化参数进行优化;
7、根据卷积层输入量化参数将卷积层输入转换成整型,根据优化后的权重量化参数将权重转换为整型,根据初始化的卷积层输入量化参数、输出量化参数和优化后的权重量化参数获得反量化计算参数,基于转换为整型的卷积层输入和卷积层权重执行卷积获得计算结果,然后根据计算结果进行反量化计算得到最终输出。
8、优选地,对卷积层输入和输出进行初始化量化参数计算具体为:
9、求得卷积层输入的最大值阈值为maxin、输入的最小值阈值为minin、输出的最大值阈值为maxout、输出的最小值阈值为minout,如果max和min同为正,令min=0;如果max和min同为负,令max=0,计算输入和输出的初始量化参数sin、din、sout、dout;
10、bwin、bwout分别为输入和输出的位宽;
11、计算输入和输出的初始量化参数sin、din、sout、dout的过程为:
12、bwin不为1时,
13、bwin=1,二值化为-1和+1时,sin=输入数据绝对值的平均值;
14、bwin=1,二值化为0和+1时,sin=输入数据正值的平均值;
15、bwin不为1时,
16、bwin=1时,din=0;
17、bwout不为1时,
18、bwout=1,二值化为-1和+1时,sout=输出数据绝对值的平均值;
19、bwout=1,二值化为0和+1时,sout=输出数据正值的平均值;
20、bwout不为1时,
21、bwout=1时,dout=0 (13)。
22、优选地,对权重进行初始化量化参数计算具体为:
23、求得权重的绝对值的最大值为阈值,计算权重的量化参数sw,bww为权重的位宽;
24、bww不为1时,
25、bww=1,二值化为-1和+1时,sw=权重绝对值的平均值;
26、bww=1,二值化为0和+1时,sw=权重正值的平均值。
27、优选地,对初始化权重量化参数进行优化具体为:
28、
29、其中,ceil为向上取整函数,sin为输入的量化参数,sout为输出的量化参数,sw为权重的量化参数。
30、优选地,将卷积层输入和卷积层权重转换为整型具体为:
31、对浮点型输入inputfloat按照输入的阈值进行截断,将浮点型输入和权重转换成整型输入ininteger和权重winteger,其中max为取最大值操作,min为取最小值操作;
32、bwin不为1时:inputfloat=max(min(inputfloat,maxin),minin);
33、bwin不为1时:
34、bwin=1时,或者
35、bww不为1时:
36、bww=1时,或者
37、优选地,根据初始化的卷积层输入量化参数、输出量化参数和优化后的权重量化参数获得反量化计算参数具体为:
38、反量化计算参数包括移位参数、乘参数以及加参数,移位参数、乘参数以及加参数计算方法如下:
39、
40、
41、将卷积层的浮点型biasfloat换算为加参数,修改biasfloat为bias new float;
42、bias_new_float=biasfloat+din·∑wfloat;
43、
44、其中,∑wfloat为以输出通道为单位对卷积核求和,即有多少个输出通道,就计算多少个∑wfloat值;
45、其中,sin为输入的量化参数,sout为输出的量化参数,sw为优化后权重的量化参数,max为取最大值操作,min为取最小值操作。
46、优选地,基于转换为整型的卷积层输入和卷积层权重执行卷积获得计算结果,然后根据计算结果进行反量化计算得到最终输出具体为:
47、
48、其中,ininteger为转化为整型的卷积层输入,winteger为转化为整型的卷积层输出;
49、bwout不为1时,
50、bwout=1时,或者
51、一种嵌入式神经网络二值化量化系统,包括:
52、输入模块:用于选取若干图像为校准集,作为卷积层的输入,并获得卷积层的输出;
53、初始化量化参数计算模块:用于对卷积层输入、输出和权重进行初始化量化参数计算;
54、优化模块:用于对初始化的权重量化参数进行优化;
55、整型计算模块:用于将卷积层输入和卷积层权重转换为整型,根据初始化的卷积层输入量化参数、输出量化参数和优化后的权重量化参数获得反量化计算参数,基于转换为整型的卷积层输入和卷积层权重执行卷积获得计算结果,然后根据计算结果进行反量化计算得到最终输出。
56、一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现一种嵌入式神经网络二值化量化方法的步骤。
57、一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现一种嵌入式神经网络二值化量化方法的步骤。
58、与现有技术相比,本发明具有以下有益效果:本发明提出了一种嵌入式神经网络二值化量化方法,通过选取若干图像为校准集,作为卷积层的输入,并获得卷积层的输出,对卷积层输入、输出和权重进行初始化量化参数计算,对初始化的权重量化参数进行优化自适应调整,最后通过整型和推理计算,有效减少整型推理造成的信息损失,提升神经网络模型在嵌入式端的计算性能。在计算资源有限的前提下,能够在减少模型计算量、参数规模和存储消耗的同时有效提升部署后神经网络模型的计算精度,使神经网络模型能够在资源受限的嵌入式端快速便捷部署实施,对神经网络算法的工程化实现具有重要的意义。
1.一种嵌入式神经网络二值化量化方法,其特征在于,包括:
2.根据权利要求1所述的一种嵌入式神经网络二值化量化方法,其特征在于,对卷积层输入和输出进行初始化量化参数计算具体为:
3.根据权利要求1所述的一种嵌入式神经网络二值化量化方法,其特征在于,对权重进行初始化量化参数计算具体为:
4.根据权利要求1所述的一种嵌入式神经网络二值化量化方法,其特征在于,对初始化权重量化参数进行优化具体为:
5.根据权利要求1所述的一种嵌入式神经网络二值化量化方法,其特征在于,将卷积层输入和卷积层权重转换为整型具体为:
6.根据权利要求1所述的一种嵌入式神经网络二值化量化方法,其特征在于,根据初始化的卷积层输入量化参数、输出量化参数和优化后的权重量化参数获得反量化计算参数具体为:
7.根据权利要求6所述的一种嵌入式神经网络二值化量化方法,其特征在于,基于转换为整型的卷积层输入和卷积层权重执行卷积获得计算结果,然后根据计算结果进行反量化计算得到最终输出具体为:
8.一种嵌入式神经网络二值化量化系统,其特征在于,包括:
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述一种嵌入式神经网络二值化量化方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述一种嵌入式神经网络二值化量化方法的步骤。
