一种用于卷积神经网络模型的剪枝方法与流程

文档序号:25522880发布日期:2021-06-18 20:11阅读:303来源:国知局
一种用于卷积神经网络模型的剪枝方法与流程
本发明涉及计算机视觉
技术领域
,是一种应用于卷积神经网络模型压缩的剪枝方法。
背景技术
:近几年,人工智能领域技术发展迅速,基于深度学习的目标检测与识别算法层出不穷,如带有bn(batchnormalization)层的卷积神经网络模型。在深层神经网络中,某一层的输入是其之前神经层的输出,因此,其之前的神经层参数变化会导致其输入的分布产生较大的差异,遂在使用随机梯度下降来训练网络时每次参数更新都会导致中间每一层的输入的分布发生改变,并且越深的层,其输入的分布会改变的越明显。为了解决上述问题,目前大多数深层神经网络在设计时添加批量归一化层(batchnormalization,bn),使得网络在训练过程中神经层的输入保持相同的分布,并且加快网络收敛速度,该层输入输出如下:其中,μ,σ分别为一个batch(批量数据)的卷积层通道对应数据的均值与方差;γ和β分别为放缩因子和偏移量(可学习的变量,用于控制网络能够还原bn之前学习到的特征)。然而,带bn(batchnormalization)层的卷积神经网络模型,由于参数存在冗余,其算法往往需要耗费大量计算资源,而在工程化产品应用时,一般要求在极其有限的计算资源与存储资源下实现任务的实时执行,这就对算法的计算复杂度以及模型精简化提出了较高要求。因此对于已训练好的网络,可以通过一种有效的评判手段,将不重要的连接、边界节点的权重或者卷积核参数进行裁剪来减少模型的冗余,并且减小内存开销。从而在保证模型性能的情况下,最大程度的压缩模型参数及运算量,大幅度提高模型的实时性。技术实现要素:本发明需解决的技术问题:针对带有bn层的卷积神经网络模型进行剪枝,在不降低算法性能的前提下,提升算法预测的实时性并缩减模型大小。为解决上述技术问题,本发明提供了一种用于卷积神经网络模型的剪枝方法,包括以下步骤:步骤s1、数据集和深度卷积神经网络模型的准备;步骤s2、训练稀疏网络:针对深度卷积神经网络,将缩放因子γ加入到lossfunction(损失函数)中,并训练稀疏网络模型,具体的如下公式所示,其中为原网络的的基本loss,为引入的bn层缩放因子γ系数的l1正则约束项,目的是为了诱导bn层的稀疏化,λ为稀疏因子;步骤s3、网络剪枝:将训练好的稀疏网络按照设定的剪枝率进行网络裁剪,获得剪枝后的网络模型;步骤s4、网络微调:使用剪枝后的网络结构和模型在训练集中做微调训练,最终得到剪枝网络模型。进一步地,所述步骤s2包括以下子步骤:步骤s201、解析深度神经网络结构,将带有bn层的卷积层进行标记;步骤s202、设定稀疏率λ,以步骤s1准备的深度卷积网络模型作为预训练模型,在训练集中进行稀疏训练;步骤s203、训练过程中观察loss下降趋势以及在验证集中的平均性能map变化趋势,及时调整稀疏率λ,保证在稀疏训练过程中模型性能不降低。进一步地,所述步骤s3包括以下子步骤:步骤s301、对步骤s2获得的稀疏网络模型,遍历每个bn层中记录γ的最大值,并在其中设置最小值作为阈值上限,然后设定剪枝率p,降序排列所有bn层中各个通道的γ值,以剪枝率对应索引的γ值作为剪枝阈值thr,并且阈值thr不能大于阈值上限;步骤s302、针对每个卷积层,首先按bn层γ值进行通道排序,然后再根据阈值thr获得该层的剩余通道数c,将通道数c趋于32的倍数进行配置;步骤s303、确定剪枝后网络结构,并保存初步的剪枝模型。与现有技术对比,本发明有益效果如下:本发明提出了一种针对带有bn层的深层卷积神经网络剪枝方法,其中创新性的以bn层中的放缩因子γ作为评判该网络连接重要性的手段,基于该手段设计出稀疏训练的目标函数,适用于不同数据集和算法,同时在最终裁剪不重要的网络连接时,增加了对计算平台并行化的考虑,将剪枝后的网络结构设置为规整化连接(通道数为32倍数),最终可以实现在性能不降低的前提下,获得压缩模型,并且能够大幅度缩减模型存储的空间占有率和提升模型预测实时性。附图说明图1为本发明实施例提供的剪枝方法流程图;图2为本发明实施例的稀疏训练过程中loss与map的变化趋势;图3为本发明实施例的网络中带有bn层剪枝前后通道数对比。具体实施方式对于添加bn层的深层神经网络,每一层卷积层的不同通道都会对应不同的缩放因子γ,并且该值在网络训练的过程中还在不断学习,因此,可以通过bn层的缩放因子γ来表征该通道的重要程度,评判网络连接的重要性,从而对网络进行裁剪。下面将结合附图和实施例进一步介绍本发明的具体实施方式。如图1所示,本发明实施例提供了一种用于卷积神经网络模型的剪枝方法,包括以下步骤:步骤s1、数据集和深度网络模型的准备。将数据集划分为:训练集、验证集和测试集,按原始网络训练出网络模型。步骤s2、训练稀疏网络。步骤s201、解析深度神经网络结构,将带有bn层的卷积层进行标记;步骤s202、针对深度卷积神经网络,利用bn层中的缩放因子γ,在训练过程当中来衡量通道的重要性,将缩放因子γ加入到目标函数中,并训练稀疏网络模型,具体的如下公式所示,其中为原网络的的基本loss,为引入的bn层缩放因子γ系数的l1正则约束项,目的是为了诱导bn层的稀疏化,λ为稀疏因子;步骤s203、训练过程中观察loss下降趋势以及在验证集中的平均性能map变化趋势,及时调整稀疏率λ,保证在稀疏训练过程中模型性能不降低。步骤s3、网络剪枝。将训练好的稀疏网络按照人为设定的剪枝率进行网络裁剪,获得剪枝后的网络模型。步骤s301、对s2获得的稀疏网络模型,为了避免剪掉卷积层的所有通道,遍历每个bn层中记录γ的最大值,并在其中设置最小值作为阈值上限,然后设定剪枝率p(默认初始值设置为0.5,后续根据设置剪枝率后的模型性能对p值进行微调,保证性能不变的前提下剪枝率达到最大。),降序排列所有bn层中各个通道的γ值,以剪枝率对应索引的γ值作为剪枝阈值thr,并且阈值thr不能大于阈值上限。步骤s302、由于模型在前向预测过程中通道数为32的倍数时,无论cpu或者gpu运算才能达到最大并行效率,阈值thr获取成功后,针对每个卷积层,首先按bn层γ值进行通道排序,然后再根据thr获得该层的剩余通道数c,将通道数c趋于32的倍数进行配置。步骤s303、确定剪枝后网络结构,并保存初步的剪枝模型。步骤s4、网络微调。使用剪枝后的网络结构和模型在训练集中做微调训练,最终得到剪枝模型。下面为本发明的一个应用实施例,公开了一种应用于yolov3目标检测算法的剪枝方法,包括以下步骤:步骤s1、准备数据集,将数据集分为训练集、验证集和测试集,训练yolov3原始网络,得到原始模型。步骤s2、对上述原始模型进行解析,获得bn层下标index,然后设置稀疏率λ,开始稀疏训练,训练过程中观察loss和map变化,如图2所示,及时调整稀疏率。步骤s3、对稀疏训练得到的模型设置剪枝率p,以获取剪枝阈值thr,再遍历带有bn层的卷积层,修改剪枝后剩余的通道数;其中对应的卷积层原始通道数、剩余通道数和修改后的剩余通道数如图3所示;获得剪枝后的网络结构与初步剪枝网络模型。步骤s4、在训练集上微调训练剪枝后的网络结构,并以上一步获得的初步剪枝网络模型为与训练模型,训练至loss平稳不变化后得到最终的剪枝模型。如表1所示,为剪枝前后模型的对比。(测试环境:ununtu16.04环境、gpu为gtx1080ti)。表1剪枝前后模型对比模型大小map速度原模型248mb0.8125630.0120s剪枝模型38.9mb0.8156290.0066s本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1