首页> 中国专利> 一种联合层剪枝和通道剪枝的卷积神经网络压缩方法

一种联合层剪枝和通道剪枝的卷积神经网络压缩方法

摘要

本发明提出了一种联合层剪枝和通道剪枝的模型剪枝算法,该算法包括:步骤1、稀疏化训练;步骤2、分层自适应阈值查找;步骤3、根据阈值确定各层的稀疏率;步骤4、计算层重要性排序;步骤5、层剪枝;步骤6、通道剪枝;步骤7、微调。稀疏化训练使用极化正则化器对卷积神经网络模型进行训练,然后使用分层自适应的剪枝阈值查找方法确定每层的稀疏率,根据每个卷积层的通道稀疏率确定层剪枝基本单位的重要性,并据此重要性确定层剪枝的次序,最后进行层剪枝和通道剪枝得到压缩后的网络结构。该方法能够结合层剪枝和通道剪枝的优点,同时去除卷积神经网络在深度和宽度上的冗余,从而有利于大型卷积神经网络在计算资源受限的边缘设备上部署应用。

著录项

  • 公开/公告号CN113222138A

    专利类型发明专利

  • 公开/公告日2021-08-06

    原文格式PDF

  • 申请/专利号CN202110449059.9

  • 发明设计人 霍静;黄中豪;李文斌;高阳;

    申请日2021-04-25

  • 分类号G06N3/08(20060101);G06N3/04(20060101);

  • 代理机构32360 南京泰普专利代理事务所(普通合伙);

  • 代理人方晓雯

  • 地址 210023 江苏省南京市栖霞区仙林大道163号

  • 入库时间 2023-06-19 12:07:15

说明书

技术领域

本发明涉及一种联合层剪枝和通道剪枝的卷积神经网络压缩方法,属于计算机应用领域。

背景技术

近年来,随着深度学习的高速发展,卷积神经网络已成为图像分类、目标检测、语义分割、深度估计等各种计算机视觉任务的主流方法。大规模的数据集、高端的现代GPU芯片和新的网络架构,使得CNN模型向更大的规模发展。从AlexNet、VGGNet和GoogleNet到ResNet,ImageNet分类挑战赛中的冠军模型由最初的8层CNN模型发展到后来的152层。然而,更大的CNN模型虽然具有更强的性能,但却更耗费计算资源。同时,训练这样的大型网络模型亦更加费时和耗电。虽然CNN被应用到不同的应用中,并在很多任务中取得了巨大的精度提升,但CNN在实际应用中的部署大多受制于三个因素:模型大小、运行时内存、浮点运算量。卷积运算在高分辨率图像上是计算密集型的。一个大型CNN在移动设备上处理一张图像可能需要几分钟,这对许多现实应用来说是无法接受的。

为了将模型部署到嵌入式设备等资源受限的平台上,CNN需要更小更快。其中一个方向即是模型轻量化(模型压缩)技术。CNN在庞大的模型结构中,存在很大程度的冗余,在去掉很多模型参数后,模型的预测精度并没有受到明显影响。模型剪枝即是通过对网络中不重要的参数进行删除,可以达到压缩大小的效果。模型剪枝方法分为两大类,分别是非结构化剪枝和结构化剪枝。

非结构化剪枝中的主要方法是权重剪枝。早期的CNN剪枝研究工作主要集中在卷积的权重上,因为模型参数的数量并不是那么庞大。权重剪枝将执行过程中占所需计算量很大比例的不必要的连接归零。为了CNN架构的一致性,权重只能归零而不能直接去除。因此,权重剪枝需要为每个权重提供特殊的坐标,这在现在的万亿级模型中很难实现。此外,还需要特殊的硬件来加速训练和推理的过程。目前,已经提出了许多方法来确定权重置零的标准,如迭代阈值选择和霍夫曼代码。不正确的权重置零是权重剪枝中的主要问题。

