基于多级剪枝的结构化网络模型压缩加速方法与流程

文档序号:19529678发布日期:2019-12-27 15:15阅读:293来源:国知局
基于多级剪枝的结构化网络模型压缩加速方法与流程

本发明涉及模型压缩加速技术领域,具体涉及一种基于多级剪枝的结构化网络模型压缩加速方法。



背景技术:

深度卷积神经网络广泛应用在计算机视觉和自然语言处理等相关领域,获得了巨大的成功,随着人们对卷积神经网络的关注度越来越高,越来越多层次更多、结构更复杂的网络如雨后春笋般出现,应用到了越来越多的研究领域,也对硬件设备的发展提出了更高的要求。

随着深度学习的飞速发展,硬件条件的提升并非那样迅速,卷积神经网络的发展依赖于如今计算机设备运算能力的提高和存储空间的增大,尤其是图像处理器的并行计算能力提升。由于神经网络的运行需要消耗大量的存储空间,产生巨大的浮点运算,使得神经网络在移动嵌入式设备上的运行显得非常困难。以经典的vgg-16网络为例,识别一张224*224大小的彩色图片,仅原始网络的参数数量达到了1亿3千万之多,占用逾520mb的存储空间,进行一次前向传播时中间的特征图将会占用近13mb的存储空间,进行逾309亿次的浮点运算。巨大的代价严重制约着卷积神经网络的在嵌入式设备上的应用。

近年来许多研究表明,神经网络实际上存在着巨大的冗余参数,即过参数化,在实际部署时有巨大的优化空间,证明了模型压缩的现实可行性。模型剪枝作为一种高效、普适性强的模型压缩方法被广泛研究,但是现有的剪枝方法实现的压缩效果非常有限,许多参数级的剪枝算法并不能获得实际上的压缩存储和减少运算,许多滤波器级的剪枝算法往往难以兼顾参数缩减和实际的网络加速。因此,设计一种高效的结构化网络模型压缩算法显得尤为重要。



技术实现要素:

本发明的发明目的在于:针对上述存在的问题,提供一种更加高效、域适应能力更强的模型压缩加速的方法。

本发明的一种基于多级剪枝的结构化网络模型压缩加速方法,包括如下步骤:

s1:获取预训练模型,在训练数据集上对待处理的原始网络模型进行训练,得到完备网络模型;

s2:基于预训练模型,测量原始网络模型的卷积层敏感度,通过控制变量法获得各个卷积层的敏感度-剪枝率变化曲线;

s3:敏感度层间迭代剪枝,按照敏感度次序从低到高对当前网络模型进行单层剪枝,微调网络模型;

s4:测量滤波器重要性指数,选取样本作为验证集,测量当前网络模型的滤波器输出特征图的信息熵,即输出图像熵;

s5:图像熵迭代剪枝,根据输出图像熵大小次序对当前网络模型进行迭代柔性剪枝,微调重训练模型;

s6:硬性剪枝,对当前网络模型进行重训练,得到并保存轻量级模型。

其中,步骤s1包括如下步骤:

s11:初始化待处理的网络模型的原始网络参数;

s12:在训练集上进行预训练,获取完备网络模型。

其中,步骤s2包括如下步骤:

s21:设定最大剪枝率范围和剪枝率增长步幅;

s22:采用控制变量法对卷积层进行逐层敏感度计算,得到第i卷积层的敏感度系数si:

si≡acc(l,0)-acc(l,-i),1≤i≤l

其中,acc(l,0)表示原始网络模型在测试数据集上的识别率,acc(l,-i)表示保持非第i卷积层不变,按照一定比率删除第i卷积层的滤波器后在测试数据集上的识别率;

s23:建立当前设定剪枝率下的各卷积层的敏感度次序与剪枝率之间的对应关系,得到卷积层的敏感度-剪枝率变化曲线。

其中,步骤s3包括如下步骤:

s31:计算各卷积层的每个滤波器的f范数||wi,j||f:

其中,wi,j表示第i卷积层的第j个滤波器,wi,j(c,k1,k2)表示第j个滤波器中第c通道上二维参数矩阵的第(k1,k2)个参数值;

s32:按照敏感度次序进行单层硬性剪枝,将确定删除的滤波器从当前网络模型中永久删除,根据滤波器和输出特征通道的对应关系将失效的输出特征通道删除,然后对下一卷积层执行相同的操作,直至遍历完所有卷积层;

s33:对剪枝后的模型加载剩余网络参数,在训练数据集上进行微调重训练。

其中,步骤s4包括如下步骤:

s41:随机取样训练数据集构造验证集;

