基于范数的卷积神经网络模型的滤波器剪枝方法和系统与流程

文档序号:23729687发布日期:2021-01-26 19:58阅读:207来源:国知局
基于范数的卷积神经网络模型的滤波器剪枝方法和系统与流程

[0001]
本发明属于计算机技术领域,更具体地,涉及基于范数的卷积神经网络模型的滤波器剪枝方法和系统。


背景技术:

[0002]
随着互联网技术和人工智能的发展,卷积神经网络(convolution neural network,简称cnn)在计算机视觉领域表现出巨大优势,但因巨大的计算代价和内存占用,很难在资源有限的平台(如移动客户端)上部署。cnn包括一系列卷积层和全连接层,每个卷积层包含了多个滤波器,对部分滤波器在保证网络模型精度的前提下,进行剪枝以实现网络模型压缩,有利于在资源有限的平台上部署。
[0003]
现有的剪枝方法多以滤波器范数进行排序,用设定的阈值确定冗余的滤波器数量,从而将冗余的滤波器进行剪枝。
[0004]
然而,现有的剪枝方法存在一些不可忽略的缺陷:由于其仅仅基于所有滤波器的范数排序进行剪枝,而没有从功能上对滤波器进行判断,因此容易将一类范数小而特征大的滤波器剪枝掉,从而破坏了cnn模型的功能完整性,并进而导致cnn模型由于出现精度损失而无法提取部分特征。


技术实现要素:

[0005]
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于范数的卷积神经网络模型的滤波器剪枝方法和系统,其目的在于,对每个卷积层滤波器聚类为多个蔟,在每个蔟内采用范数排序的剪枝方法,和采用蔟间剪枝方法,解决现有技术中容易将一类范数小而特征大的滤波器剪枝掉,从而破坏卷积神经网络模型的功能完整性,导致卷积神经网络模型精度损失而无法提取部分特征的技术问题。
[0006]
为实现上述目的,按照本发明的一个方面,提供了一种基于范数的卷积神经网络模型的滤波器剪枝方法,包括以下步骤:
[0007]
(1)对已经训练好的卷积神经网络模型的每个卷积层的所有滤波器进行可视化处理,得到每个卷积层的每个滤波器的最大激活值,根据最大激活值得到每个卷积层的每个滤波器的输出特征图,利用输出特征图采用聚类算法对每个卷积层的所有滤波器进行聚类,以得到第s个卷积层的m
s
个蔟,其中s∈[1,卷积神经网络模型中卷积层的总数];
[0008]
(2)对于每个卷积层的m
s
个蔟中的每个蔟而言,获取该蔟的每个滤波器的权值参数,根据权值参数并利用欧几里得范数公式计算每个滤波器的p范数,将该蔟中所有滤波器的p范数取均值以得到该蔟的平均范数,再根据平均范数确定该蔟的剪枝率p
s,m
,并按照该蔟的剪枝率p
s,m
在该蔟内进行剪枝,其中m∈[1,m
s
];
[0009]
(3)对每个卷积层而言,将其m
s
个蔟按照每个蔟的平均范数进行从小到大的排序,根据卷积神经网络模型剪枝每个蔟后的模型精度损失大小,确定该卷积层中能够被剪枝的所有蔟,并对这些蔟进行剪枝,从而得到剪枝处理后的卷积层。
[0010]
优选地,步骤(1)包括如下子步骤:
[0011]
(1-1)获取一张带有随机噪声的图像x;
[0012]
(1-2)将图像x输入已经训练好的卷积神经网络模型中,并在卷积神经网络模型中进行前向传播,以依次获得每个卷积层的每个滤波器的激活其中i∈[1,卷积层中滤波器的总数];
[0013]
(1-3)对每个卷积层的每个滤波器,使用反向传播算法计算步骤(1-2)得到的激活的卷积核梯度,并使用得到的卷积核梯度来更新图像x,具体为:
[0014][0015]
其中η为反向传播算法中梯度上升的步长;
[0016]
(1-4)对更新后的图像x,重复步骤(1-2)和(1-3),直至每个卷积层的每个滤波器都具有最大激活值为止,具体为:
[0017][0018]
(1-5)对每个卷积层的每个滤波器而言,将该滤波器具有最大激活值时的输出图像作为该滤波器输出的特征图利用输出特征图采用聚类算法对每个卷积层的所有滤波器进行聚类,以得到第s个卷积层的m
s
个蔟。
[0019]
优选地,步骤(1)中采用的聚类算法是k-means聚类算法。
[0020]
优选地,对每个卷积层而言,步骤(2)包括如下子步骤:
[0021]
(2-1)对m
s
个蔟中的每个蔟而言,获取该蔟中每个滤波器的所有权值参数,根据该权值参数并利用欧几里得范数公式计算得到第m个蔟的第l个滤波器的p范数||w
m,l
||2,具体为:
[0022][0023]
其中w
mlj
为第m个蔟的第l个滤波器的第j个权值参数,l∈[1,蔟中滤波器的总数],j∈[1,滤波器的权值参数总数];
[0024]
(2-2)对m
s
个蔟中的每个蔟而言,将该蔟中所有滤波器的p范数||w
m,l
||2进行求和平均,以得到该蔟的平均范数;
[0025]
(2-3)对m
s
个蔟的平均范数从大到小进行排序,根据排序结果按照从小到大设置每个蔟的剪枝率为p
s,m

