掌桥专利:专业的专利平台
掌桥专利
首页

一种基于类别的滤波器剪枝方法

文献发布时间:2023-06-19 13:26:15


一种基于类别的滤波器剪枝方法

技术领域

本发明涉及图像处理中模型轻量化领域,特别适用于计算资源较少的平台。

背景技术

图像分类与检测是计算机视觉与机器学习领域非常活跃的研究方向。图像分类与检测在很多领域得到广泛应用,包括人脸识别、垃圾分类、行为识别等。可以说,物体分类与检测已经应用于人们日常生活的方方面面。

在深度学习网络中,随着网络深度的加深,现有的卷积神经网络如VGG

其中网络剪枝是对网络结构中不重要的一部分剪枝或者稀疏化,现有的剪枝算法分为结构化剪枝和非结构化剪枝。结构化剪枝是指去掉某些被判定为不重要的滤波器或者某些被判定为不重要的层。非结构化剪枝的本质是将滤波器的某些权重进行删除,同时使用迭代训练对剪枝带来的损失进行逐步调整。知识蒸馏是让简单网络的输出拟合训练好的复杂网络的输出,简单网络作为学生网络,复杂网络作为教师网络。因为教师网络提取出的知识包括预测结果中数据结构间的相似性以及更精确的特征,学生网络可以直接从教师网络中提取知识,而不是直接去学习真实标签。矩阵分解主要是利用神经网络中的冗余对权重矩阵进行降维,即将模型中的卷积和全连接层参数矩阵分解为多个小矩阵乘积的形式,这样可以大大降低模型的体积。轻量化设计则旨在设计更加精简有效的网络。大致分为两大方向:轻量化卷积结构和网络结构搜索。轻量化卷积结构中出现了SqueezeNet

在上述类别中,网络剪枝通过去除冗余权值或冗余的过滤器来进行模型压缩,目标是开发更小、更高效的神经网络,大量实验证明了其在模型压缩方面的优越性。大量的理论和实验证明,在原有网络层的基础上对模型进行剪裁可以在维持高精度的基础上大幅度削减计算量和参数量。卷积层通常是空间稀疏的,也就是说,它的激活输出可能只包含很小的有效区域。作为网络剪枝的一个分支,滤波器剪枝通过去除冗余滤波器来显著减小模型的尺寸,并且已成为当前模型压缩方法的一个热门方向,近年来也激发了许多相关研究。当前剪枝方法主要是通过设计不同的算法来得到滤波器的重要性,然后从不重要的滤波器中移除所有输入和输出连接,从而得到一个参数量较小的模型。但是,当前大部分剪枝方法具有一定的局限性,忽略了分类网络中不同类别的图像对应的滤波器有所不同,保留的重要滤波器内部仍然存在一定的冗余。

本发明提出了的基于类别的滤波器剪枝算法,通过在原始网络层插入一个滤波器激活值生成模块,在网络浅层特征提取部分利用滤波器激活值生成模块对输入的不同特征图的响应程度来判定每个滤波器的重要程度,在高层语义部分依据类别来选择对不同类别响应差异较大的滤波器进行保留,把其余的对类别响应相似度较高的滤波器进行移除,从而在保证模型性能的情况下减少模型的计算量和参数量。

参考文献:

[1]Simonyan K,Zisserman A.Very deep convolutional networks for large-scale image recognition[J].arXiv preprint arXiv:1409.1556,2014.

[2]He K,Zhang X,Ren S,et al.Deep residual learning for imagerecognition[C]//Proceedings of the IEEE conference on computer vision andpattern recognition.2016:770-778.

[3]Szegedy C,Liu W,Jia Y,et al.Going deeper with convolutions[C]//Proceedings of the IEEE conference on computer vision and patternrecognition.2015:1-9.

[4]Huang G,Liu Z,Van Der Maaten L,et al.Densely connectedconvolutional networks[C]//Proceedings of the IEEE conference on computervision and pattern recognition.2017:4700-4708.

[5]Hua W,Zhou Y,De Sa C,et al.Channel gating neural networks[J].arXivpreprint arXiv:1805.12549,2018.