s42:对于剩余滤波器(当前网络模型的滤波器),在验证集上进行一次前向传播,计算每个滤波器的输出图像熵:

其中ei,j为第i卷积层的第j个滤波器的输出图像熵,pk,l表示特征图中心像素为k且邻域像素为l的像素对,hi,j[s][t]表示第i卷积层的第j个滤波器的输出特征图中(s,t)位置的参数值。

s43:对输出图像熵进行对数归一化分析,建立当前剪枝率下的各滤波器的输出图像熵与剪枝率之间的对应关系。

其中,步骤s5包括如下步骤:

s51:根据滤波器的输出图像熵排序,决定单层之间滤波器的剪枝优先级次序:滤波器的输出图像熵越小,滤波器的剪枝优先级越高;

对当前网络模型进行逐层柔性剪枝,对将要删除的滤波器进行暂时性置零,同时根据滤波器和输出特征通道的对应关系将失效的输出特征通道暂时性置零,然后对下一卷积层执行相同的操作;

s52:加载滤波器级稀疏的网络剩余网络参数,在训练数据集上进行微调重训练。

其中,步骤s6包括如下步骤:

s61:获取滤波器级稀疏的网络的各滤波器的稀疏度;

s62:对当前网络模型的各滤波器的稀疏度进行排序,按照目标剪枝率删除对应比率的滤波器。

s63:加载剩余的网络参数,进行重训练提高网络性能,保存最终的轻量级网络模型的结构和参数。

为了评估基于多级剪枝的结构化模型压缩加速算法的整体性能,可以对原始网络和剪枝后网络进行前向传播时产生的浮点运算次数进行统计,以评估网络的加速效果,对新的网络结构进行网络参数统计,以评估网络的压缩效果。

综上所述,由于采用了上述技术方案,本发明的有益效果是:

通过多级结构化剪枝方法对深度卷积神经网络模型进行压缩,考虑现有神经网络在嵌入式边缘设备上的局限性,采用滤波器剪枝方法改进原始网络,在保持原有网络性能的基础上,最大限度的减少网络参数占用的存储空间,减少网络运行时中间激活层的显存占用,同时减少前向传播过程中进行的浮点运算次数,提高网络运行效率,以达到轻量化网络的目的。本发明能够有效地减少大规模深度卷积的参数冗余,扩大神经网络边缘设备上的应用场景,减少硬件依赖。

附图说明

图1为具体实施方式中,本发明的迭代剪枝方法流程图。

图2为具体实施方式中,本发明的一级敏感度硬性剪枝示意图。

图3为具体实施方式中,本发明的二级图像熵柔性剪枝示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。

参见图1,本发明提出的基于多级剪枝的结构化网络模型压缩加速方法的具体实现步骤如下:

s1:获取预训练模型,在训练数据集上对待处理的原始网络模型进行训练,得到完备网络模型;

s2:基于预训练模型,测量原始网络模型的卷积层敏感度,通过控制变量法获得各个卷积层的敏感度-剪枝率变化曲线;

s3:敏感度层间迭代剪枝,按照敏感度次序从低到高对当前网络模型进行单层剪枝,微调网络模型;

s4:测量滤波器重要性指数,选取样本作为验证集,测量当前网络模型的滤波器输出特征图的信息熵,即输出图像熵;

s5:图像熵迭代剪枝,根据输出图像熵大小次序对当前网络模型进行迭代柔性剪枝,微调重训练模型;

s6:硬性剪枝,对当前网络模型进行重训练,得到并保存轻量级模型。

本发明中,改进现有的从第一卷积层到最后卷积层的逐层顺序剪枝算法,评估每个卷积层剪枝的敏感程度,由于卷积神经网络是一个整体互相关联的系统,所以要从全局意义上考虑每个滤波器对网络性能的影响。具体操作为在原始网络基础上单一的卷积层逐渐删除单个的滤波器,控制其他变量保持不变,比较不同卷积层剪枝后在同一数据集上对应的识别率下降程度,以此为基准定义滤波器重要性指数(敏感度)。采用控制变量法对卷积层逐一进行敏感度分析,将第i卷积层的敏感度定义为:

si≡acc(l,0)-acc(l,-i),1≤i≤l

其中si为第i卷积层的敏感度系数,acc(l,0)为原始模型在的识别率,acc(l,-i)为保持其它层不变,按照一定比率删除第i卷积层滤波器后在测试数据集上的识别率。

由于本发明遵循贪心剪枝策略,当剪除某个滤波器后,该卷积层对应的输出特征图会丢失对应的特征通道,该层特征通道的丢失会导致下一卷积层的所有滤波器的对应通道失效,故在进行滤波器重要性指数评估时可以忽略这些失效的参数,因此剪枝过程总是伴随大量的交叉剪枝,最终得到的剪枝率会大于预先设定的剪枝率。

