通道注意力引导的卷积神经网络动态通道剪枝方法和装置

文档序号:25425314发布日期:2021-06-11 21:38阅读:315来源:国知局
通道注意力引导的卷积神经网络动态通道剪枝方法和装置

本发明涉及信息技术领域,具体地,涉及一种通道注意力引导的卷积神经网络动态通道剪枝方法和装置。



背景技术:

卷积神经网络作为深度学习中的经典模型,已经在计算机视觉领域取得了长足的进步。虽然业界普遍认为网络模型深度越深效果越好,但越深层的卷积神经网络其参数也越大,计算卷积层需要大量的浮点矩阵乘法,导致计算开销增大,从而无法直接应用于存储空间和计算能力受限的手机等嵌入式设备中。通过对网络模型进行压缩剪枝,减小网络模型的复杂度和计算量,可方便其在资源受限的嵌入式设备上高效应用。

现有技术中,专利2020101779121导入训练后的权重并针对bn层进行稀疏化训练,将小于阈值的gamma参数全部置零,将bn层置零的gamma关联的卷积通道删除,保存剪枝后的网络结构和参数。专利2020103881001稀疏化训练模型,对剪枝结束后的模型进行量化,动态量化训练模型直至收敛得到剪枝与量化后的模型。专利2019107881794通过最小化featuremap的重构误差局部调整网络连接权重。专利2019104821221基于深度神经网络中连续两个网络层的关联关系,定义输出输入通道离散正则化项和优化目标函数,训练结束获得结构化稀疏的深度神经网络,进再行循环迭代通道剪枝。

上述的方法在剪枝的通道选择、结合量化方法、最小化重构误差等方面进行了创新,但是在流程上都是采用传统的三步剪枝方法,即训练完整网络、剪枝和微调,普遍存在流程冗长,且剪枝后网络模型性能严重依赖训练后的网络模型质量的问题。



技术实现要素:

针对现有技术存在的问题,本发明提出一种基于通道注意力引导的动态通道剪枝方法。通过使用通道注意力模块进行引导,把卷积神经网络模型的卷积层的通道进行显著性表达,在每次训练迭代中仅选择一组有效通道来激活参与计算,并且当训练结束时,通过直接复制相应的有效卷积层来获得更紧凑的网络,无需额外的微调。

所述方法包括:

在卷积神经网络的卷积层下添加通道注意力模块;

输入图片;

前向传播计算每层卷积层生成的特征图;

根据裁剪率确定全局阈值;

计算每层卷积层每个参与计算的通道网络损失的梯度值并对其进行归一化处理;

计算通道的贡献度;

筛选所述特征图的所有通道中贡献度大于所述全局阈值的通道,并赋其对应的掩码值为1,反之赋掩码值为0;通道输出与对应的掩码值相乘;

判断是否达到预定迭代次数和/或达到正确率阈值以确定是否结束训练?若否,继续迭代进入特征图生成阶段,反之,进入下一步剪枝阶段;

剪枝贡献度小于所述全局阈值的通道所对应的卷积核;

拷贝保留的参数,形成剪枝后的网络。

在其中一个实施例中,所述通道注意力模块包括依次连接的全局平均池化层、sigmoid激活层和逐通道乘积模块;具体工作流程为:

所述全局平均池化层获取所述卷积神经网络卷积层的特征图在通道维度的数值分布情况:

代表第l层卷积层输出的特征图,hl、wl和c分别代表卷积层的第l层输出的特征图的高、宽和通道数量,通过使用所述全局平均池化层,将通道的空间特征编码为全局特征:

其中,gap(fl)表示第l层卷积层输出的特征图经过所述全局平均池化层处理,gl∈r1×1×c为经过所述全局平均池化层得到的全局特征;

所述sigmoid激活层对通道的重要性重新建模,通过sigmoid函数获得每个通道0~1之间归一化的权重,使得不重要的通道对应的权重趋近于0,重要的通道对应的权重趋近于1,所述sigmoid函数为:

