一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络量化方法、系统、存储介质及终端与流程

2021-12-04 01:24:00 来源:中国专利 TAG:


1.本发明涉及深度学习神经网络技术领域,尤其涉及一种深度学习神经网络量化方法、系统、存储介质及终端。


背景技术:

2.深度学习(deep learning,dl)是机器学习(machine learning,ml,)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能 (artificial intelligence,ai,)。深度学习目前在学术上和工业应用上都取得了巨大成就。目前深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。尤其是在计算机视觉领域成就更是巨大。2012年alexnet在图像分类上的巨大成功引爆了整个人工智能领域。在2015年,以残差网络(resnet)为代表的深度学习网络已经在分类上取得了媲美人类的成果。然而在工业应用时,相关深度学习网络的庞大系数和复杂运算,加上硬件算力和功耗的限制导致深度学习网络的应用面临着一定困难。尤其是在边缘计算领域,低算力、低功耗是常态要求。在这种情况下,各方面对深度学习网络的轻量化都需要做了一定改进。具体应用时,根据任务难度限制网络的深度和卷积层系数的通道数和卷积核大小等措施可以减小网络的应用难度。除了上述网络设计层面上的减量化处理,在应用时,采取网络剪枝、参数压缩和降低数据比特宽度等措施也可以很好的减少算力和功耗压力。
3.在利用低比特数进行网络运算的尝试中,目前最极端的努力是使用1bit或者2bit的数据来参与运算。这方面有大量论文陆续发表,但是从实际的反馈来看,目前的这方面的尝试只在特定网络和特定任务获得了成功应用,在大部分网络和大部分应用场景中还需要继续研究。目前较为成熟的低比特数运算是利用8bit数据来替代原始的32bit的浮点数来实现深度学习网络。大量的深度学习的硬件芯片也基本默认这一规则。利用8bit的整数代替32bit的浮点数理论上可以立即获得4倍的收益,即内存使用降低为原来的四分之一,运算速度也可大幅提高。在利用8bit整数替代浮点数运算的应用中,其关键技术就是在于如何重新量化神经网络。
4.为了实现网络量化,目前的量化算法分为两类,一类是训练好的网络的直接量化到8bit数据大小,不再重新训练网络和调整。另一类是量化过程和重新训练并举,具体的实施方式多种多样。比如先量化再以量化精度的浮点数形式去二次训练,典型的就是训练中引入量化(quantizationaware training)技术。再比如,量化后通过对系数分类处理,只优化其中一部分,涉及多次迭代。无论哪一种都必须经过先行量化这步,第一次量化的优劣,会决定神经网络后续优化的难度。
5.针对上述问题,为了使得网络获得更好的量化效果,有必要提供一种新型的神经网络量化方法、系统、存储介质及终端以解决现有技术中存在的上述问题。


技术实现要素:

