一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

通道全局排序指导剪枝和量化联合的神经网络压缩方法

2023-02-02 02:23:57 来源:中国专利 TAG:


1.本发明属于深度学习领域,涉及一种卷积神经网络压缩方法,具体涉及一种通道全局排序指导剪枝和量化联合的神经网络压缩方法,可用于在计算、存储资源受限的边缘设备上部署图像分类卷积神经网络并完成图像分类任务。


背景技术:

2.卷积神经网络目前已经在视频、图像和语音等信息的处理过程中取得了巨大的成功,这得益于它越来越深和越来越宽的模型架构,但由此也产生了网络推理过程的计算复杂度高和内存空间占用大的问题,使得在计算、存储资源受限的边缘设备上部署卷积神经网络受到限制,尤其是对于移动平台、智能化嵌入式设备、现场可编程逻辑门阵列等需要实时推理完成信息处理的硬件,进而导致卷积神经网络在许多场景,如森林火灾救援、人脸识别等中的应用受到阻碍。
3.因此,既能降低计算复杂度、减少内存占用空间,又能保持卷积神经网络性能的卷积神经网络压缩方法被提出,具体包括剪枝、量化、低秩分解、知识蒸馏等,这些方法可以单独使用,也可以联合使用。其中,剪枝和量化的应用更为广泛。剪枝是删除卷积神经网络中卷积层的部分通道;量化是将权值参数或激活层输出值的浮点数形式转换为比特位表示的整数形式,并且是硬件部署前必不可少的操作。衡量图像分类卷积神经网络压缩方法的标准是在指定压缩比下压缩后网络相比于未压缩网络的分类准确性的下降值大小,下降值越小,则压缩后网络的性能越好。
4.yu po-hsiang等人在2020年发表的论文“joint pruning&quantization for extremely sparse neural networks”(arxiv preprint arxiv:2010.01892)中,公开了一种剪枝和量化联合的图像分类卷积神经网络模型压缩方法,该方法首先提出一个泰勒评分来评价二维卷积层的所有通道在同一层内的通道重要性,然后根据每个二维卷积层的每个通道的泰勒评分,对泰勒评分低于预设阈值的通道进行删除,在完成剪枝后,手动指定权重和激活层的量化位宽,通过微调得到压缩后的图像分类卷积神经网络模型压缩方法。但是,该方法仍然存在的不足之处是,二维卷积层的通道重要性的比较范围只是在同一层内,而且剪枝和量化本质上是互不相关的,并不能确保最大化各自的优势,因此导致在指定压缩比下压缩后网络相比于未压缩网络的分类准确性的下降值大。


技术实现要素:

5.本发明的目的在于针对上述现有技术的不足,提出一种通道全局排序指导剪枝和量化联合的神经网络压缩方法,用于解决现有技术中存在的仅在同一二维卷积层内比较通道重要性且剪枝和量化本质上互不相关导致在指定压缩比下压缩后网络相比于未压缩网络的分类准确性的下降值大的问题。
6.为实现上述目的,本发明采取的技术方案包括如下步骤:
7.(1)获取训练样本集和测试样本集:
8.获取包括m个目标类别且每个类别包含n幅rgb图像的数据集x,并对每幅rgb图像中的图像类别进行标注,然后随机选取数据集x中每类别包含的n0幅图像,并将所选取的共mn0幅rgb图像及其标签组成训练样本集x
train
,将剩余的m(n-n0)幅rgb图像及其标签组成测试样本集x
test
,其中m≥10,n≥6000,n0≥0.8n;
9.(2)构建图像分类卷积神经网络模型o并对其进行迭代训练:
10.构建包括顺次连接的二维卷积层、批归一化层、分段线性激活层、多个残差单元模块、自适应平均池化层、全连接层和softmax激活函数层的图像分类卷积神经网络模型o;第一残差单元模块包括顺次连接的卷积模块和分段线性激活层,且卷积模块的输入与分段线性激活层跳跃连接;第二残差单元模块包括并行排布的卷积模块和平均池化层,以及与卷积模块和平均池化层的输出端连接的分段线性激活层;卷积模块包括多个二维卷积层、多个批归一化层和一个分段线性激活层;其中二维卷积层和分段线性激活层的总数均为l,l≥55,每个二维卷积层包括i个通道,i≥16;
11.(3)对图像分类卷积神经网络模型进行迭代训练:
12.(3a)初始化迭代次数为e,最大迭代次数为e,e≥600,第e次迭代图像分类卷积神经网络模型的权值参数为θe,并令e=0;
13.(3b)将训练样本集x
train
作为o的输入,对每个训练样本进行特征提取,得到mn0个特征图,并对每幅特征图中的目标进行分类,得到每个训练样本的分类结果
14.(3c)采用交叉熵损失函数并通过每个训练样本的分类结果及其对应的标签计算o的损失值再采用随机梯度下降法,通过对权值参数θe的偏导值对θe进行更新,得到本次迭代的图像分类卷积神经网络模型oe;
15.(3d)判断e≥e是否成立,若是,得到训练好的图像分类卷积神经网络模型否则,令e=e 1,oe=o,并执行步骤(3b);
16.(4)计算训练好的图像分类卷积神经网络模型中所有通道的重要性得分并对图像分类卷积神经网络模型进行剪枝和量化:
17.(4a)将从训练样本集x
train
中随机选取的mn1个训练样本及其标签组成的秩生成样本集x
choose
作为的输入,并使用钩子hook函数提取中输入第c幅图像时每个二维卷积层的每个通道的特征图再对进行奇异值分解,得到输入时每个通道的秩然后根据计算每个通道的平均秩后保存,其中,n1≥0.01n0,1≤l≤l,1≤i≤i;
18.(4b)通过每个通道的平均秩计算该通道的重要性得分并对训练好的图像分类卷积神经网络模型中重要性得分最低的ρ个通道进行删除,获得剪枝率为ω的剪枝后的图像分类卷积神经网络模型,其中,a
l
、b
l
分别表示中可优化的伸缩变量、偏移变量;
19.(4c)通过每个二维卷积层的i个通道组成的稀疏掩模计算该二
维卷积层的稀疏性s
l
=||ψ
l
||0,并根据s
l
计算每个二维卷积层的权重量化位宽和每个分段线性激活层量化位宽
[0020][0021][0022]
其中,表示通道被删除,表示通道未删除,||
·
||0表示l1范数,表示向上取整操作,是第l个二维卷积层的权重量化位宽上界,是第l个分段线性激活层所需的激活量化位宽上界,p表示惩罚因子;
[0023]
(4d)根据每个二维卷积层的权重量化位宽和每个分段线性激活层量化位宽对剪枝后的图像分类卷积神经网络模型中每个二维卷积层的权重向量w
l
进行量化,同时替换每个分段线性激活层的激活函数,得到量化后权重向量为w
lq
、分段线性激活层的激活函数为的剪枝量化后的图像分类卷积神经网络模型
[0024]
(5)对剪枝量化后的图像分类卷积神经网络模型重新进行剪枝并更新权重、激活层量化位宽:
[0025]
通过遗传进化算法对中可优化的伸缩变量a
l
、偏移变量b
l
进行优化,并通过a
l
、b
l
的优化结果a
l*
、b
l*
和每个通道的平均秩重新计算每个通道的重要性得分,然后按重新计算的所有通道的重要性得分对剪枝量化后的图像分类卷积神经网络模型重新进行剪枝并更新的权重、激活层量化位宽,得到更新的剪枝量化后的图像分类卷积神经网络模型
[0026]
(6)获取图像分类卷积神经网络的压缩结果:
[0027]
对更新的剪枝量化后的图像分类卷积神经网络模型的权值参数进行微调,获得压缩后的图像分类卷积神经网络模型
[0028]
本发明与现有的技术相比具有以下优点:
[0029]
本发明在对训练好的图像分类卷积神经网络模型计算所有二维卷积层的所有通道的重要性得分后对其进行全局排序,并在通道重要性的全局排序指导下对图像分类卷积神经网络模型联合进行剪枝和量化,解决了现有技术中存在的仅在同一二维卷积层内比较通道重要性且剪枝和量化本质上互不相关导致在指定压缩比下压缩后网络相比于未压缩网络的分类准确性的下降值大的问题。
附图说明
[0030]
图1是本发明的实现流程图;
[0031]
图2是本发明残差单元模块的结构图。
具体实施方式
[0032]
下面结合附图和具体实施例对本发明作进一步的详细描述。
[0033]
参照附图1,本发明包括如下步骤。
[0034]
步骤1)获取训练样本集和测试样本集:
[0035]
获取包括m个目标类别且每个类别包含n幅rgb图像的数据集x,并对每幅rgb图像中的图像类别进行标注,然后随机选取数据集x中每类别包含的n0幅图像,并将所选取的共mn0幅rgb图像及其标签组成训练样本集x
train
,将剩余的m(n-n0)幅rgb图像及其标签组成测试样本集x
test
,本实例中,m=10,n=6000,
[0036]
步骤2)构建图像分类卷积神经网络模型o:
[0037]
构建包括顺次连接的二维卷积层、批归一化层、分段线性激活层、多个残差单元模块、自适应平均池化层、全连接层和softmax激活函数层的图像分类卷积神经网络模型o;第一残差单元模块包括顺次连接的卷积模块和分段线性激活层,且卷积模块的输入与分段线性激活层跳跃连接;第二残差单元模块包括并行排布的卷积模块和平均池化层,以及与卷积模块和平均池化层的输出端连接的分段线性激活层;卷积模块包括多个二维卷积层、多个批归一化层和一个分段线性激活层;其中二维卷积层和分段线性激活层的总数均为l,每个二维卷积层包括i个通道,本实例中,l=55;
[0038]
多个残差单元模块的具体排列方式为:第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第二残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第二残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块