结构化剪枝直接去除结构化的CNN部分,以同时压缩和加速CNN。并得到各种现成的深度学习库的良好支持。在这类方法中,滤波器剪枝最受关注。此外,为了保持CNN架构的一致性,下一层中相应的通道也要进行裁剪。因此,滤波器剪枝需和通道剪枝同时使用。一些方法从CNN中修剪被识别为信息量较少的滤波器。另一些方法则是从被识别为对输出精度影响较小的滤波器进行裁剪,从而压缩网络。滤波器剪枝和通道剪枝可以有效地去除CNN网络中的宽度冗余,从而得到一种新的架构,并且是与硬件平台无关的。因此,滤波器剪枝和通道剪枝被广泛使用。块修剪最早由Lin等人提出。与上述其他方法不同,结构化块剪枝更像是一个重新设计网络结构的过程,因为其目标是完全去除某些网络中的某些结构。为了避免破坏CNN的一致性,只能裁剪不改变输入特征图大小的块,通常是有残差连接的块。尽管有其局限性,但对于一些特殊的架构,块剪枝可以有效地消除深度冗余。

发明内容

本发明是针对卷积神经网络的压缩任务专门提出的算法,该算法联合层剪枝和通道剪枝作为剪枝方式,能够得到高压缩率的模型并提高模型的推理速度。一般来说,卷积神经网络的压缩存在如下难点和局限性:剪枝容易得到不合理的结构,从而影响模型的性能;通道剪枝对提高模型的推理速度作用有限,仅使用通道剪枝只能降低CNN的参数量和浮点计算量;层剪枝容易破坏CNN的结构一致性,改变网络的计算图,从而带来工程实现上的困难。

为解决上述技术问题,本发明提供一种联合层剪枝和通道剪枝的卷积神经网络压缩方法,包括如下步骤:

步骤1、稀疏化训练:使用带有极化正则化项的目标函数对网络进行训练;

步骤2、分层自适应阈值查找:分层绘制缩放因子分布直方图,将组距的宽度设置为0.01。然后从左到右扫描直方图中的组,找到第一个局部最小组,这个组的横坐标就是要找的阈值;

步骤3、根据阈值确定各层的稀疏率:根据各层的阈值,计算该层要裁剪的通道数,计算裁剪通道数与该层原通道数的比值,即为各层的稀疏率;

步骤4、计算层重要性排序:计算各层剪枝单位的重要性,并按照由小到大的顺序进行排序;

步骤5、层剪枝:找到重要性排序中不重要的前N层,将这些结构替换为直连,即将这些层从原网络中删去;

步骤6、通道剪枝:删除网络的卷积层中对应的缩放因子小于该层剪枝阈值的通道;

步骤7、微调:使用原数据集对网络进行微调以恢复精度。

根据本发明的一个方面,所述步骤1中的稀疏化训练,使用带有极化正则化项的目标函数对网络进行训练,总的目标函数是:

这里,L(.)是CNN网络自身的损失函数,R(.)是用于权重衰减的L2正则项,而R

其中,γ是CNN中所有通道的缩放因子所组成的向量,γ

根据本发明的一个方面,所述步骤2中的分层自适应阈值查找,通过分层绘制缩放因子分布直方图,将直方图的组距的宽度设置为0.01,然后从左到右扫描直方图中的组,找到第一个局部最小组,这个组的横坐标就是要找的阈值。

根据本发明的一个方面,所述步骤3中的根据阈值确定各层的稀疏率,根据各层的阈值,计算该层要裁剪的通道数,计算裁剪通道数与该层原通道数的比值,即为各层的稀疏率,其计算方式如下:

其中,l代表该卷积层,c

根据本发明的一个方面,所述步骤4中的计算层重要性排序,通过计算各层剪枝单位的重要性,并按照由小到大的顺序进行排序。层剪枝单位定义为删除CNN中层结构的最小单位,通常是网络中的残差结构,每个层剪枝单位的重要性的计算方式如下:

其中,l代表某一层剪枝单位,Sparsity