所述逐通道乘积模块将通道归一化后的权重和所述卷积神经网络卷积层的输出进行乘积,以将归一化后的权重加权到每个通道的特征上:

fl′=sigmoid(gap(fl))·fl

其中,fl为经过通道注意力模块后得到的特征图。

具体的,确定全局阈值,包括:

根据裁剪率确定全局阈值,包括:

假设p代表裁剪率,n代表所述特征图的全部通道数量:

确定裁剪率p和所述特征图的全部通道数量n;

返回所有通道贡献度中第p×n小的值确定为所述全局阈值。

在其中一个实施例中,计算第l层第k个参与计算的通道的网络损失的梯度值并对其进行归一化处理:

其中,代表卷积神经网络卷积层的第l层卷积核的第k个通道的网络损失的梯度值;表示对应归一化处理后的网络损失梯度值。

计算通道贡献度的方法为:

以第l层卷积层第j个通道为中心,计算其他通道与该通道网络损失梯度绝对距离的累加值,对l层中k个通道进行遍历,找到累加值最小的一个通道为中心:

令此时中心通道的网络损失梯度为则最小平均距离为:

计算每个通道的贡献度:

时,趋于无穷大。

本发明还提供实施上述方法的剪枝装置,所述装置包括:

通道注意力模块,用于通过学习的方式来自动获取到每个通道的重要程度,然后依照所述重要程度去提升有用的特征并抑制对当前任务用处不大的特征,突出通道的显著性;

训练模块,用于迭代计算通道的贡献度和动态选择通道,当达到预定的迭代次数和/或每次迭代达到预定的正确率阈值时,结束训练;

剪枝模块,用于训练结束后剪枝贡献度小于全局阈值的通道所对应的卷积核;

存储模块,用于拷贝保留的参数及剪枝后的卷积神经网络。

本发明还提供实施上述方法的计算机设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。

本发明还提供实施上述方法的计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-5任意一项所述的方法。

通过上述处理,可实现卷积神经网络模型在训练过程中完成剪枝工作,其创新点在于:

一、本发明提供的动态通道剪枝方法实现了卷积神经网络模型的训练和剪枝任务同步完成,比以往的训练-剪枝-微调三个步骤节省了微调步骤,从而节省大量时间;且克服了现有技术方法中剪枝后的网络模型性能严重依赖训练后的网络模型质量的缺陷。训练流程根据通道贡献度动态地选择通道参与计算和训练,保留贡献度大的通道,且该过程采用归一化方法确保在每层卷积层的通道贡献度衡量标准在同一尺度,保证剪枝的准确率。另外,压缩了卷积神经网络模型的同时不损失模型的识别度,扩大了其应用范围。

二、通过通道注意力模块引导,自动获取到每个通道特征的重要程度,提高了训练和剪枝的效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:

图1是本发明提供的一个较佳实施例中通道注意力引导的卷积神经网络动态通道剪枝方法的流程示意图;

图2是本发明提供的一个较佳实施例中通道注意力模块结构示意图;

图3是本发明提供的一个较佳实施例中通过通道注意力模块突出重要通道的方法流程示意图;

图4是本发明提供的一个较佳实施例中通道注意力引导的卷积神经网络动态通道剪枝装置结构示意图;

图5是vgg16在cifar-10分类任务上各种裁剪率下的准确率;

图6是本发明提供的一个较佳实施例中计算机设备内部结构示意图;

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。

下面结合附图对本发明的实施方式进行详细说明。

在一个实施例中,如图1所示,以3×3卷积层为例,提供了一种通道注意力引导的卷积神经网络动态通道剪枝方法。请同时参阅图4装置结构示意图,具体流程如下:

step1:在卷积神经网络3×3卷积层下添加通道注意力模块101。

如图2所示,提供了一种较佳实施例中的通道注意力模块的结构示意图。通道注意力模块101包括依次连接的全局平均池化层11、sigmoid激活层13和逐通道乘积模块15。具体实施过程中,卷积层可以是其他类型,并不局限于3×3型。

如图3所示,是所述通道注意力模块101的工作流程图。