第一残差单元模块;
[0039]
其中,本实例第一残差单元模块的具体结构如图2(a)所示;
[0040]
第一残差单元模块的具体结构为:卷积模块

分段线性激活层,卷积模块的输入与分段线性激活层跳跃连接;
[0041]
其中,本实例第二残差单元模块的具体结构如图2(b)所示;
[0042]
第二残差单元模块的具体结构为:并行排布的卷积模块和平均池化层

分段线性激活层;
[0043]
卷积模块的具体结构为:二维卷积层

批归一化层

分段线性激活层

卷积层

批归一化层;
[0044]
所述的o的每层参数设置为:第一卷积层的卷积核大小为3
×
3,通道数i=16,步长为1;在第一个到第九个第一残差单元模块中的卷积模块中,每个二维卷积层的卷积核大小为3
×
3,通道数i=16,步长为1;第十个第二残差单元模块中的卷积模块中,第一个二维卷积层的卷积核大小为3
×
3,通道数i=32,步长为2,第二个二维卷积层的卷积核大小为3
×
3,通道数i=32,步长为1,平均池化层的核大小为1
×
1,步长为2;在第十一个到第十八个第一残差单元模块中,每个二维卷积层的卷积核大小为3
×
3,通道数i=32,步长为1;第十九个第二残差单元模块中的卷积模块中,第一个二维卷积层的卷积核大小为3
×
3,通道数i=
64,步长为2,第二个二维卷积层的卷积核大小为3
×
3,通道数i=64,步长为1,平均池化层的核大小为1
×
1,步长为2;在第二十个到第二十七个第一残差单元模块中,每个二维卷积层的卷积核大小为3
×
3,通道数i=64,步长为1;每个批归一化层的通道数与它的上一个二维卷积层通道数保持一致;全连接层的通道数为10;自适应平均池化层的核大小为1
×
1,步长为1;所有分段线性激活层由relu函数实现;最后一层激活层由softmax函数实现;
[0045]
步骤3)对图像分类卷积神经网络模型进行迭代训练:
[0046]
步骤3a)初始化迭代次数为e,最大迭代次数为e,本实例中,e=600,第e次迭代图像分类卷积神经网络模型的权值参数为θe,并令e=0;
[0047]
步骤3b)将训练样本集x
train
作为o的输入,对每个训练样本进行特征提取,得到mn0个特征图,并对每幅特征图中的目标进行分类,得到每个训练样本的分类结果
[0048]
步骤3c)采用交叉熵损失函数并通过每个训练样本的分类结果及其对应的标签计算o的损失值再采用随机梯度下降法,通过对权值参数θe的偏导值对θe进行更新,得到本次迭代的图像分类卷积神经网络模型oe,计算o的损失值以及对θe进行更新,计算、更新方法分别为:
[0049][0050][0051]
其中,mn0是输入训练样本的数量,表示输入第c幅图像时网络输出的分类结果,pc表示第c幅输入图像的标签,:=是将公式右边的值赋值给左边的操作,γ表示学习率,本实例中,γ=0.001;
[0052]
步骤3d)判断e≥e是否成立,若是,得到训练好的图像分类卷积神经网络模型否则,令e=e 1,oe=o,并执行步骤3b);
[0053]
步骤4)计算训练好的图像分类卷积神经网络模型中所有通道的重要性得分并获取剪枝量化后的图像分类卷积神经网络模型:
[0054]
步骤4a)将从训练样本集x
train
中随机选取的mn1个训练样本及其标签组成的秩生成样本集x
choose
作为的输入,本实例中,n1=64,并使用钩子hook函数提取中输入第c幅图像时每个二维卷积层的每个通道的特征图再对进行奇异值分解,得到输入时每个通道的秩然后根据计算每个通道的平均秩后保存,其中,1≤l≤l,1≤i≤i,每个通道的秩以及每个通道的平均秩其计算公式分别为:
[0055][0056][0057]
其中,σj,uj,vj分别表示的左奇异向量,前j个奇异值和右奇异向量,是输入第c幅图像时每个通道的秩;
[0058]
步骤4b)通过每个通道的平均秩计算该通道的重要性得分并对训练好的图像分类卷积神经网络模型中重要性得分最低的ρ个通道进行删除,获得剪枝率为ω的剪枝后的图像分类卷积神经网络模型,其中,a
l
、b
l
分别表示中可优化的伸缩变量、偏移变量,实例中,ω=30%;
[0059]
步骤4c)通过每个二维卷积层的i个通道组成的稀疏掩模计算该二维卷积层的稀疏性s
l
=||ψ
l
||0,并根据s
l
计算每个二维卷积层的权重量化位宽和每个分段线性激活层量化位宽
[0060][0061][0062]
其中,其中,表示通道被删除,表示通道未删除,||
·
||0表示l1范数,表示向上取整操作,是第l个二维卷积层的权重量化位宽上界,是第l个分段线性激活层所需的激活量化位宽上界,p表示惩罚因子,本实例中,激活层所需的激活量化位宽上界,p表示惩罚因子,本实例中,
[0063]
步骤4d)根据每个二维卷积层的权重量化位宽和每个分段线性激活层量化位宽对剪枝后的图像分类卷积神经网络模型中每个二维卷积层的权重向量w
l
进行量化,同时替换每个分段线性激活层的激活函数,得到量化后权重向量为w
lq
、分段线性激活层的激活函数为的剪枝量化后的图像分类卷积神经网络模型量化、替换公式分别为:
[0064]
[0065][0066]
其中,w
lq
表示第l个二维卷积层的量化后权重向量,tanh(
·
)表示双曲正切函数,|
·
|表示取绝对值操作,max(
·
)表示取最大值操作,round(
·
)表示将浮点数映射为整数的操作,y
l
表示输入到第l个分段线性激活层的特征向量,表示用于对输入的特征向量进行量化的函数,clamp(
·
,d1,d2)用于将输入数据映射到[d1,d2]区间;
[0067]
步骤5)更新剪枝量化后的图像分类卷积神经网络模型:
[0068]
通过遗传进化算法对中可优化的伸缩变量a
l
、偏移变量b
l
进行优化,并通过a
l
、b
l
的优化结果a
l*
、b
l*
和每个通道的平均秩重新计算每个通道的重要性得分,然后按重新计算的所有通道的重要性得分对剪枝量化后的图像分类卷积神经网络模型重新进行剪枝并更新的权重、激活层量化位宽,得到更新的剪枝量化后的图像分类卷积神经网络模型遗传进化算法对a
l
、b
l
进行优化的实现步骤为:
[0069]
步骤5a)初始化a
l
=1,b
l
=0,计算中每个二维卷积层中i个通道的平均秩的标准差std
l
,将种群pool初始化为大小为p的队列,包含p种随机产生的样本,将种群pool初始化为大小为p的队列,包含p种随机产生的样本初始化突变率为μ,随机步长为λ,梯度迭代更新步数为τ,迭代次数为k,最大迭代次数为k,最高准确性为acc
max
,p≥64,0<μ≤1,50≤τ≤300,k≥330,并令λ=1,k=0,acc
max
=0,本实例中,p=64,μ=0.1,τ=200,k=336;
[0070]
步骤5b)通过从pool中抽样的s种样本和所有通道的平均秩所计算的s组所有通道的重要性得分对进行剪枝后进行量化,获得s个剪枝量化后的图像分类卷积神经网络模型,本实例中,s=16;
[0071]
步骤5c)按照中的权值参数初始化s个剪枝量化后的图像分类卷积神经网络模型的权值参数,将测试样本集x
test
分别输入s个剪枝量化后的图像分类卷积神经网络模型,获得图像分类准确性,将分类准确性最高的网络模型对应的样本作为当前最优的a
l