根据本发明的一个方面,所述步骤5中的层剪枝,通过找到重要性排序中不重要的前N层,将这些结构替换为直连,即将这些层从原网络中删去。

根据本发明的一个方面,所述步骤6中的通道剪枝,通过删除网络的卷积层中对应的缩放因子小于该层剪枝阈值的通道。

根据本发明的一个方面,所述步骤7中的微调,使用原数据集对网络进行微调以恢复精度。

有益效果:在卷积神经网络的剪枝方法中,通道剪枝能大幅降低模型的参数量和计算量,而层剪枝方法能更好地提高模型的推理速度。本发明提出了联合通道剪枝和层剪枝的卷积神经网络压缩算法,该算法结合了层剪枝和通道剪枝的优点,能够高效、快速地得到高压缩率的模型,同时提高模型的推理速度,具有较高的实用价值。

附图说明

图1是本发明方法流程图。

图2是本发明中稀疏化训练中不同层的缩放因子分布直方图的变化趋势示意图。

图3是本发明中层剪枝单位示意图。

具体实施方式:

为细致展示本发明的目的、特征和优点,下面将结合附图和具体的实施案例来对本发明做进一步详细说明。

如图1所示,在本实施例中,本发明提供了一种联合层剪枝和通道剪枝的卷积神经网络压缩方法,包括如下具体步骤:

步骤1、稀疏化训练:使用带有极化正则化项的目标函数对网络进行训练;

步骤2、分层自适应阈值查找:分层绘制缩放因子分布直方图,将组距的宽度设置为0.01。然后从左到右扫描直方图中的组,找到第一个局部最小组,这个组的横坐标就是要找的阈值;

步骤3、根据阈值确定各层的稀疏率:根据各层的阈值,计算该层要裁剪的通道数,计算裁剪通道数与该层原通道数的比值,即为各层的稀疏率;

步骤4、计算层重要性排序:计算各层剪枝单位的重要性,并按照由小到大的顺序进行排序;

步骤5、层剪枝:找到重要性排序中不重要的前N层,将这些结构替换为直连,即将这些层从原网络中删去;

步骤6、通道剪枝:删除网络的卷积层中对应的缩放因子小于该层剪枝阈值的通道;

步骤7、微调:使用原数据集对网络进行微调以恢复精度。

在进一步实施例中,所述步骤1中的稀疏化训练,使用带有极化正则化项的目标函数对网络进行训练,总的目标函数是:

这里,L(.)是CNN网络自身的损失函数,R(.)是用于权重衰减的L2正则项,而R

其中,γ是CNN中所有通道的缩放因子所组成的向量,γ

在进一步实施例中,所述步骤2中的分层自适应阈值查找,通过分层绘制缩放因子分布直方图,将直方图的组距的宽度设置为0.01,然后从左到右扫描直方图中的组,找到第一个局部最小组,这个组的横坐标就是要找的阈值。

在进一步实施例中,所述步骤3中的根据阈值确定各层的稀疏率,根据各层的阈值,计算该层要裁剪的通道数,计算裁剪通道数与该层原通道数的比值,即为各层的稀疏率,其计算方式如下:

其中,l代表该卷积层,c

在进一步实施例中,所述步骤4中的计算层重要性排序,通过计算各层剪枝单位的重要性,并按照由小到大的顺序进行排序。层剪枝单位定义为删除CNN中层结构的最小单位,通常是网络中的残差结构,每个层剪枝单位的重要性的计算方式如下:

其中,l代表某一层剪枝单位,Sparsity

在进一步实施例中,所述步骤5中的层剪枝,通过找到重要性排序中不重要的前N层,将这些结构替换为直连,即将这些层从原网络中删去。

在进一步实施例中,所述步骤6中的通道剪枝,通过删除网络的卷积层中对应的缩放因子小于该层剪枝阈值的通道。

在进一步实施例中,所述步骤7中的微调,使用原数据集对网络进行微调以恢复精度。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号