法律状态公告日
法律状态信息
法律状态
2020-04-14
授权
授权
2018-11-30
实质审查的生效 IPC(主分类):G06N3/08 申请日:20180517
实质审查的生效
2018-11-06
公开
公开
技术领域
本发明属于图像处理技术领域,更进一步涉及一种神经网络跨层剪枝方法,可用于将深度卷积神经网络模型部署到移动端和嵌入式设备中。
背景技术
近年来,由于深度学习在语音识别、图像识别、目标检测等诸多计算机视觉任务中取得了突破性的成果而被广泛应用,成为了机器学习领域最具有代表性的技术。卷积神经网络模型普遍存在的现象是:第一,模型参数多、体积庞大、计算复杂度高且容易出现过拟合;第二,需要依靠非常多的训练数据和高性能并行计算设备进行长时间的训练,对硬件资源要求高,且功耗惊人。以上这些问题的存在都非常不利于深度卷积神经网络模型在移动端和嵌入式设备上的部署和应用。有研究指出,大规模的卷积神经网络中有相当一部分的神经元和连接权重对模型的性能没有实质性的影响,如果可以将这部分从网络中删减掉,不仅可以节省75%的参数,还可以缩减掉约50%的计算时间,说明神经网络模型的压缩具有潜在的可能性。以上背景表明,对深度卷积神经网络中的冗余参数和冗余特征进行剪枝在移动端和嵌入式设备的应用场景中具有重要的现实意义。
Howard等人在其发表的论文“Mobilenets:Efficient convolutional neuralnetworks for mobile vision applications”(Computer Vision and PatternRecognition,2017)中基于空间信息和深度信息分离的思想,将标准卷积操作拆分成一个深度卷积层接一个逐点卷积层,这种方法虽能有效地减少模型参数量和计算量,但由于仅使用深度可分离卷积构建了一个非常简单的直筒结构,对特征的复用性不强;另一方面,在深度卷积层部分,由于输入特征维度过小,再加上非线性的作用容易造成神经元或特征的退化。
Liu Zhuang等人在其发表的论文“Learning efficient convolutionalnetworks through network slimming”(IEEE International Conference on ComputerVision,2017)中对神经网络进行逐层剪枝,首先通过稀疏约束的优化方法将神经网络模型正则化,然后通过恢复和重新训练被剪枝的连接权重来提高预测精度,可以减小模型大小,降低运行内存和计算量,没有精度损失,而且不会给网络带来任何额外的开销。该方法的不足之处是,仅对常规卷积层堆叠而成的神经网络结构剪枝效果较好,但不适用于对具有扩张残差单元结构的神经网络进行剪枝,具有较大的局限性。
发明内容
本发明的目的在于针对上述现有技术的不足,提出一种基于特征冗余分析的神经网络跨层剪枝方法,旨在减少神经网络中神经元或特征的退化,降低神经网络的参数和存储尺寸,克服现有逐通道剪枝方法不适用于对具有扩张残差单元结构的神经网络进行剪枝的局限性。
为实现上述目的,本发明的技术方案是:通过对构建的神经网络中逐点卷积层特征的重要性进行分析,实现对逐点卷积层中冗余特征的剪枝,其实现步骤包括如下:
(1)获取训练样本集:
选用CIFAR10数据集中的60000幅32×32的彩色图像作为输出样本集,共分为10个类,从每一类中随机选取5000幅图,共50000幅图构成输入训练样本集;
(2)构建44层卷积神经网络:
(2a)基于现有的基本扩张残差单元结构,加入降采样层后置策略,将深度卷积层卷积步长为2的扩张残差单元放置在具有相同参数设置的扩张残差单元的后部,得到一个44层卷积神经网络;
(2b)并设置各层参数;
(3)更新44层卷积神经网络参数:
(3a)按照如下损失计算公式,计算44层卷积神经网络的损失值:
其中,L表示44层卷积神经网络的损失值,x表示输入训练样本集,n表示样本的总数,a表示样本x产生的预测值;y表示样本x的真实标签,取值为{0,1};γ表示44层卷积神经网络中逐点卷积层归一化后的权重,λ表示正则项的权重,||·||1表示L1范数操作;
(3b)设初始训练的最大更新次数T1=100,用损失值L更新44层卷积神经网络的每一层参数;
(4)判断初始训练的更新次数是否达到100次,若是,则得到训练好的44层卷积神经网络及各层参数,执行步骤(5),否则,返回步骤(3);
(5)对训练好的44层卷积神经网络进行跨层剪枝:
(5a)取出训练好的44层卷积神经网络中每一个逐点卷积层归一化后的权重,构成权重向量γ,将所有权重向量γ合成一个向量,并将该向量的值按照升序排列,得到排序后的权重向量W;
(5b)按照下式得到全局剪枝阈值在排序后的权重向量W中对应的索引It:
It=N×P
其中,N表示权重向量W的个数,P表示当前设定的剪枝率;
(5c)从排序后的权重向量W中取出索引It对应的权重值,作为全局剪枝阈值T;
(5d)对训练好的44层卷积神经网络中每一个逐点卷积层设置一个与该层权重向量γ维度相同的模板向量M,将每层的权重向量γ中的值与全局剪枝阈值T进行比较:若权重向量γ中的值大于等于全局剪枝阈值T,则将模板向量M中对应位置的值设为1,反之,设为0;
(5e)统计每一个模板向量M中值为1的个数,得到每一个逐点卷积层需要保留的特征通道的数目C,根据所有特征数目C构成的集合构建一个初始的稀疏网络;
(5f)根据每一个模板向量M中值为1的位置,得到每一个逐点卷积层中需要保留的特征通道的索引,构成特征索引向量If;将训练好的44层卷积神经网络中每一个逐点卷积层的特征索引向量If对应的每一个特征通道的权重值,依次复制到构建好的初始稀疏网络中对应的位置,得到剪枝后的稀疏网络。
(6)对剪枝后的稀疏网络进行微调训练,更新剪枝后的稀疏网络参数:
(6a)按照如下损失计算公式,计算剪枝后的稀疏网络的损失值:
其中,Ls表示剪枝后的稀疏网络的损失值,x表示输入训练样本集,n表示样本的总数,a表示样本x产生的预测值;y表示样本x的真实标签,取值为{0,1};
(6b)设微调训练的最大更新次数T2=40,用损失值Ls更新剪枝后的稀疏网络的每一层参数;
(7)判断微调训练的更新次数是否达到40次,若是,则得到微调后的稀疏网络及各层参数,否则,返回步骤(6)。
本发明与现有技术相比具有以下优点:
第一,由于本发明不仅采用基本扩张残差单元结构来减少卷积神经网络中神经元或特征的退化,而且结合降采样层后置策略,将深度卷积层卷积步长为2的扩张残差单元放置在具有相同参数的扩张残差单元的后部,使得卷积层具有更大的激活图,从而提供更多的信息,有利用提高模型性能。
第二,由于本发明针对基本扩张残差单元中深度卷积层参数极少的特点,仅对每一个逐点卷积层中的冗余特征进行剪枝,更好地保留了深度卷积层的有效信息,能够克服现有逐通道剪枝方法不适用于对具有扩张残差单元结构的神经网络进行剪枝的局限性。
附图说明
图1为本发明的实现流程图;
图2为本发明中的44层卷积神经网络的结构示意图;
图3为本发明中的扩张因子为2的基本扩张残差单元结构示意图。
具体实施方式
下面结合附图,对本发明作进一步的详细描述。
参照图1,对本发明实现的步骤作进一步的详细描述。
步骤1,获取训练样本集。
选用CIFAR10数据集中的60000幅32×32的彩色图像作为输出样本集,共分为10个类,从每一类中随机选取5000幅图,共50000幅图构成输入训练样本集。
步骤2,构建44层卷积神经网络。
参照图2,本步骤的具体实现如下:
(2a)基于现有的基本扩张残差单元结构,加入降采样层后置策略,将深度卷积层卷积步长为2的扩张残差单元放置在具有相同参数设置的扩张残差单元的后部,得到一个44层卷积神经网络,结构依次为:
输入层→第一个常规卷积层→第一个扩张残差单元→第二个扩张残差单元→第三个扩张残差单元→第四个扩张残差单元→第五个扩张残差单元→第六个扩张残差单元→第七个扩张残差单元→第八个扩张残差单元→第九个扩张残差单元→第十个扩张残差单元→第十一个扩张残差单元→第十二个扩张残差单元→第十三个扩张残差单元→第二个常规卷积层→全局平均池化层→Softmax分类层;每一个扩张残差单元包括:第1个逐点卷积层→深度卷积层→第2个逐点卷积层,共形成44层卷积神经网络;并在第一个常规卷积层和第二个常规卷积层后使用批量归一化和非线性映射操作;图2中的省略号表示第三至第十一个扩张残差单元;
参照图3,每一个扩张残差单元中的第1个逐点卷积层和深度卷积层后使用批量归一化和非线性映射操作,第2个逐点卷积层后仅使用批量归一化操作;
参照图3(a),将第一个扩张残差单元的输出和第一个常规卷积层的输出进行逐点相加;将第二至第四、第六至第八、第十至第十二个扩张残差单元的输出分别与其前一个扩张残差单元的输出进行逐点相加;
参照图3(b),将第五、第九和第十三个扩张残差单元的输出分别与其前一个扩张残差单元经过步长为2的平均池化操作后得到的输出进行特征拼接;
(2b)设置各层参数:
将输入层的输入通道总数设置为3;
将第一个常规卷积层的卷积核总数设置为32个,卷积核的尺寸设置为3×3,卷积步长设置为1;
将第一个扩张残差单元中第1个逐点卷积层的卷积核总数设置为64个,卷积步长设置为1,深度卷积层的卷积核总数设置为64个,卷积步长设置为2,第2个逐点卷积层的卷积核总数设置为32个,卷积步长设置为1;
将第二至第五个扩张残差单元中第1个逐点卷积层和深度卷积层的卷积核总数均设置为128个,第2个逐点卷积层的卷积核总数设置为64个,其中,将第五个扩张残差单元中深度卷积层的卷积步长设置为2,其余卷积层卷积步长均设置为1;
将第六至第九个扩张残差单元中第1个逐点卷积层和深度卷积层的卷积核总数均设置为256个,第2个逐点卷积层的卷积核总数设置为128个,其中,将第九个扩张残差单元中深度卷积层的卷积步长设置为2,其余卷积层卷积步长均设置为1;
将第十至第十三个扩张残差单元中第1个逐点卷积层和深度卷积层的卷积核总数均设置为512个,第2个逐点卷积层的卷积核总数设置为256个,其中,将第十三个扩张残差单元中深度卷积层的卷积步长设置为2,其余卷积层卷积步长均设置为1;
其中,将所有逐点卷积层的卷积核尺寸均设置为1×1;将所有深度卷积层的卷积核尺寸均设置为3×3;
将第二个常规卷积层的卷积核总数设置为1024个,卷积核的尺寸设置为1×1,卷积步长设置为1;
将全局平均池化层的卷积核尺寸设置为2×2;
将Softmax分类层的输出通道总数设置为10;
将初始学习率设置为0.0001。
步骤3,更新44层卷积神经网络参数。
(3a)利用损失计算公式,计算44层卷积神经网络的损失值L:
其中,x表示输入训练样本集,n表示样本的总数,a表示样本x产生的预测值;y表示样本x的真实标签,取值为{0,1};γ表示44层卷积神经网络中逐点卷积层归一化后的权重,λ表示正则项的权重,||·||1表示L1范数操作;
(3b)设初始训练的最大更新次数T1=100,用损失值L更新44层卷积神经网络中的每一层参数;
步骤4,对44层卷积神经网络的初始训练更新次数进行判断。
判断初始训练的更新次数是否达到100次:若是,则得到训练好的44层卷积神经网络及各层参数,执行步骤5,否则,返回步骤3。
步骤5,对训练好的44层卷积神经网络进行跨层剪枝。
(5a)取出训练好的44层卷积神经网络中每一个逐点卷积层归一化后的权重,构成权重向量γ,将所有权重向量γ合成一个向量,并将该向量的值按照升序排列,得到排序后的权重向量W;
(5b)按照下式得到全局剪枝阈值在排序后的权重向量W中对应的索引It:
It=N×P
其中,N表示权重向量W的个数,P表示当前设定的剪枝率;
(5c)从排序后的权重向量W中取出索引It对应的权重值,作为全局剪枝阈值T;
(5d)对训练好的44层卷积神经网络中每一个逐点卷积层设置一个与该层权重向量γ维度相同的模板向量M,将每层的权重向量γ中的值与全局剪枝阈值T进行比较:
若权重向量γ中的值大于等于全局剪枝阈值T,则将模板向量M中对应位置的值设
为1,反之,设为0;
(5e)统计每一个模板向量M中值为1的个数,得到每一个逐点卷积层需要保留的特征通道的数目C,根据所有特征数目C构成的集合构建一个初始的稀疏网络;
(5f)根据每一个模板向量M中值为1的位置,得到每一个逐点卷积层中需要保留的特征通道的索引,构成特征索引向量If;
(5g)将训练好的44层卷积神经网络中每一个逐点卷积层的特征索引向量If对应的每一个特征通道的权重值,依次复制到构建好的初始稀疏网络中对应的位置,得到剪枝后的稀疏网络。
步骤6,对剪枝后的稀疏网络进行微调训练,更新剪枝后的稀疏网络参数。
(6a)按照如下损失计算公式,计算剪枝后的稀疏网络的损失值Ls:
其中,x表示输入训练样本集,n表示样本的总数,a表示样本x产生的预测值;y表示样本x的真实标签,取值为{0,1};
(6b)设微调训练的最大更新次数T2=40,用损失值Ls更新剪枝后的稀疏网络的每一层参数。
步骤7,对剪枝后稀疏网络的微调训练的更新次数进行判断。
判断微调训练的更新次数是否达到40次:若是,则得到微调后的稀疏网络及各层参数,否则,返回步骤6。
下面结合仿真实验对本发明的效果做进一步说明。
1.仿真条件:
本发明的仿真实验是在单块NVIDIA GTX 1080Ti型号的GPU、运行内存为128GB的硬件环境和PyTorch 0.3.1的软件环境下进行的;选取CIFAR10数据集中除去训练样本集后剩余的10000幅彩色图像作为测试样本集。
2.仿真内容:
采用本发明方法对CIFAR10测试样本集图像进行分类,给出了剪枝前后的分类精度、模型参数和模型尺寸的对比结果,如表1所示。
表1 CIFAR10分类结果
从表1可以看出,本发明方法剪枝前的分类精度为91.53%,剪枝后的分类精度降低到23.96%,经过微调训练后分类精度恢复到91.28%,仅比剪枝前降低了0.25%;将剪枝前的神经网络模型参数从1.96M减少到32K,模型尺寸从15.1M压缩到162K。由此可见本发明方法在分类精度损失极小的情况下,能够极大地减少模型参数、压缩模型尺寸。
机译: 基于特征点的样条插值方法和运用神经网络确定应变-应力关系的方法
机译: 基于特征选择的ST段分类卷积神经网络及其使用方法
机译: 基于特征地图稀疏的卷积神经网络修剪方法