、b
l


[0072]
步骤5d)随机抽取μ
×
l层二维卷积层,对抽取到的层的对应的a
l

、b
l

进行计算,得到更新后的a
l

、b
l


[0073][0074][0075]
其中,
[0076]
步骤5e)根据更新后的a
l

、b
l

和所有通道的平均秩所计算的每个通道的重要性得分进行剪枝后进行量化,获得新的剪枝量化后的图像分类卷积神经网络模型,将训练样本集x
train
输入新的剪枝量化后的图像分类卷积神经网络模型,使用交叉熵损失函数和随机梯度下降法将梯度迭代更新τ步,获得梯度迭代更新好的剪枝量化后的图像分类卷积神经网络模型;
[0077]
步骤5f)将测试样本集x
test
输入梯度迭代更新好的剪枝量化后的图像分类卷积神经网络模型,获得图像分类准确性acck,如果该准确性大于acc
max
,则acc
max
=acck,并将本次更新后的a
l

、b
l

加入pool,否则,执行步骤5g);
[0078]
步骤5g)判断k≥k是否成立,若是,得到acc
max
对应的最优的a
l*
、b
l*
,否则,令k=k 1,并执行步骤5b);
[0079]
步骤6)获取图像分类卷积神经网络的压缩结果:
[0080]
对更新的剪枝量化后的图像分类卷积神经网络模型的权值参数进行微调,获得压缩后的图像分类卷积神经网络模型微调过程为:
[0081]
步骤6a)初始化迭代次数为t,最大迭代次数为t,t≥1200,第t次迭代剪枝量化后图像分类卷积神经网络模型的权值参数为并令t=0,对关闭权重量化操作,对所有分段线性激活层用relu函数替换函数;
[0082]
步骤6b)将训练样本集x
train
作为的输入,对进行更新,得到本次迭代的图像分类卷积神经网络模型
[0083]
步骤6c)判断是否成立,若是,对中所有分段线性激活层使用函数并执行步骤6d),否则,令t=t 1,并执行步骤6b);
[0084]
步骤6d)判断是否成立,若是,对恢复权重量化操作并执行步骤6e),否则,令t=t 1,并执行步骤6b);
[0085]
步骤6e)判断t≥t是否成立,若是,获得压缩后的图像分类卷积神经网络模型否则,令t=t 1,并执行步骤6b);
[0086]
下面结合仿真实验对本发明的技术效果做进一步的说明:
[0087]
1.实验条件:
[0088]
仿真实验的硬件平台为:nvidia 2080ti gpu,软件平台为:操作系统为linux,python版本为3.7,pytorch版本为1.7.1。
[0089]
仿真实验采用cifar-10图像分类数据集,图片数据类型为rgb,每幅图片的大小为32像素
×
32像素,该数据集包含10种不同类别的带标签的图片,每个类别包含6000副图片;参考官方提供的数据集划分方式,从数据集包含的每个类别中随机选择5000幅图片及其标签作为训练样本集,其余每个类别中的1000幅图片及其标签作为测试样本集。
[0090]
2.仿真内容与结果分析:
[0091]
对本发明和现有的受层内通道评分指导的剪枝和量化联合的方法的分类准确性、压缩倍数分别进行对比仿真,其结果如表1所示。
[0092]
现有的剪枝和量化联合的神经网络模型压缩方法是指:yupo-hsiang等人在其发表的论文“joint pruning&quantization for extremely sparse neural networks”(arxiv preprint arxiv:2010.01892)中,提出的剪枝和量化联合的图像分类卷积神经网
络模型压缩方法。
[0093]
为了评价本发明的效果,利用下述的评价指标公式,分别计算本发明仿真实验中三种方法的分类准确性acc、分类准确性acc下降值