[0026]
(2-4)对m
s
个蔟中的每个蔟而言,对该蔟中所有滤波器按照p范数||w
m,l
||2从小到大的顺序进行剪枝,直至达到每个蔟的剪枝率p
s,m
时停止剪枝,得到每个蔟更新后的滤波器。
[0027]
优选地,每个蔟的剪枝率p
s,m
的范围为0.05≤p
s,m
≤0.9,且满足p
s,m嶨1-p
s,m
=0.05。
[0028]
优选地,对每个卷积层而言,步骤(3)包括如下子步骤:
[0029]
(3-1)设置计数器n=1,t=0;
[0030]
(3-2)将m
s
个蔟按照平均范数从小到大进行排序;
[0031]
(3-3)获取卷积神经网络模型剪枝第n个蔟后的模型精度acc
n
与剪枝第n个蔟前的模型精度acc0之间的差值,作为当前剪枝后的模型精度损失loss
n
,即loss
n
=acc
n-acc0;判断当前剪枝后的模型精度损失loss
n
是否大于0,如果是,则可以剪枝该蔟,设置当前可以剪枝的蔟序号c[t]=n,计数器t=t+1,进入步骤(3-5),否则进入步骤(3-4);
[0032]
(3-4)判断当前剪枝后的模型精度损失loss
n
的绝对值是否小于预设的模型精度损失阈值,如果是,则可以剪枝该蔟,设置当前可以剪枝的蔟序号c[t]=n,计数器t=t+1,进入步骤(3-5);否则不能剪枝该蔟,进入步骤(3-5);
[0033]
(3-5)设置计数器n=n+1;
[0034]
(3-6)判断计数器n是否等于当前卷积层的蔟个数m
s
,如果是,则进入步骤(3-7),否则,返回至步骤(3-3);
[0035]
(3-7)判断计数器t是否大于等于1,如果是,则对步骤(3-2)排序后的m
s
个蔟,依次将蔟序号c[t]对应的蔟剪枝掉,得到该卷积层中更新后的滤波器,过程结束;否则表示没有可以剪枝的蔟,过程结束。
[0036]
优选地,步骤(3-4)中预设的模型精度损失阈值取值范围是[0.1%,0.6%],优选值是0.5%。
[0037]
根据本发明的另一方面,提供了一种基于范数的卷积神经网络模型的滤波器剪枝系统,包括:
[0038]
第一模块,用于对已经训练好的卷积神经网络模型的所有滤波器进行可视化处理,得到每个卷积层的每个滤波器的最大激活值,根据最大激活值得到每个卷积层的每个滤波器的输出特征图,利用输出特征图采用聚类算法对每个卷积层的所有滤波器进行聚类,以得到第s个卷积层的m
s
个蔟,其中s∈[1,卷积神经网络模型中卷积层的总数];
[0039]
第二模块,用于对每个卷积层的m
s
个蔟中的每个蔟而言,获取该蔟的每个滤波器的权值参数,根据权值参数并利用欧几里得范数公式计算每个滤波器的p范数,将该蔟中所有滤波器的p范数取均值以得到该蔟的平均范数,再根据平均范数确定该蔟的剪枝率p
s,m
,并按照该蔟的剪枝率p
s,m
在该蔟内进行剪枝,其中m∈[1,m
s
];
[0040]
第三模块,用于对每个卷积层而言,将其m
s
个蔟按照每个蔟的平均范数进行从小到大的排序,根据卷积神经网络模型剪枝每个蔟后的模型精度损失大小,确定该卷积层中能够被剪枝的所有蔟,并对这些蔟进行剪枝,从而得到剪枝处理后的卷积层。
[0041]
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0042]
(1)本发明采用了步骤(1)中对每个卷积层的滤波器进行可视化处理,并根据可视化结果进行聚类,将每个卷积层的滤波器聚类为多个蔟,对滤波器进行了分类;结合步骤(2)中对每个蔟间进行范数排序,以此确定每个蔟的剪枝率,再在蔟内根据滤波器的范数排序确定剪枝的滤波器,这样即使平均范数最小的蔟,在对冗余滤波器进行剪枝的同时保留了提取特定特征的滤波器,保证了卷积神经网络模型的功能完整性;
[0043]
(2)本发明采用了步骤(3)中剪枝每个蔟后的网络模型精度评估比较方法,判断能否剪枝整个蔟,在保证模型精度的情况下尽可能大的对模型进行压缩;
[0044]
(3)本发明在性能无明显降低的前提下,使整个卷积神经网络模型得到合理的结
构化剪枝压缩优化,不仅能够大大降低参数存储空间,还具备了巨大的运算优化潜力,这将节省巨大的硬件平台的存储资源,能够让卷积神经网络模型在资源受限的平台上更便捷地部署和运行。
附图说明
[0045]
图1是本发明的方法流程图;
[0046]
图2是本发明的方法过程示意图。
具体实施方式
[0047]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0048]
如图1所示,一种基于范数的卷积神经网络模型的滤波器剪枝方法,包括以下步骤:
[0049]
(1)对已经训练好的卷积神经网络模型的每个卷积层的所有滤波器进行可视化处理,得到每个卷积层的每个滤波器的最大激活值,根据最大激活值得到每个卷积层的每个滤波器的输出特征图,利用输出特征图采用聚类算法对每个卷积层的所有滤波器进行聚类,以得到第s个卷积层的m
s
个蔟,其中s∈[1,卷积神经网络模型中卷积层的总数];
[0050]
具体而言,本步骤包括如下子步骤:
[0051]
(1-1)获取一张带有随机噪声的图像x;
[0052]
(1-2)将图像x输入已经训练好的卷积神经网络模型中,并在卷积神经网络模型中进行前向传播,以依次获得每个卷积层的每个滤波器的激活其中i∈[1,卷积层中滤波器的总数];
[0053]
(1-3)对每个卷积层的每个滤波器,使用反向传播算法计算步骤(1-2)得到的激活的卷积核梯度,并使用得到的卷积核梯度来更新图像x,具体为:
[0054][0055]
其中η为反向传播算法中梯度上升的步长;
[0056]
(1-4)对更新后的图像x,重复步骤(1-2)和(1-3),直至每个卷积层的每个滤波器都具有最大激活值为止,具体为:
[0057][0058]
(1-5)对每个卷积层的每个滤波器而言,将该滤波器具有最大激活值时的输出图像作为该滤波器输出的特征图利用输出特征图采用聚类算法对每个卷积层的所有滤波器进行聚类,以得到第s个卷积层的m
s
个蔟;
[0059]
具体而言,本步骤中采用的聚类算法是k-means聚类算法。
[0060]
(2)对于每个卷积层的m
s
个蔟中的每个蔟而言,获取该蔟的每个滤波器的权值参数,根据权值参数并利用欧几里得范数公式计算每个滤波器的p范数,将该蔟中所有滤波器的p范数取均值以得到该蔟的平均范数,再根据平均范数确定该蔟的剪枝率p
s,m
,并按照该蔟的剪枝率p
s,m
在该蔟内进行剪枝,如图2所示,其中m∈[1,m
s
],0.05≤p
s,m
≤0.9;
[0061]
具体而言,对每个卷积层而言,本步骤包括如下子步骤:
[0062]
(2-1)对m
s
个蔟中的每个蔟而言,获取该蔟中每个滤波器的所有权值参数,根据该权值参数并利用欧几里得范数公式计算得到第m个蔟的第l个滤波器的p范数||w
m,l
||2,具体为:
[0063][0064]
其中w
mlj
为第m个蔟的第l个滤波器的第j个权值参数,l∈[1,蔟中滤波器的总数],j∈[1,滤波器的权值参数总数];
[0065]
(2-2)对m
s
个蔟中的每个蔟而言,将该蔟中所有滤波器的p范数||w
m,l
||2进行求和平均,以得到该蔟的平均范数;
[0066]
(2-3)对m
s
个蔟的平均范数从大到小进行排序,根据排序结果按照从小到大设置每个蔟的剪枝率为p
s,m