6.本发明的目的在于提供一种神经网络量化方法、系统、存储介质及终端,有效提高了量化后神经网络的运行速度,减小了内存空间。
7.第一方面,为实现上述目的,本发明的所述一种神经网络量化方法,包括:
8.将待处理图片输入到原始网络,运行所述原始网络以获取所述待处理图片各层的原始浮点数据;
9.对所述待处理图片各层的所述原始浮点数据进行简化处理得到若干个原始定点,提取所述原始定点的各层数据分布特征作为第一分布特征;
10.将所述待处理图片中的至少一个作为量化图片,将所述量化图片导入所述原始网络进行第一次量化以得到若干个初始定点位和所述量化图片各层数据的第二分布特征;
11.根据所述原始网络的网络结构确定节点或者根据所述第一分布特征和所述第二分布特征确定所述节点;
12.根据所述节点对所述原始网络进行分节点量化以得到分节点量化结果;
13.根据所述分节点量化结果对所述原始网络进行优化调整得到目标神经网络。
14.本发明的有益效果在于:通过对所述原始浮点数据进行简化处理并提取所述原始浮点数据的第一分布特征;将所述待处理图片中的至少一个作为量化图片,将所述量化图片导入所述原始网络进行第一次量化以得到各层的第二分布特征,根据原始网络的网络结构或者第一分布特征和第二分布特征确定节点,以便于后续根据所述节点对所述量化图片进行分节点量化,并根据分节点量化结果对原始网络进行优化得到目标神经网络,不仅有效提高了量化结果的准确性,而且最终得到的目标神经网络的运行速度有效提高,占用的内存空间更小。
15.进一步的,以随机选择的方式从所述原始网络的数据集中获取所述待处理图片。
16.进一步的,所述数据集包括用于训练用的训练集、用于验证的验证集和用于测试的测试集中的至少一个。
17.进一步的,所述第一次量化采用线性量化处理。
18.进一步的,所述根据所述第一分布特征和所述第二分布特征确定节点包括:
19.对所述第一分布特征和所述第二分布特征进行相似性判断以得到第一相似性判断结果;
20.根据所述第一相似性判断结果的大小对所述量化图片中的各层进行排序,选出第一相似性判断结果小于预设阈值的层作为节点。其有益效果在于:选择第一相似性判断结果小于预设阈值的层作为节点,以选出相似度较小,即量化前后变化较大的层作为节点,以便于后续进行分节点量化,以提高量化结果的准确性。
21.进一步的,所述对所述第一分布特征和所述第二分布特征进行相似性判断以得到第一相似性判断结果包括计算所述第一分布特征和所述第二分布特征的余弦相似度或者相对熵,根据所述余弦相似度或者所述相对熵得到所述第一相似性判断结果。
22.进一步的,所述根据所述原始网络的网络结构确定节点包括如下方式中的至少一种:
23.当判断所述原始网络为残差网络,选择所述原始网络的残差结构的起始层和终止层为所述节点;
24.当判断所述原始网络为inception系列网络,选择所述原始网络的inception 结构的起始层和终止层为所述节点;
25.当判断所述原始网络包含融合部分,选择所述原始网络中上采样后的融合层为所述节点;
26.当判断所述原始网络为se block类的网络,选择所述原始网络的scale层为所述节点;
27.当判断所述原始网络的当前层的特征图的通道数量相比前一层变化超过四倍,选择所述原始网络的当前层作为所述节点。
28.进一步的,所述根据所述节点对所述网络进行分节点量化以得到分节点量化结果包括:
29.根据当前节点与下一节点之间的原始浮点数据线性计算出所述当前节点与所述下一节点之间的判断定点位,所述判断定点位为整数位;
30.依次用所述当前节点与所述下一节点之间的判断定点位对应替换所述当前节点与所述下一节点之间的初始定点位,获取所述下一节点的数据分布的第三分布特征;
31.对所述第三分布特征与所述下一节点的第一分布特征进行相似性判断以得到第二相似性判断结果;
32.根据所述第二相似性判断结果和所述第一相似性判断结果进行判断处理,所述判断处理包括:
33.当所述第二相似性判断结果大于所述第一相似性判断结果,将当前的所述判断定点位对应替换所述初始定点位;
34.当所述第二相似性判断结果小于或等于所述第一相似性判断结果,对所述当前节点与所述下一节点之间的判断定点位进行调优处理以得到调优点位,将所述调优点位替换所述初始定点位;
35.循环执行上述过程,直至对所述原始网络的所有节点完成分节点量化。其有益效果在于:根据选择的节点计算出判断定点位,之后根据下一节点的第三分布特征对判断定点位进行相似性判断以确定相邻节点之间的判断定点位是否有改善,如果有改善则将判断定点位对应替换初始定点位,而如果确定判断定点位没有改善后则对判断定点位进行调优处理,以得到更准确的定点位,从而完成对原始网络的所有节点的量化过程,不仅提高了量化结果的准确性,而且采用整数位的判断定点位对初始定点位进行替换,使得后续的神经网络在对图像进行视觉处理的时候,运行速度更快,占用内存更小。
36.进一步的,所述当所述第二相似性判断结果小于或等于所述第一相似性判断结果,对所述当前节点与所述下一节点之间的判断定点位进行调优处理以得到调优点位,将所述调优点位替换所述初始定点位包括:
37.对所述当前节点的所述判断定点位进行整数位偏移处理以得到新定点位;
38.将所述新定点位替换所述判断定点位对应的初始定点位,获取所述下一节点的数据分布的第四分布特征;
39.根据所述第四分布特征和所述下一节点的第一分布特征进行相似性判断以得到第三相似性判断结果;
40.判断所述第三相似性判断结果大于所述第一相似性判断结果,将所述当前节点与
所述下一节点之间的新定点位作为所述调优点位,以所述调优点位对应替换所述初始定点位;
41.循环执行上述过程,直至所述当前节点与所述下一节点之间的每一个判断定点位完成调优处理。其有益效果在于:通过对判断定点位进行整数位偏移处理,以选择出更合适的新定点位作为调优点位来替换初始定点位,提高量化结果的准确性。
42.所述根据所述分节点量化结果对所述原始网络的特征图进行优化调整得到目标神经网络,包括:
43.根据所述初始定点位在所述原始网络中的位置,将替换所述初始定点位的所述判断定点位和所述调优点位对应作为所述原始网络的新的定点,以对所述原始网络进行优化得到所述目标神经网络。
44.第二方面,本发明提供了一种深度学习网络量化系统,包括:
45.输入获取模块,用于将待处理图片输入到原始网络,运行所述原始网络以获取所述待处理图片的原始浮点数据;
46.第一提取模块,用于对各层的所述原始浮点数据进行简化处理得到多个原始定点,提取所述原始定点的各层数据分布特征作为第一分布特征;
47.第二提取模块,用于将所述待处理图片中的至少一个作为量化图片,将所述量化图片导入所述原始网络进行第一次量化以得到各层的第二分布特征;
48.节点确定模块,用于根据所述原始网络的网络结构确定节点或者根据所述第一分布特征和所述第二分布特征确定节点;
49.分节点量化模块,用于根据所述节点对所述量化图片进行分节点量化以得到分节点量化结果;
50.优化模块,用于根据所述分节点量化结果对所述原始网络进行优化调整得到目标神经网络。
51.本发明的所述深度学习网络量化系统的有益效果在于:通过对所述原始浮点数据进行简化处理并提取所述原始浮点数据的第一分布特征;将所述待处理图片中的至少一个作为量化图片,将所述量化图片导入所述原始网络进行第一次量化以得到各层的第二分布特征,根据第一分布特征和第二分布特征确定节点,以便于后续根据所述节点对所述量化图片进行分节点量化,并根据分节点量化结果对原始网络进行优化得到目标神经网络,不仅有效提高了量化结果的准确性,而且最终得到的目标神经网络的运行速度有效提高,占用的内存空间更小。
52.第三方面,本发明还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法。
53.第四方面,本发明提供了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述终端运行所述计算机程序时执行上述的方法。
54.第三方面和第四方面的有益效果具体参见第一方面、第二方面有益效果的描述,此处不再赘述。
附图说明
55.图1为本发明实施例的深度学习网络量化方法的流程示意图;
56.图2为本发明的实施例的深度学习网络量化方法在resnet网络中判断定点位的选择示意图;
57.图3为本发明的实施例的深度学习网络量化系统的结构框图。
具体实施方式
58.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另外定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本文中使用的“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
59.针对现有技术存在的问题,本发明的实施例提供了一种神经网络量化方法,如图1所示,包括如下步骤:
60.s1、将待处理图片输入到原始网络,运行所述原始网络以获取所述待处理图片下的网络各层的原始浮点数据。
61.在一些实施例中,所述待处理图片以随机选择的方式从所述原始网络的数据集中获取,通过随机从原始网络中选择待处理图片的方式,保证待处理图片选择的随机性,尽可能地随机以保证场景的多样性和代表性。
62.在又一些实施例中,所述数据集包括用于训练用的训练集、用于验证的验证集和用于测试的测试集中的至少一个,通过在训练集、验证集和测试集中选择待处理图片,可以分别选择不同作用的图片进行量化处理。
63.更进一步的,所述待处理图片的数量为n个批量大小batch size,其中所述 batch size指的是一次训练所抓取的数据样本数量。
64.优选的是,所述待处理图片的数量为1

