1.本发明涉及人工智能模型压缩技术领域,更为具体的,涉及一种基于相似性的模块减枝方法。
背景技术:
2.随着深度神经网络的出现,其在图像分类、语义分割、超分辨率等领域都有越来越重要的应用。与此同时,神经网络模型也在变得越来越复杂庞大,神经网络模型的深度和广度的提高可以为模型带来更强的拟合能力,提高模型的性能,同时也带来了庞大的计算消耗和存储消耗。这也为神经网络模型在低性能平台上的部署带来了挑战。为了解决这一问题,模型量化、模型剪枝、知识蒸馏等模型优化手段被相继提出,用以减少模型的参数量并降低模型计算量,这些方法在实际部署中被广泛使用。
3.目前存在的网络剪枝方法大多从通道或权重层面进行剪枝,粒度较细,能够裁剪的参数量有限。且这些方法在计算参数重要性的过程中大都比较复杂,在实际部署过程中会受到一定的限制。
技术实现要素:
4.本发明的目的在于克服现有技术的不足,提供一种基于相似性的模块减枝方法,该方法在模块层面上进行剪枝,粒度更大,可以有效减少网络参数,且模块重要性求得的方法非常简单,易于实际部署中快速对网络进行裁剪。
5.本发明的目的是通过以下方案实现的:一种基于相似性的模块减枝方法,包括步骤:s1,从训练集中得到个样本,将个样本输入到准备剪枝的、包含n个模块的神经网络模型中,个模块串联在一起,上一模块的输出是下一模块的输入,并分别提取出神经网络模型中n个模块的输出特征,其中代表模块编号,取值为0~n-1之间的整数;代表样本编号,取值为0~-1之间的整数,n、m均是正整数;s2,找到神经网络模型中串联的n个模块的最后一个模块的第j个输出特征,分别计算第j个输出特征与个模块中各个模块的输出特征的余弦相似度,得到m*n个余弦相似度;s3,计算个样本的平均余弦相似度;s4,将模块的相似度换算为模块的贡献度,找出贡献度较低的模块,并根据贡献度高低对模块的重要性进行排序;s5,裁剪掉贡献度低的模块,保留裁剪后的其他模块,并对神经网络模型进行调优训练来恢复精度。
6.进一步地,步骤s1中,所述个样本能够代表神经网络模型输入样本的数据分布
情况。
7.进一步地,在步骤s2中,计算与的余弦相似度,采用如下相似度计算公式:式中,分别代表第个模块的通道数,第个样本输出特征的高和宽,和则分别代表输出特征和中的第个特征值。
8.进一步地,在步骤s3中,所述平均余弦相似度采用如下公式计算:。
9.进一步地,步骤s4中,所述将模块的相似度换算为模块的贡献度包括如下子步骤:计算每个模块相较于上一个模块的相似度的上升幅度,相似度提高越多代表该模块对模型整体的贡献越大,计算公式如下:式中,代表第个模块的贡献度。
10.进一步地,步骤s5中,裁剪依照模块贡献度从低到高进行,优先裁剪掉贡献度低的模块,裁剪的数量依照需要模型轻量化的程度决定,且能够裁剪不高于模块总数的任意数量的模块。
11.本发明的有益效果包括:本发明实施例从模块的粒度上进行剪枝,相比常见的通道剪枝、权重剪枝粒度更大,在裁剪更多参数的同时灵活性也更高,因此具备快速实现泛用性强等特征。
12.本发明实施例提出了一种将模块输出的相似度换算为模块贡献度的方法。该方法具有以下特点:计算简单,只需要输入少量样本就可以得到每个模块的输出并计算出平均相似度,平均相似度进一步换算出模块贡献度;泛用性强,只要是前后相连的模块都可以用此方法评估贡献度;灵活性强,本发明实施例方法只需要得到模块输出特征这一个数据就可以使用,对不同的网络可以灵活的适应。
13.本发明实施例提出的剪枝方法属于结构化剪枝方法,结构化剪枝方法相比于非结构化剪枝不会破坏网络结构的规则化,因此剪枝后的网络不需要特殊的软硬件来匹配,可以直接应用在现有的软硬件环境下,成本更低,适用性强,更加适合实际部署。
附图说明
14.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
15.图1是本发明实施例的一种基于相似性的模块剪枝方法的流程图;图2是本发明实施例中的网络剪枝对象edsr模型的网络结构;图3是本发明实施例中网络剪枝的示意图;图4是本发明实施例中模块余弦相似度的计算示意图;图5是本发明实施例中模块贡献度的计算示意图。
具体实施方式
16.本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
17.实施例1:如图1所示,一种基于相似性的模块减枝方法,包括步骤:s1,从训练集中得到个样本,将个样本输入到准备剪枝的、包含n个模块的神经网络模型中,个模块串联在一起,上一模块的输出是下一模块的输入,并分别提取出神经网络模型中n个模块的输出特征,其中代表模块编号,取值为0~n-1之间的整数;代表样本编号,取值为0~-1之间的整数,n、m均是正整数;如图2所示,为本实施例的超分辨率网络edsr的网络结构,其包含了32个模块,下面将介绍如何裁剪这32个模块的数量,达到降低模型参数量的目的。
18.s2,找到神经网络模型中串联的n个模块的最后一个模块的第j个输出特征,分别计算第j个输出特征与个模块中各个模块的输出特征的余弦相似度,得到m*n个余弦相似度;如图3所示,单独关注模型中的32个网络模块,这些模块的特点是首尾相连,图中最后一个模块已用小旗标出。计算出所有模块与最后一个模块输出特征的余弦相似度,可以得到图4中柱状图,柱状图中包含了相似度的变换,是一个逐渐接近于1.0的过程。
19.s3,计算个样本的平均余弦相似度;由于输入了多个样本考虑到不同输入样本可能造成的误差,最终的相似度应该采用各样本平均的相似度。
20.s4,将模块的相似度换算为模块的贡献度,找出贡献度较低的模块,并根据贡献度高低对模块的重要性进行排序;如图5所示,本实施例将所有模块在网络中的贡献定义为相似度的上升,当相似度上升为1.0时,则认为网络得到了它原本所需要的输出。因此相似度上升的幅度越大,模块在网络中的贡献也就越大,最终将模块相似度换算为了图5中的模块贡献度。
21.s5,裁剪掉贡献度低的模块,保留裁剪后的其他模块,并对神经网络模型进行调优训练来恢复精度。如图5所示,裁剪掉贡献度低的模块,重新得到一个新的轻量的网络结构,该网络去掉了不重要的模块,包含了更少的模块数量。通过调优训练,最后得到一个精度几乎无损失但模型参数量大大降低的新模型。
22.本实施例提供的基于相似性的模块剪枝方法,通过计算各模块输出特征相对于末尾模块输出特征的余弦相似度,通过简单的换算将相似度换算为模块的贡献度,从而找到贡献度较低的模块。裁剪掉低贡献度的模块,有效降低了模型参数量,减少了模型计算量,并且不会有明显的精度损失。
23.在本实施例中,在具体应用时,步骤s1中所述个样本能够代表神经网络模型输
入样本的数据分布情况。
24.实施例2:在实施例1的基础上,在步骤s2中,计算与的余弦相似度,采用如下相似度计算公式:式中,分别代表第个模块的通道数,第个样本输出特征的高和宽,和则分别代表输出特征和中的第个特征值。
25.实施例3:在实施例1的基础上,在步骤s3中,所述平均余弦相似度采用如下公式计算:。
26.实施例4:在实施例1的基础上,步骤s4中,所述将模块的相似度换算为模块的贡献度包括如下子步骤:计算每个模块相较于上一个模块的相似度的上升幅度,相似度提高越多代表该模块对模型整体的贡献越大,计算公式如下:式中,代表第个模块的贡献度。
27.实施例5:在实施例1的基础上,步骤s5中,裁剪依照模块贡献度从低到高进行,优先裁剪掉贡献度低的模块,裁剪的数量依照需要模型轻量化的程度决定,且能够裁剪不高于模块总数的任意数量的模块。
28.本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
29.上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
30.除以上实例以外,本领域技术人员根据上述公开内容获得启示或利用相关领域的知识或技术进行改动获得其他实施例,各个实施例的特征可以互换或替换,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
技术特征:
1.一种基于相似性的模块减枝方法,其特征在于,包括步骤:s1,从训练集中得到个样本,将个样本输入到准备剪枝的、包含n个模块的神经网络模型中,个模块串联在一起,上一模块的输出是下一模块的输入,并分别提取出神经网络模型中n个模块的输出特征,其中代表模块编号,取值为0~n-1之间的整数;代表样本编号,取值为0~-1之间的整数,n、m均是正整数;s2,找到神经网络模型中串联的n个模块的最后一个模块的第j个输出特征,分别计算第j个输出特征与个模块中各个模块的输出特征的余弦相似度,得到m*n个余弦相似度;s3,计算个样本的平均余弦相似度;s4,将模块的相似度换算为模块的贡献度,找出贡献度较低的模块,并根据贡献度高低对模块的重要性进行排序;s5,裁剪掉贡献度低的模块,保留裁剪后的其他模块,并对神经网络模型进行调优训练来恢复精度。2.根据权利要求1所述的基于相似性的模块减枝方法,其特征在于,步骤s1中,所述个样本能够代表神经网络模型输入样本的数据分布情况。3.根据权利要求1所述的基于相似性的模块减枝方法,其特征在于,在步骤s2中,计算与的余弦相似度,采用如下相似度计算公式:式中,分别代表第个模块的通道数,第个样本输出特征的高和宽,和则分别代表输出特征和中的第个特征值。4.根据权利要求1所述的基于相似性的模块减枝方法,其特征在于,在步骤s3中,所述平均余弦相似度采用如下公式计算:。5.根据权利要求1所述的基于相似性的模块减枝方法,其特征在于,步骤s4中,所述将模块的相似度换算为模块的贡献度包括如下子步骤:计算每个模块相较于上一个模块的相似度的上升幅度,相似度提高越多代表该模块对模型整体的贡献越大,计算公式如下:式中,代表第个模块的贡献度。6.根据权利要求1所述的基于相似性的模块减枝方法,其特征在于,步骤s5中,裁剪依照模块贡献度从低到高进行,优先裁剪掉贡献度低的模块,裁剪的数量依照需要模型轻量
化的程度决定,且能够裁剪不高于模块总数的任意数量的模块。
技术总结
本发明公开了一种基于相似性的模块减枝方法,属于人工智能模型压缩领域,包括:S1,将M个样本输入神经网络模型中,并分别提取神经网络模型中N个模块的输出特征;S2,找到神经网络模型中串联的N个模块的最后一个模块的输出特征,分别计算输出特征与各个模块的输出特征的余弦相似度,得到M*N个余弦相似度;S3,计算个样本的平均余弦相似度;S4,将模块的相似度换算为贡献度,根据贡献度高低对模块进行排序;S5,裁剪掉贡献度低的模块,对神经网络模型进行调优训练来恢复精度。本发明在模块层面上进行剪枝,粒度更大,有效减少网络参数,且模块重要性求得的方法非常简单,易于实际部署中快速对网络进行裁剪。速对网络进行裁剪。速对网络进行裁剪。
技术研发人员:周仁爽 陈尧森 杨瀚 王都
受保护的技术使用者:成都索贝数码科技股份有限公司
技术研发日:2021.12.13
技术公布日:2022/3/8