step1-1:所述全局平均池化层11用于获取所述卷积神经网络所述3×3卷积层的特征图在通道维度的数值分布情况:

在本发明中,假设卷积神经网络有l个卷积层,0<l≤l,令代表第l层卷积层输出的特征图,hl、wl和c分别代表卷积层的第l层输出的特征图的高、宽和通道数量,通过使用所述全局平均池化层11,将通道的空间特征编码为全局特征:

其中,gap(fl)表示第l层卷积层输出的特征图经过所述全局平均池化层11处理,gl∈r1×1×c为经过所述全局平均池化层11得到的全局特征;

step1-2:所述sigmoid激活层13对通道的重要性重新建模,通过sigmoid函数获得每个通道0~1之间归一化的权重,使得不重要的通道对应的权重趋近于0,重要的通道对应的权重趋近于1,所述sigmoid函数为:

step1-3:所述逐通道乘积模块15将通道归一化后的权重通过和所述卷积神经网络3×3卷积层的输出进行乘积,以将归一化后的权重加权到每个通道的特征上:

fl′=sigmoid(gap(fl))·fl

其中,fl′为经过通道注意力模块后得到的特征图,是通过原始特征图fl和0~1之间归一化的权重进行通道维度的相乘而得到。

所述通道注意力模块101通过学习的方式自动获取了每个通道的重要程度,然后依照所述重要程度去提升有用的特征并抑制对当前任务用处不大的特征。所述重要程度通过权重系数来衡量,权重系数不小于根据任务而设定得特定值时认为该通道重要,反之则认为不重要。

step2:输入图片;

分别代表卷积神经网络中第l层卷积层第k个通道的卷积核和相应的输出,表示卷积核是3维的,r代表维度,k×k是2维卷积核大小;cl-1代表卷积神经网络中第l层卷积层的输入通道数量,也代表有cl-1个k×k卷积核,只有当卷积核数量与上一层特征图输出的通道数量一致才能进行卷积操作。,定义ul代表卷积神经网络中第l层卷积层的所有通道贡献度,则p代表裁剪率,t代表全局阈值。

step3:前向传播计算每层卷积层生成的特征图。

step4:根据裁剪率p确定全局阈值t;

具体的,对于给定的裁剪率p和所述特征图全部通道数量n,需要确定全局阈值t来选择p×n个通道用0值代替。t代表所述全局阈值,

t←p-min{u∈ul,1≤l≤l}

利用函数p-min返回所有通道贡献度中第p×n小的值作为全局阈值t。

step5:计算每层卷积层每个参与计算的通道网络损失的梯度值并将其归一化处理。

具体的,假定批次b={x={x1,x2,…,xm},y={y1,y2,...,ym}},则批次b的损失函数定义为j(b,w),具体类型由原网络的任务决定,如分类任务、检测任务等。w代表网络参数。若卷积核对应的通道输出被移除,即其与被赋为0的掩码值相乘后,则loss值公式表示为:

通过泰勒展开方法进行通道重要性的计算。用泰勒级数在处展开,

忽略掉高阶级数,

而对于具有多变量输出的通道为:

其中,m是在训练中参与计算的通道数量,即所有激活通道的数量,是通道的网络损失的梯度值。对其进行归一化处理:

其中,表示计算标准归一化处理后的梯度值。

采用归一化确保在每层卷积层的通道贡献度衡量标准近似在同一个尺度,使剪枝更精准。

step6:计算通道的贡献度。

其中一个较佳实施例中,计算通道贡献度的方法为:

以第l层卷积层第j个通道为中心,计算其他通道与该通道网络损失梯度绝对距离的累加值,对l层中k个通道进行遍历,找到累加值最小的一个通道为中心:

令此时中心通道的网络损失梯度为则最小平均距离为:

计算每个通道的贡献度:

时,趋于无穷大。

step7:筛选所述特征图所有通道中贡献度大于所述全局阈值t的通道并赋其对应的掩码值为1,反之赋掩码值为0;通道输出与掩码值相乘;

构造掩码对贡献度大于所述全局阈值t的通道对应的掩码值赋为1,否则赋值为0;即