2个batch size。
65.s2、对所述待处理图片的网络各层的所述原始浮点数据进行简化处理得到多个原始定点,提取所述原始定点的各层数据分布特征作为第一分布特征。
66.在一些实施例中,将所述待处理图片网络各层的原始浮点数据按照抽样定理进行抽样,以得到若干个离散的原始定点,在得到待处理图片的原始定点之后,对应提取出每一个原始定点的第一分布特征,从而得到能够准确反映所述待处理图片真实情况的第一分布特征,以便于后续作为量化结果的判断标准,以提高量化结果的准确性。
67.在一些可能的实施例中,所述待处理图片的网络数据包括多个层,每一层都有对应的浮点数据以及浮点数据的第一分布特征,以得到各层的浮点数据的第一分布特征,记为h
f
(i),i为各层的序号,即所述原始定点的位置。
68.s3、将所述待处理图片中的至少一个作为量化图片,将所述量化图片导入所述原始网络进行第一次量化以得到若干个初始定点位和所述量化图片各层数据的第二分布特征。
69.通过选择待处理图片中的至少一个作为量化图片,并对量化图片进行第一次量化处理,以得到第一次量化之后的初始定点位和量化图片的网络各层的第二分布特征。
70.在一些可能的实施例中,在对量化图片的网络进行第一次量化之后,会得到一系列的初始定点位,将所述初始定点位记为q
i
,而初始定点位对应的量化后的图片各层的浮点数据的分布特征记为第二分布特征,所述第二分布特征记为h
q
(i),其中i为各层的序号,即初始定点位的位置。
71.在一些实施例中,所述第一次量化采用线性量化处理,由于线性量化处理为现有技术的内容,本技术方案不涉及对线性量化本身的改进,此处不再赘述。
72.s4、根据所述原始网络的网络结构确定节点或者根据所述第一分布特征和所述第二分布特征确定节点。
73.在一些实施例中,所述根据所述第一分布特征和所述第二分布特征确定节点包括:
74.对所述第一分布特征和所述第二分布特征进行相似性判断以得到第一相似性判断结果;
75.根据所述第一相似性判断结果的大小对所述量化图片中的各层进行排序,选出第一相似性判断结果小于预设阈值的层作为节点。
76.由于第一分布特征反映的是所述量化图片的网络各层原始浮点数据的真实情况,而第二分布特征则反映的是进行第一次量化之后所述量化图片的网络各层的浮点数据的分布情况,通过对所述第一分布特征和所述第二分布特征进行相似性判断以得到第一相似性判断结果,并对各层的第一相似性判断结果进行排序,选出第一相似性判断小于预设阈值的层作为节点,即选出前后变化较大的层作为节点,从而挑选出在第一次量化过程中,选出与量化图片的真实情况差异较大的层作为节点以进行后续的分节点量化过程,有效提高后续量化过程的准确性;其中预设阈值是表示在所有的第一相似性判断结果的阈值大小,大于预设阈值则表示第一相似性判断结果表示的相似度大,而小于预设阈值则表示第一相似性判断结果表示的相似度小。
77.在进一步的一些实施例中,根据所述第一相似性判断结果的大小对所述量化图片中的各层进行排序,选出第一相似性判断结果大于预设阈值的层作为节点还包括按照从大到小的顺序对所述第一相似性判断结果进行排序之后,选择排序结果位于占比阈值之后的第一相似性判断结果对应的层作为节点。
78.具体的,按照从大到小的顺序对各层的第一相似性判断结果进行排序,选出相似性判断排在后25%的第一相似性判断结果对应的层作为节点,即从而找出第二分布特征和第一分布特征之间相似度较小,变化差距较大的层作为节点,以在后续过程中进行分节点量化,其中,所述第一相似性判断结果对应的层会有相应的定点位,即为所述初始定点位。
79.在一些实施例中,所述原始定点的数量与所述初始定点位的数量相同,在对初始定点位与原始定点进行相似性判断的过程中,选择与原始定点对应在同一个位置的初始定点位进行相似性判断,比如选择原始定点为第10个定点,那么对应进行相似性判断的初始定点位则也是在所有初始定点位中的第10个初始定点位,从而保证初始定点位与原始定点一一对应,以判断出初始定点位与原始定点之间的差距,便于后续进行进一步的量化优化。
80.在又一些实施例中,所述占比阈值根据不同情况进行选择,在一些可能的实施例中,所述占比阈值还可以选择为20%、30%、50%中的任意一个。
81.在其他实施例中,进一步的,所述根据所述原始网络的网络结构确定节点包括如
下方式中的至少一种:
82.当判断所述原始网络为残差网络(resnet),选择所述原始网络的残差结构的起始层和终止层作为节点,一般情况下选择eltwise层为节点;
83.当判断所述原始网络为inception系列网络,选择所述原始网络的inception 结构的起始层和终止层作为节点,一般情况下选择concat层为节点;
84.当判断所述原始网络包含融合部分,即在所述原始网络内部不同的层发生了融合或者形成闭环,具体比如包括fpn结构网络或者darknet网络,选择所述原始网络中上采样后的融合层为节点;
85.当判断所述原始网络为se block类的网络,选择所述原始网络的scale层为节点;
86.当判断所述原始网络的当前层的特征图的通道数量相比前一层变化超过四倍,选择所述原始网络的所述当前层作为节点。
87.在一些实施例中,对于残差网络(resnet)类的网络,以eltwise层结构为节点;对于inception系列结构的网络,则以concat层为节点;而对于包含融合部分的网络,包括fpn结构网络或者darknet网络,以采样后的融合层为节点;对于se block等类似的网络,以scale层作为节点;对于通道数量变化超过四倍的特征图,选择该特征图作为节点。
88.进一步的,先根据原始网络的类型选择合适的节点,在无法根据原始网络选择节点的时候,则根据所述第一分布特征和所述第二分布特征进行计算以确定节点,具体见上述内容,此处不再赘述。
89.s5、根据所述节点对所述量化图片进行分节点量化以得到分节点量化结果。
90.在一些实施例中,所述根据所述节点对所述网络进行分节点量化以得到分节点量化结果包括:
91.根据当前节点与下一节点之间的原始浮点数据线性计算出所述当前节点与所述下一节点之间的判断定点位;
92.依次用所述当前节点与所述下一节点之间的判断定点位对应替换所述当前节点与所述下一节点之间的初始定点位,获取所述下一节点的数据分布的第三分布特征;
93.对所述第三分布特征与所述下一节点的第一分布特征进行相似性判断以得到第二相似性判断结果;
94.根据所述第二相似性判断结果和所述第一相似性判断结果进行判断处理,所述判断处理包括:
95.当所述第二相似性判断结果大于所述第一相似性判断结果,将当前的所述判断定点位对应替换所述初始定点位;
96.当所述第二相似性判断结果小于或等于所述第一相似性判断结果,对所述当前节点与所述下一节点之间的判断定点位进行调优处理以得到调优点位,将所述调优点位替换所述初始定点位;
97.循环执行上述过程,直至对所述量化图片的所有节点完成分节点量化。
98.在上述分节点量化的过程中,对当前节点和下一节点之间的原始浮点数据线性进行计算,从而得到当前节点与所述下一节点之间的判断定点位,依次用所述当前节点与所述下一节点之间的判断定点位对应替换所述当前节点与所述下一节点之间的初始定点位,由于当前节点的初始定点位发生变化,则下一节点的数据分布也会发生变化,之后获取下
一节点的数据分布,即第三分布特征,通过对所述第三分布特征与所述下一节点的第一分布特征进行相似性判断以得到第二相似性判断结果,根据第二相似性判断结果与第一相似性判断结果进行比较,判断在将初始定点位改变之后的量化结果是否优于第一次量化的量化结果,在第二相似性判断结果大于第一相似性判断结果时,判断第二相似性判断结果表示的相似性大于第一相似性判断结果表示的相似性,则表示将判断定点位替换初始定点位后得到的量化结果比第一次量化的结果更接近于所述待处理图片的真实情况,因此能够得到更加准确的量化结果。
99.而如果所述第二相似性判断结果小于或等于所述第一相似性判断结果,则表示第二相似性判断结果表示的相似性小于或等于第一相似性判断结果表示的相似性,则表示将判断定点位替换初始定点位后得到的量化结果没有第一次量化结果准确,则对所述当前节点与所述下一节点之间的判断定点位进行调优处理以得到调优点位,之后将所述调优点位替换所述初始定点位,以便于在节点内完成再次的量化过程。
100.由于当前节点与下一节点之间,即相邻节点之间的判断定点位一般为多个,在对相邻节点之间的判断定点位进行判断的过程中,按照顺序依次对每一个判断定点位进行相似性判断,以确定不同位置的判断定点位是否合适,之后重复循环上述过程,直至对量化图片的每一个节点都完成量化,从而完成分节点量化过程。
101.在一些实施例中,根据所述节点的浮点数据的数据线性计算出相邻所述节点之间的判断定点位的过程包括:首先根据所述节点求出浮点数据的最大值;然后最大值线性映射到int8的最大取值128;根据映射的比例系数sl,反推出一个定点位a,比例系数的计算公式为sl=max(data)/128,其中max(data)为浮点数据的最大值,a=[log2(sl)],[]符号表示向下取整数。
[0102]
在一些实施例中,所述当所述第二相似判断结果大于或等于所述第一相似判断结果,对所述当前节点与所述下一节点之间的判断定点位进行调优处理以得到调优点位,将所述调优点位替换所述初始定点位包括:
[0103]
对所述当前节点的所述判断定点位进行整数位偏移处理以得到新定点位;
[0104]
将所述新定点位替换所述判断定点位对应的初始定点位,获取所述下一节点的数据分布的第四分布特征;
[0105]
根据所述第四分布特征和所述下一节点的第一分布特征进行相似性判断以得到第三相似性判断结果;
[0106]
判断所述第三相似性判断结果大于所述第一相似性判断结果,将所述当前节点与所述下一节点之间的新定点位作为所述调优点位,以所述调优点位对应替换所述初始定点位;
[0107]
循环执行上述过程,直至所述当前节点与所述下一节点之间的每一个判断定点位完成调优处理。
[0108]
在判断当前的位置的判断定点位相较于对应位置的初始定点位没有改善的时候,对此处的判断定点位进行调优处理,具体的,对当前位置的所述判断定点位进行整数位偏移处理以得到新定点位,之后依次将得到的新定点位替换掉原来的判断定点位对应的初始定点位,并获取下一节点的数据分布的第四分布特征,之后根据下一节点的第四分布特征与下一节点对应的第一分布特征进行相似性判断,从而得到第三相似性判断结果,如果判
断第三相似性判断结果大于第一相似性判断结果,即表示改变之后的新定点位与原始定点的相似性大于初始定点位与原始定点的相似性,则判断偏移后得到的新定点位相较于对应位置的初始定点位有改善,即新定点位相较于初始定点位更加接近于所述量化图片的原始定点,则将所述新定点位作为调优点位,并将调优点位替换掉对应位置的初始定点位,从而完成量化结果的进一步优化,得到更接近原始浮点数据的量化结果。
[0109]
需要说明的是,对所述判断定点位进行整数位偏移处理过程中采用的是整数位偏移,而由于判断定点位本身也是整数位,因此判断定点位在经过整数位偏移处理之后得到的新定点位也是整数位,从而使得整个过程经过量化之后得到的判断定点位、新定点位都是整数位,在后续对原始网络进行优化调整之后,有效提高网络的运行速度。
[0110]
进一步的,如果判断所述第三相似性判断结果小于或等于第一相似性判断结果,即改变之后的新定点位与原始定点的相似性小于或等于初始定点位与原始定点的相似性,则判断偏移后的新定点位相较于对应位置的初始定点位并没有改善量化情况,则将初始定点位再次替换掉对应位置的判断定点位,选择所述初始定点位作为最终的定点位,从而完成量化过程,得到准确的量化结果。
[0111]
由于当前节点的与下一节点之间存在多个定点位,在对第一个定点位进行调优处理之后,将调优之后的定点位作为最终的定点位,继续对下一个定点位进行优化,直至完成当前节点与下一节点之间的所有需要调优处理的定点位的处理过程。
[0112]
在一些实施例中,在获取到判断定点位之后,为了得到更好的调优效果,对判断定点位进行调优处理,比如当前选择的判断定点位的数值是4,那么在进行整数位偏移处理得到新定点位时,通过分别对判断定点位分别加一和减一以得到两个新定点位,分别为3和5,之后根据新定点位进行相似性判断处理以得到第三相似性判断结果,如果第三相似性判断结果大于第一相似性判断结果,则表明新定点位相对于初始定点位更加接近于量化图片的原始定点,因此将该新定点位作为目标点位,从而完成分节点量化过程;如果判断所述第三相似性判断结果小于或等于第一相似性判断结果,则判断整数位偏移处理后的新定点位相较于对应位置的初始定点位并没有改善量化情况,则将初始定点位再次替换掉对应位置的判断定点位,选择所述初始定点位作为最终的定点位,从而完成量化过程,得到准确的量化结果。
[0113]
在一些实施例中,如图2所示,以resnet的部分为例,在确定节点之后,选择相邻两个节点之间的层作为判断定点位,分别为将relu、relu和scale 作为判断定点位1号、判断定点位2号和判断定点位3号。
[0114]
在一些实施例中,所述对所述第一分布特征和所述第二分布特征进行相似性判断以得到第一相似性判断结果包括计算所述第一分布特征和所述第二分布特征的余弦相似度或者相对熵,根据所述余弦相似度或者所述相对熵的结果得到所述第一相似性判断结果。其中,当采用余弦相似度计算相似性判断结果的时候,相似性判断结果与余弦相似度的计算结果相同,计算得到的余弦相似度越大,则相似性判断结果越大,相似性判断结果对应的两个分布特征越相似;相反的,计算得到的余弦相似度越小,则相似性判断结果越小,相似性判断结果对应的两个分布特征越不相似。
[0115]
而当采用相对熵kld计算相似性判断结果时,相似性判断结果的大小等于相对熵的倒数,计算得到的相对熵越小,则相似性判断结果越大,相似性判断结果对应的两个分布
特征越相似;相反的,计算得到的相对熵越大,则相似性判断结果越小,相似性判断结果对应的两个分布特征越不相似。
[0116]
其中,上述的相似性判断结果包括所述第一相似性判断结果、所述第二相似性判断结果和所述第三相似性判断结果,所述第一相似性判断结果、所述第二相似性判断结果和所述第三相似性判断结果均采用上述的方式进行计算。
[0117]
在进一步的实施例中,为具体说明相似性判断结果的计算方式,以第一相似性判断结果为例,对第一相似性判断结果对应的第一分布特征和第二分布特征进行相似判断处理。
[0118]
当采用余弦相似度计算第一相似性判断结果,所述第一相似性判断结果与计算得到的余弦相似度大小相同,所述第一分布特征和所述第二分布特征的余弦相似度计算过程为:将第一分布特征和第二分布特征的乘积与第一分布特征的绝对值和第二分布特征的绝对值之间的乘积的比值。
[0119]
当采用相对熵计算第一相似性判断结果,所述第一相似性判断结果的大小等于相对熵的倒数,即1/kld(h),所述第一分布特征和所述第二分布特征的相对熵计算过程为:其中,i为各层的序号,即所述原始定点和所述初始定点位的位置。
[0120]
通过本方案的量化方法,对待量化网络进行量化处理,先根据节点对量化图片进行分段量化,在依次完成对每一个节点的量化过程之后,再对节点之间的定点位进行再次优化处理,从而以逐层循环优化的方式完成对量化图片的量化过程,有效提高了网络的量化精度和准确性。
[0121]
进一步的,由于在获取判断定点位的时候得到的判断定点位是整数位,而且对判断定点位进行整数位偏移处理之后也是采用整数位,使得最后得到神经网络的定点位是采用整数点位的网络,在对图像进行机器视觉识别的过程中,有效提高了运算速度,降低了功耗,同时减小了整个神经网络占用的内存空间。
[0122]
需要说明的是,在上述过程中,所述相似判断处理的过程均包括计算余弦相似度或者相对熵,其计算过程与前述过程类似,此处不再赘述。
[0123]
s6、根据所述分节点量化结果对所述原始网络的特征图进行优化调整得到目标神经网络。
[0124]
在一些具体的实施例中,根据所述初始定点位在所述原始网络中的位置,将替换所述初始定点位的所述判断定点位和所述调优点位对应作为所述原始网络的新的定点,以对所述原始网络进行优化得到所述目标神经网络。
[0125]
在通过上述步骤对所述原始网络进行量化之后得到分节点量化结果,即量化后的定点位,将分节点量化之后的判断定点位和调优处理的调优点位替换初始定点位,从而对原始网络进行优化得到目标神经网络,使得目标神经网络的定点位从浮点数据转换为整数位,使得优化后的神经网络能够通过整数位的数据代替浮点数进行运算,不仅有效减小了整个目标神经网络的内存空间,而且目标神经网络在后续进行机器视觉对数据进行计算处理的过程中,有效提高了运行处理速度,同时进一步降低了目标神经网络的运行功耗。
[0126]
进一步的,所述目标神经网络用于机器视觉的图像识别,通过将图像输入到目标神经网络之中对图像进行机器视觉识别,能够有效提高目标神经网络的运输速度,同时降低计算功耗。
[0127]
需要说明的是,上述量化方法是针对神经网络中激活的特征图(featuremap),对于网络本身的权重值,也就是训练好的系数(weights),采用一般线性量化即可。
[0128]
在一些具体的实施例中,神经网络特征图的原始浮点数为32bit,本技术方案利用8bit的整数位对所述神经网络的特征图进行量化,使得神经网络可以采用8bit的整数位代替32bit的浮点数进行运算,数理论上可以立即获得4倍的运算收益,使得量化之后的神经网络内存使用降低为原来的四分之一,运算速度也大幅提高,有效提高了图像处理速度。
[0129]
需要说明的是,在实际量化的过程中,所述神经网络量化前的浮点数大小和量化后的整数位大小可以根据要求对应调整,此处不再赘述。
[0130]
本发明进一步提供了一种神经网络量化系统,如图3所示,包括:
[0131]
输入获取模块1,用于将待处理图片输入到原始网络,运行所述原始网络以获取所述待处理图片各层的原始浮点数据;
[0132]
第一提取模块2,用于对各层的所述原始浮点数据进行简化处理得到多个原始定点,提取所述原始定点的各层数据分布特征作为第一分布特征;
[0133]
第二提取模块3,用于将所述待处理图片中的至少一个作为量化图片,将所述量化图片导入所述原始网络进行第一次量化以得到各层的第二分布特征;
[0134]
节点确定模块4,用于根据所述原始网络的网络结构确定节点或者根据所述第一分布特征和所述第二分布特征确定节点;
[0135]
分节点量化模块5,用于根据所述节点对所述量化图片进行分节点量化以得到分节点量化结果;
[0136]
优化模块6,用于根据所述分节点量化结果对所述原始网络的特征图进行优化调整得到目标神经网络。
[0137]
需要说明的是,上述神经网络量化系统的结构及原理与上述神经网络量化方法中的步骤一一对应,故在此不再赘述。
[0138]
需要说明的是,应理解以上系统的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,模块可以为单独设立的处理元件,也可以集成在上述系统的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述系统的存储器中,由上述系统的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0139]
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称 asic),或,一个或多个数字信号处理器(digital signal processor,简称dsp),或,一个或者多个现
场可编程门阵列(field programmable gatearray,简称fpga) 等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu) 或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system

on

a

chip,简称soc)的形式实现。
[0140]
本发明还公开了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述的步骤。
[0141]
本发明的存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述的方法。所述存储介质包括:只读存储器(read

onlymemory,rom)、随机访问存储器(randomaccess memory,ram)、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。
[0142]
本发明还公开了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述方法的步骤。
[0143]
在一种可能的实施例中,所述存储器用于存储计算机程序;例如,所述存储器包括:rom、ram、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。
[0144]
所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使所述终端执行上述的方法。
[0145]
优选地,所述处理器可以是通用处理器,包括中央处理器(central processingunit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(applicationspecific integrated circuit,简称asic)、现场可编程门阵列(field programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0146]
虽然在上文中详细说明了本发明的实施方式,但是对于本领域的技术人员来说显而易见的是,能够对这些实施方式进行各种修改和变化。但是,应理解,这种修改和变化都属于权利要求书中所述的本发明的范围和精神之内。而且,在此说明的本发明可有其它的实施方式,并且可通过多种方式实施或实现。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献