δacc、压缩倍数comp:
[0094][0095]

δacc=acc
未压缩网络-acc
压缩后网络
[0096][0097]
比特运算操作次数bops的计算方法为:
[0098][0099]
其中,ω
l-1
表示第l-1层二维卷积层的剪枝率,ω
l
表示第l层二维卷积层的剪枝率,f
w,l
·fh,l
分别是第l层二维卷积层所有通道的特征图的大小,δ
w,l
·
δ
h,l
分别是第l层二维卷积层对应的卷积核的大小。
[0100]
表1.本发明仿真的acc
未压缩网络
、acc
压缩后网络


δacc、comp对比表
[0101]
方法acc
未压缩网络
acc
压缩后网络

δacccomp现有技术94.03%93.28%0.75%54.01倍本发明94.03%93.93%0.10%54.96倍
[0102]
综合表1可以看出,本发明与现有技术相比,在略高于现有技术的压缩倍数下,

δacc为0.10%,而现有技术的

δacc为0.75%,证明了本方法压缩后的图像分类卷积神经网络模型相比于未压缩的网络模型有较小的分类准确性下降值。
[0103]
以上仿真实验表明:本发明在通道重要性的全局排序指导下对图像分类卷积神经网络模型联合进行剪枝和量化,解决了现有技术中存在的仅在同一二维卷积层内比较通道重要性且剪枝和量化互不相关导致在指定压缩比下压缩后网络相比于未压缩网络的分类准确性的下降值大的问题。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献