通道输出与掩码相乘,即

此步骤,根据p-min计算出通道对应的掩码从而挑选出有用的通道,低贡献度的通道被赋值为0并丢弃而不参与计算。所述全局阈值t随着通道贡献度ul的更新而更新,为动态选取通道打下基础。

step8:判断是否结束训练。当达到预定的迭代次数和/或正确率阈值时,结束训练,进入step9剪枝阶段;否则返回step3继续进行训练。

具体的,此时的迭代次数根据卷积神经网络的具体类型及所需实现的任务人为设定,同理正确率阈值的设定也是如此,例如此处的正确率阈值可指目标分类的正确率要求。当达到设定的迭代次数和/或每次训练能达到稳定的正确率时,结束训练。

step9:剪枝贡献度小于全局阈值t的通道所对应的卷积核。若剪枝掉卷积神经网络第l层卷积层的第k个卷积核,即为丢弃

step10:拷贝保留的参数,形成剪枝后的网络。

如图5所示,是vgg16在cifar-10分类任务上各种裁剪率下的准确率,由此可看出控制剪枝率的情况下,剪枝准确率可大大提高,克服了现有技术方法剪枝后网络模型性能严重依赖训练后的网络模型质量的缺陷,具有更好的应用前景。

通过上述处理,可实现卷积网络模型在训练过程中完成剪枝工作,比以往的训练-剪枝-微调三个步骤节省大量时间。通道贡献度的更新量和衰减量将共同决定该通道是否再次进入前向传播,因此本发明提供的动态剪枝方法的训练流程可根据通道贡献度动态地选择通道参与训练,仅保留贡献度大的通道。通过通道注意力自动获取到每个特征通道的重要程度,提高了训练和剪枝的效率。

如图4所示,是本发明提供的动态通道剪枝装置,包括:

通道注意力模块101,用于通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征,突出通道的显著性。其重要程度的衡量依赖于通道的权重系数。

训练模块102,用于迭代计算通道的贡献度和动态选择通道,当达到预定的迭代次数和/或每次迭代达到预定的正确率阈值时,结束训练;

剪枝模块103,用于剪枝训练结束后贡献度小于全局阈值t的通道所对应的卷积核;

存储模块104,用于拷贝保留的参数及剪枝后的卷积神经网络。

如图6所示,是实施本发明的实施例的计算机设备。可以包括一个或多个中央处理单元(cpu),其可以根据存储在只读存储器(rom)中的计算机程序指令或者从存储单元加载到随机访问存储器(ram)中的计算机程序指令,来执行各种适当的动作和处理。在ram中,还可存储设备操作所需的各种程序和数据。cpu、rom以及ram通过总线彼此相连。输入/输出(i/o)接口也连接至总线。

设备中的多个部件连接至i/o接口,包括:输入单元,例如键盘、鼠标等;输出单元,例如各种类型的显示器、扬声器等;存储单元,例如磁盘、光盘等;以及通信单元,例如网卡、调制解调器、无线通信收发机等。通信单元允许设备通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

上文所描述的方法例如可由设备的处理单元执行。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元。在一些实施例中,计算机程序的部分或者全部可以经由rom和/或通信单元而被载入和/或安装到设备上。当计算机程序被加载到ram并由cpu执行时,可以执行上文描述的方法的一个或多个动作。

然而本领域技术人员可以理解,方法的步骤的执行并不局限于图中所示和以上所述的顺序,而是可以以任何其他合理的顺序来执行,或者可以并行执行。此外,设备也不必须包含上述所有组件,其可以仅仅包含执行本发明中所述的功能所必须的其中一些组件,并且这些组件的连接方式也可以形式多样。例如,在设备是诸如手机之类的便携式设备的情况下,可以具有与上述相比不同的结构。

本发明可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言-诸如smalltalk、c++等,以及常规的过程式编程语言-诸如"c"语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(lan)或广域网(wan)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上所述的本发明实施方式,并不构成对本发明保护范围的限定,任何在本发明精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。

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