因此某一卷积层敏感度越高,下降程度越大,表明滤波器敏感度越高,该滤波器越重要。在初始迭代过程中剪枝率选择的剪枝率较大,优先选择低敏感度的滤波器剪除,因为这些低敏感度的卷积层进行剪枝后对网络性能的破坏较小,迭代初期的网络性能的损耗可以迅速恢复,这样相当于在一个与原始网络等价的模型上进行高敏感度卷积层的剪枝,这是基于网络性能和迭代剪枝速率考虑的最优选择。随后在网络规模逐渐减小后,缩小剪枝率进行细微增长的剪枝,剪除敏感度较高的滤波器,花费较长时间的迭代训练恢复性能。此阶段的一级剪枝采用硬性剪枝的策略,因为第一阶段的目的是快速接近目标的剪枝率,采用比较粗放的方式迅速删除存在较大冗余的滤波器。

图2给出了一级敏感度硬性剪枝示意图,该过程分为两个阶段:根据卷积层敏感度次序进行硬性剪枝和微调重训练模型。根据敏感度分析确定要删除的滤波器,接下来将删除该滤波器和其对应的卷积层通道,若当前整体网络的剪枝率未达到初始目标剪枝率,将会进入下一轮的迭代剪枝过程。

随后,在一个较高的剪枝率上执行细微的剪枝,缓慢的删除功能性较弱的滤波器,提升剪枝率。图3表示二级图像熵柔性剪枝示意图,当一级剪枝达到剪枝率增长的瓶颈后,进行二级细微剪枝。

本发明中提出了更加精确性的滤波器重要性衡量指数,即为输出二维图像熵信息量。传统滤波器重要性指数量化标准常常以滤波器的核范数或滤波器输出特征图的稀疏度来衡量,这些想法大多数从数学角度考虑了滤波器对损失函数的影响程度,并未太多关注滤波器的本质性功能。本发明受传统数字图像处理理论中图像信息熵的启发,考虑每个滤波器提取的特征图的信息量,其与滤波器的本质功能直接相关。获得的熵值越大,说明滤波器作为特征选择器效果越好,即剪枝过程中该滤波器被剪除的优先级越低。定义滤波器的重要性指数为输出特征图的二维图像熵(包含像素间的时间信息和空间信息),根据归一化熵确定了每一层滤波器的剪枝次序。将得到的各卷积层滤波器输出熵柱状图,与滤波器的f范数和特征稀疏性分布对比,具有更好的区分性。

每个滤波器的输出图像熵定义如下:

其中ei,j为第i卷积层的第j个滤波器的输出图像熵,pk,l表示特征图中心像素为k且邻域像素为l的像素对,hi,j[s][t]表示第i卷积层的第j个滤波器的输出特征图中(s,t)位置的参数值。

最后本发明中,相关的性能指标包括对新的网络结构进行加速分析:

其中flops代表原始网络中总的浮点运算次数,包括浮点加法运算和浮点乘法运算。k代表卷积核的尺寸,ni,wi,hi分别代表中间特征图的通道数(前一卷积层的滤波器的个数),特征图的长度和宽度,下标用于区分不同的卷积层;

剪枝后的轻量级网络中总的浮点运算次数的计算方式为:

其中flops*代表剪枝后的轻量级网络中总的浮点运算次数,包括浮点加法运算和浮点乘法运算。pi代表第i卷积层的最终滤波器级的剪枝率。实际运算中该测量公式也适用于全连接层,只需令k=1即可;

对新的网络结构进行参数级压缩率分析:

其中p代表剪枝后的参数级的压缩率,分子分母项分别表示剪枝前后各卷积层滤波器的个数。

将本发明在三种广泛应用的卷积神经网络(lenet-5、alexnet和vgg-16)上进行可行性测试,实验结果表明,本发明提出的多级结构化剪枝方案能够有效地实现原始网络的模型压缩,而且能够保持原始网络的性能。在测试数据集识别率基本不变的情况下,多级结构化剪枝方法在lenet-5网络上可以达到60%的以上的剪枝率和5.6倍的浮点运算加速;在alexnet网络上可以达到94%的剪枝率和117.5倍的浮点运算加速,卷积层的参数压缩率能够达到192.3倍;在vgg-16网络上可以达到78.6%的剪枝率,可以减少54.5%的浮点运算,和31.9%的显存占用。因而,本发明的模型压缩方法可以快速恢复网络的原始性能。对常用大型网络有效的减少存储空间和浮点运算,减少了对硬件条件的依赖。

以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1