[0067]
蔟的平均范数越大,说明相应蔟的重要性越高,设置的剪枝率就越低;
[0068]
优选地,p1=0.05,p
s,m嶨1-p
s,m
=0.05;
[0069]
(2-4)对m
s
个蔟中的每个蔟而言,对该蔟中所有滤波器按照p范数||w
m,l
||2从小到大的顺序进行剪枝,直至达到每个蔟的剪枝率p
s,m
时停止剪枝,得到每个蔟更新后的滤波器;
[0070]
步骤(1)对所有滤波器聚类为多个蔟,步骤(2)中对每个蔟按平均范数进行排序后,在每个蔟内按照设置的剪枝率进行剪枝,这样即使平均范数最小的蔟,仍保留部分滤波器,保留了每类特征的滤波器,保证了卷积神经网络模型的功能完整性。
[0071]
(3)对每个卷积层而言,将其m
s
个蔟按照每个蔟的平均范数进行从小到大的排序,根据卷积神经网络模型剪枝每个蔟后的模型精度损失大小,确定该卷积层中能够被剪枝的所有蔟,并对这些蔟进行剪枝,从而得到剪枝处理后的卷积层;
[0072]
具体而言,对每个卷积层而言,本步骤包括如下子步骤:
[0073]
(3-1)设置计数器n=1,t=0;
[0074]
(3-2)将m
s
个蔟按照平均范数从小到大进行排序;
[0075]
(3-3)获取卷积神经网络模型剪枝第n个蔟后的模型精度acc
n
与剪枝第n个蔟前的模型精度acc0之间的差值,作为当前剪枝后的模型精度损失loss
n
,即loss
n
=acc
n-acc0;判断当前剪枝后的模型精度损失loss
n
是否大于0,如果是,则说明剪枝该蔟后模型精度上升,可以剪枝该蔟,设置当前可以剪枝的蔟序号c[t]=n,计数器t=t+1,进入步骤(3-5),否则进入步骤(3-4);
[0076]
(3-4)判断当前剪枝后的模型精度损失loss
n
的绝对值是否小于预设的模型精度损失阈值,如果是,则说明本次剪枝后对模型精度损失的影响较小,可以剪枝该蔟,设置当前可以剪枝的蔟序号c[t]=n,计数器t=t+1,进入步骤(3-5);否则说明该蔟的影响较大,
不能剪枝该蔟,进入步骤(3-5);
[0077]
在本步骤中,预设的模型精度损失阈值取值范围是[0.1%,0.6%],优选值是0.5%。
[0078]
(3-5)设置计数器n=n+1;
[0079]
(3-6)判断计数器n是否等于当前卷积层的蔟个数m
s
,如果是,则进入步骤(3-7),否则,返回至步骤(3-3);
[0080]
(3-7)判断计数器t是否大于等于1,如果是,则对步骤(3-2)排序后的m
s
个蔟,依次将蔟序号c[t]对应的蔟剪枝掉,如图2所示,得到该卷积层中更新后的滤波器,过程结束;否则表示没有可以剪枝的蔟,过程结束。
[0081]
在步骤(3)中,评估卷积神经网络模型剪枝每个蔟后的模型精度损失,模型精度上升,说明剪枝后对模型更有利;模型精度损失在一定范围内,说明该蔟对整个卷积神经网络模型的贡献度比较小,可以剪枝该蔟;模型精度损失较大,说明该蔟对整个卷积神经网络模型的贡献度较大,剪枝后的模型损失较大,不能对该蔟进行剪枝。通过剪枝评估处理,在保证模型精度的情况下尽可能大的对模型进行压缩。
[0082]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1