[6]Hinton G,Vinyals O,Dean J.Distilling the knowledge in a neuralnetwork[J].arXiv preprint arXiv:1503.02531,2015.

[7]Zhang X,Zou J,He K,et al.Accelerating Very Deep ConvolutionalNetworks for Classification and Detection[J].IEEE Transactions on PatternAnalysis&Machine Intelligence,2016,38(10):1943.

[8]Iandola F N,Han S,Moskewicz M W,et al.SqueezeNet:AlexNet-levelaccuracy with 50x fewer parameters and<0.5MB model size[J].arXiv preprintarXiv:1602.07360,2016.

[9]Howard A,Sandler M,Chu G,et al.Searching for mobilenetv3[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision.2019:1314-1324.

[10]Zhang X,Zhou X,Lin M,et al.Shufflenet:An extremely efficientconvolutional neural network for mobile devices[C]//Proceedings of the IEEEconference on computer vision and pattern recognition.2018:6848-6856.

[11]Zoph B,Le Q V.Neural architecture search with reinforcementlearning[J].arXiv preprint arXiv:1611.01578,2016.

[12]Krizhevsky A,Hinton G.Learning multiple layers of features fromtiny images[J].2009.

发明内容

本发明提出一种本发明的适用于图片分类的剪枝方法,其中网络浅层用来提取低级特征,类别差异性不大,因此利用每个滤波器的重要程度排序来去除产生有用信息较少的卷积核。网络深层提取的高层特征,特异性较强,因此仅保留对不同类别响应差异较大的滤波器来达到降低模型参数量的目的。技术方案如下:

一种基于类别的滤波器剪枝方法,包括下列步骤:

(1)数据准备,方法如下:

第一步:划分数据集,划分为训练集和测试集;

(2)网络结构搭建,方法如下:

第一步:基于原始VGG-16进行重新搭建,把预测部分的三个全连接层变为两个,交互神经元个数由原来的4096减少到512,得到需要剪枝的原始网络;之后加入激活值生成模块,得到新的网络模型,其中激活值生成模块由一个平均池化层和两个全连接层组成;

第二步:利用数据集中的训练集训练加入激活值生成模块的网络模型,使模型在测试集上的测试准确率达到最高,此时获得一个最优模型;

第三步:再次把训练集输入最优模型,在不改变网络中的任何参数的情况下,利用激活值生成模块和输入图片,得到每个滤波器的激活值,网络中不同层中不同滤波器的权重向量w

其中i代表第i层,Sigmoid代表规一化函数,H和W为输入特征的空间分辨率,I

第四步:计算所有通道重要性剪枝部分的滤波器的激活值方差,将其中所有滤波器的激活值方差进行排序,按照预设定的剪枝比率乘以其中所有滤波器的总数得到索引,排序结果索引对应位置的方差即阈值,将方差大于阈值的滤波器保留即得到浅层网络的剪枝结果;对于后面两层深层网络,根据类别分别计算每个滤波器对应的类别的方差,根据各个方差的大小,选择需要保留的滤波器,即得到深层网络的剪枝结果;

第五步:根据第四步得到的剪枝结果即可得到全局的不同层的剪枝结果然后计算每一层剪枝之后剩余的通道数,改变原始网络每一层通道数,将裁剪后的原始网络使用数据集重新训练,恢复精度;

(3)模型训练,方法如下:

第一步:设置学习率;衰减间隔,训练次数;

第二步:采用交叉熵函数作为损失函数;

第三步:采用SGD优化方法进行模型训练;

(4)效果检测,方法如下:

输入待分类图像,加载好训练好的模型,输出输入图像的分类结果。

本发明的有益效果如下:

1、在分类网络中根据浅层提取的特征都是如纹理和边缘等低级特征和细节信息,具有高度的冗余性。根据不同的滤波器和对输入特征的响应程度不同,本发明使用激活值生成模块来学习浅层网络中不同滤波器的权重,网络计算得到所有训练集图片对于滤波器的权重方差,将所有网络层滤波器的权重方差进行排序,根据预先设定的剪枝比率确定每层的剪枝数目。该方法可以针对性的剪去网络浅层对输入特征不敏感的滤波器来得到浅层网络的剪枝结果。

2、在分类网络中根据深层提取的特征都是语义级别的高级特征,而高级语义级别特征具有高度特异性。本发明在网络中利用上一步使用激活值生成模块来产生对应层内滤波器的权重的基础上,再根据类别分别计算每个滤波器对应的十个类别的方差,选择仅对不同类别响应差异较大的滤波器进行保留,即得到深层网络的剪枝结果。

3、将以上两种方法结合起来对网络整体进行剪枝,既得到一个满足网络提取低级特征最低要求的卷积核数目,又可得到网络深层所需的最小卷积核数目,最大程度上缩减网络参数且尽可能的保留分类性能。

附图说明

图1为所提出的适用于分类网络剪枝算法的网络整体结构图。

具体实施方式

本发明的适用于图片分类的剪枝方法,其中网络浅层用来提取低级特征,类别差异性不大,因此利用每个滤波器的重要程度排序来去除产生有用信息较少的卷积核。网络深层提取的高层特征,特异性较强,因此仅保留对不同类别响应差异较大的滤波器来达到降低模型参数量的目的。针对分类网络中浅层和深层作用不同的原理,提出适用于图片分类的剪枝方法。

下面将结合附图中VGG16网络对实施方式进一步的详细描述:

(1)数据准备:

(a)划分数据集,本方法采用的是分类通用数据集Cifar10

(2)网络的搭建:本发明的网络结构主要为VGG-16和激活值生成模块,利用数据集中的训练集训练加入激活值生成模块的网络模型,使模型在测试集上的测试准确率达到最高,此时获得一个最优模型。

(a)Cifar10数据集具有十个类别,但在Pytorch库中的预训练好的VGG-16是以千分类构造的网络,并且原始VGG-16中预测部分的三个全连接层具有巨大的参数量和计算量。因此在本发明中进行重新搭建并且在原始VGG-16的基础上进行了部分修改,把预测部分的三个全连接层变为两个,交互神经元个数由原来的4096减少到512,得到需要剪枝的原始网络模型。并且在每层网络中加入激活值生成模块,加入激活值生成模块的网络模型。其中激活值生成模块由一个平均池化层和两个全连接层组成。

(b)通过数据集训练网络模型,得到网络层中不同滤波器的权重向量w

w

并且

其中i代表第i层,Sigmoid代表规一化函数,δ表示ReLU的激活函数,W

加入的网络模型通过将w

加权后的特征为

(c)针对网络层中浅层网络部分,计算所有通道重要性剪枝部分的滤波器激活值的方差,将其中所有滤波器的激活值方差进行排序,按照预设定的剪枝比率乘以其中所有滤波器的总数得到索引,排序结果索引对应位置的方差即阈值,将方差大于阈值的滤波器保留即得到浅层网络的剪枝结果;对于后面两层深层网络,根据类别分别计算每个滤波器对应的十个类别的方差,选择仅对不同类别响应差异较大的滤波器进行保留,即得到深层网络的剪枝结果。

根据剪枝结果计算每一层剪枝之后剩余的通道数,改变之前在VGG-16上进行了部分修改的原始网络模型每一层的通道数,得到裁剪后的网络。裁剪后的网络再次使用数据集重新训练,恢复精度。

(3)模型训练:学习率设为0.1;衰减间隔为80,120,160,180,总共训练200次。采用交叉熵函数作为损失函数;采用SGD优化方法,权重衰减率为0.1,动量值为0.9。

(4)评价指标:本发明实验采用分类准确率衡量算法效果。

(5)实验使用所提出的适用于图片分类的剪枝算法。在剪枝并微调后,网络参数量从原网络14.98M降为剪枝后2.53M,只有原网络参数量的16.89%;浮点运算次数(Floating-point Operations,FLOPs)从原网络313.73M降为剪枝完后149M,只有原网络计算量的47.49%.剪枝后的分类准确率为93.75%,未剪枝的网络分类准确率为93.96%,在准确率上仅降低了0.21%。可以证明本发明在大大降低计算量和参数量的基础上几乎实现了原网络的分类性能。

相关技术
  • 一种基于类别的滤波器剪枝方法
  • 一种基于批量特征热图的神经网络滤波器剪枝方法
技术分类

06120113677601