自2012年以来,深度卷积神经网络[1-3](Deeply convolutional neural network,DCNN)在许多计算机视觉任务中取得了巨大成功,例如图像分类[4],人脸识别[5],物体检测[6],图像生成[7]和视频分析[8]等等。然而,深度网络模型大、参数量多,故深度学习方法难以应用于具有有限存储和计算资源的硬件设备,例如蜂窝电话。模型压缩是解决这个问题的一种有效方法,它旨在不牺牲准确率的前提下减少模型冗余。目前,模型压缩的研究主要包括三类:量化[9-10](quantization),稀疏或低秩压缩[11-12](sparse or low-rank compressions)和通道修剪[13-14](channel pruning)。
量化通过将浮点权重量化为低比特权重(例如,8比特或甚至1比特)减小模型大小。Gong等人[9]使用K均值标量量化(k-means scalar quantization)对全连接层的权重进行量化;Rastegari等人[10]将网络中的参数量化为1/-1,提出二元权重网络(Binary-Weight-Networks,BWN)和XNOR-Net二值化网络,在大规模数据集上实现了与其全精度网络相当的精度,同时达到了减少模型存储空间的目的;Li等人[15]对XNOR-Networks网络进行改进,对输入进行高精度二值量化,实现高精度的二值网络计算;然而,当二值网络应用于诸如GoogleNet[16]这类大型网络时,准确性会显著降低,为了解决这个问题,Hou等人[17]提出了一种与对角线黑塞(diagonal Hessian)近似的近端牛顿算法,该算法将二元权重的损失最小化。
目前,稀疏连接或低秩压缩的研究有很多,Denton等人[11]提出一些卷积核的低秩近似和聚类方法;在文本识别中,Jaderberg等人[12]采用张量分解方法使得准确率下降1%的情况下速度提高了4.5倍;以张量分解的思想为基础,Lebedev等人[18]提出了核张量的标准多元(canonical polyadic,CP)分解;奇异值分解(singular value decomposition,SVD)是另外一种比较流行的低秩分解方法,Denil等人[19]采用SVD对网络进行去冗余;Wen等人[20]使用Group Lasso对网络参数进行正则化,实现网络参数的结构化稀疏,使网络得到加速。稀疏连接或低秩压缩可以达到高压缩率,但可能会生成不规则的卷积核,需要稀疏矩阵来加速计算,稀疏矩阵操作在硬件平台上运算效率不高。
通道修剪通过直接移除冗余通道来压缩模型,有助于提高量化效率并实现更紧凑的模型。Han等人[13]根据神经元连接权值的大小确定修剪训练后网络中的不重要连接,来减少网络所需要的参数;Luo等人[14]根据下一层的特征图来决定当前层卷积核是否被修剪,通过剪枝卷积核的方式达到模型压缩和加速;Li等人[21]通过计算权重绝对值之和来衡量通道的重要性;而Luo等人[22]认为权重值的大小不能准确衡量卷积核的重要性,提出了一种用熵值衡量卷积核重要性的方法;在大型的深度学习网络中,大部分的神经元的激活都是趋向于零的,而这些激活为0的神经元是冗余的,Li等人[23]用零的百分比(Average Percentage of Zeros,APoZ)统计每个卷积核中激活为0的权重值数量,并对具有高APoZ值的卷积核进行修剪。
自2012年,Krizhevsky等人[24]提出经典CNN——AlexNet,深度卷积神经网络成为图像分类的主流方法。人们陆续研究出很多更加有效的分类方法,比如VGGNet[25]、GoogleNet[16]、ResNet[26]等等,随着CNN层数变的越来越深,图像分类效果也越来越好。VGG-19[25]网络采用16-conv+3-fc的架构,展示出网络的深度是算法优良性能的关键部分。GoogleNet[16]通过在单层卷积层上使用多种尺度的卷积核,网络的特征提取能力大大增强。2015年,He等人[26]提出残差卷积神经网络(Residual Convolutional Neural Networks,ResNets),该网络中引入残差块,训练时间大大缩短,图像分类的准确率再次提升。
为了使网络中层间信息流最大化,Huang等人[27]提出密集连接卷积神经网络(Dense Convolutional Network,DenseNet),在每个Dense Block中,每一层都接收其前部所有卷积层的输出特征图作为输入,这样每一层都重新在其之前所有层的输出中提取有用信息。DenseNet的作者Huang等人[28]针对DenseNet的一个最大缺点:显存占用较大,提出CondenseNet,该网络通过自学习卷积group操作以及在训练时候的剪枝来达到降低显存、提高速度的目的。与其他网络相比,DenseNet网络前层特征作为后层的输入,效率更高,可以有效提高图像分类准确率,但可以发现,并非每个后部层都需要所有先前层的特征,而且很难预测哪些特征应在何时使用。针对这个问题,受CondenseNet网络的启发,本文提出一种通过自学习移除DenseNet网络中冗余通道的方法。在CondenseNet中,作者提出了可学习的分组卷积,主要是针对1×1卷积,优化1×1卷积的计算量,本文方法在原DenseNet网络上,对3×3卷积层剪枝冗余通道。通过自学习获得每个卷积层输入特征图中的冗余通道,对冗余通道的对应卷积核权重值填零,达到移除冗余通道的目的。首先,提出了一种衡量每个卷积层输入特征图对输出特征图贡献度大小的方法,贡献度小的即为冗余特征图;其次,通过自学习,网络分阶段剪枝冗余通道,得到了稀疏密集连接卷积神经网络(Sparse densely concatenated convolutional neural network,Sparse-DenseNet),该网络剪枝了密集连接网络中的冗余通道,减少了网络参数,降低了存储和计算量;最后,在图像分类数据集CIFAR-10/100上进行实验,在不牺牲准确率的前提下减少了模型冗余,验证了本文方法的有效性。
密集连接卷积神经网络由多个密集块(Dense Block,DB)组成,每个密集块由多层组成,如图1所示。每层产生k个特征,其中k被称为网络的增长率。DenseNet网络的一个重要特性是每个卷积层的输入是同一密集块内所有先前层生成的所有特征图的串联。因此,第l层接收lk个输入特征图。即:
xl=Hl([x0,x1,…,xl-1])
(1)
其中,Hl(•)表示复合函数BN-ReLU-Conv:批量归一化(Batch Normalization,BN),ReLU函数,卷积(Convolution)。x0,x1,…,xl-1指第0个卷积层到第l-1卷积层的输出特征图。本文实验选取40层DenseNet网络为基础网络,该网络由3组结构相同的密集块组成,每个密集块包含12个3×3卷积层,每个卷积层的输出特征图数均为12。
图1 基础Dense Block图
Fig.1 Dense Block
在DenseNet网络中,3×3卷积层的卷积过程如图2所示。其中,L表示该卷积层输入特征图数量,用H、W表示输入特征图的宽和高,通过卷积层,输入特征图X∈RL×H×W将生成N个是输出特征图X′∈RN×H×W,该过程通过3维卷积核f∈RL×K×K完成,卷积核的数量与输出特征图的数量相同,图中的白块表示3×3卷积核,卷积核中即为网络权值,每个卷积核是由L个2维卷积核K∈RK×K组成,所有的卷积核可以表示为F∈RL×K×K×N,那么每个卷积层的计算量为L×N×K×K×W×H,若每个卷积层的输入通道数剪枝1/3,那么每个卷积层的计算量将减少1/3。
图2 3×3卷积层卷积过程图
Fig.2 Convolution process diagram of 3×3 convolutional layer
根据上述3×3卷积原理及图2可以看到,中间每一行权值都与一个输入特征图相对应,且与所有输出特征图相对应,故每一行权值表示一个输入特征图对其所有输出特征图的影响大小,本研究将每一行的权重进行绝对值加和,该值本质上就是权值的L1范数,如图2中的中间每一行,本文采用每一行权重绝对值之和衡量每个输入特征图对后层特征图的贡献度,卷积核F可变换为其中,那么可用衡量第i个输入特征图的对后层特征图的贡献度,该值越小贡献度越小,优先被剪枝。
本研究通过自学习确定冗余通道,进行冗余通道的剪枝。为了减小权重修剪对准确性的负面影响,剪枝过程分三个阶段:训练、剪枝、优化。第一阶段为常规的网络权重训练,该阶段采用稀疏正则化,使学习到的权重呈现稀疏分布,降低第二阶段通道剪枝对图像分类精度的影响;第二阶段为剪枝阶段,该阶段分两步完成,若剪枝通道数为C,则每次剪枝数为C/2,最后剩余输入通道数为L-C,本研究将剪枝过程分两步同样是为了减小权重修剪对准确性的负面影响,图3为剪枝方法图,通过计算权重绝对值和确定对输出通道贡献度小的输入通道为剪枝通道,本研究没有直接移除这些通道而是通过对对应权重填0达到移除通道的目的,图中0代表通道被剪枝,通过权重绝对值加和的大小值来确定输入通道对输出通道的贡献度,该值本质上就是权值的L1范数,本研究通过剪枝实现网络的L1范数正则化,产生一个稀疏模型,用于特征选择并一定程度上可以抑制过拟合,且实验证明该方法简单有效;第三阶段是网络进一步训练优化阶段,使网络得到充分的优化学习。
图3 第二阶段剪枝过程图
Fig.3 The second stage pruning method diagram
CIFAR数据集[29]分为CIFAR-10和CIFAR-100,均是大小32×32的彩色图像。CIFAR-10/100数据集中,测试集均包含50000张图像,训练集均包含10000张图像,分别有10类和100类。实验中对两种数据集采用了标准数据增强方案:首先用零在输入图像边上各填充4像素,随机裁剪生成32×32的图像,然后将图像进行水平翻转。为了公平比较,网络训练参数均按照文献[24]进行设置,采用随机梯度下降(SGD)更新权重,最小batch为64,权重衰减为1e- 4,牛顿动量为0.9。训练的最大训练轮数(epoch)为300,学习率从0.1开始,采用Loshchilov等人[30]提出的余弦形状学习率(cosine shape learning rate),平滑地退化学习率,在第50个epoch进行第一次剪枝,剪枝数为输入特征图的15%,第100个epoch进行第二次通道剪枝,在第一次基础上再剪枝15%,总共剪枝输入通道的30%,150epoch进入网络的优化阶段。在本文的工作中,主要使用测试集分类准确率、模型参数量、浮点运算数来评估本文方法的有效性。
在DenseNet网络的训练中,采用的训练策略为:训练的最大训练轮数为300,学习率从0.1开始,最大epoch的50%之后降为0.01,75%之后降为0.001。为了公平比较,排除采用余弦形状学习率对分类准确率的影响,本文在40层DenseNet- 40网络,CIFAR-10/100数据集上,采用余弦形状学习率进行实验,实验结果如表1所示,表2列出了DenseNet- 40网络及Sparse-DenseNet- 40网络的参数量及计算量,可以看到,与DenseNet- 40网络相比,Sparse-DenseNet- 40网络的参数量及浮点运算量(FLOPS)均减少了30%,但Sparse-DenseNet- 40网络与DenseNet- 40网络相比,错误率还略低,说明本文提出的剪枝通道方法达到了压缩模型且不影响分类准确率的目的,证明了本文方法的有效性。
表1 不同模型在CIFAR-10/100上的实验结果(%)
Tab.1 The results on different models (%)
模型CIFAR-10错误率CIFAR-100错误率DenseNet-405.3325.72DenseNet-40(cosine)5.1125.27Sparse-DenseNet-40(cosine)4.9425.25
表2 不同模型的参数量和浮点运算数对比
Tab.2 The params and FLOPS on different models
模型参数量计算量DenseNet-401.0M530MSparse-DenseNet-400.7M370M
在密集连接卷积神经网络中,每一层都接收其前部所有卷积层的输出特征图作为输入,效率更高,但并非每个后部层都需要所有先前层的特征,而且很难预测哪些特征应在何时使用。为了移除DenseNet网络每一层的冗余输入通道,减少参数量,降低存储和计算量,本文提出一种通过自学习移除DenseNet网络中冗余通道的方法。在网络训练时,通过自学习获得输入每个卷积层特征图中的冗余通道,对冗余通道的对应卷积核权重值填零,达到移除冗余通道的目的。首先,提出了一种衡量每个输入特征图对后层特征图贡献度大小的方法;其次,给出了通过自学习,网络分阶段剪枝冗余通道的训练过程,得到了稀疏密集连接卷积神经网络;最后,在图像分类数据集CIFAR-10/100上进行实验,在不牺牲准确率的前提下减少了模型冗余,验证了本文方法的有效性。
[1] 李彦冬, 郝宗波, 雷航. 卷积神经网络研究综述[J]. 计算机应用, 2016, 36(9): 2508-2515.
Li Yandong, Hao Zongbo, Lei Hang. Survey of convolutional neural network[J]. Computer Application, 2016, 36(9): 2508-2515.(in Chinese)
[2] 杨真真, 匡楠, 范露, 等. 基于卷积神经网络的图像分类算法综述[J]. 信号处理, 2018, 34(12): 1474-1489.
Yang Zhenzhen, Kuang Nan, Fan Lu. Review of Image Classification Algorithms Based on Convolutional Neural Networks[J]. Journal of Signal Processing, 2018, 34(12): 1474-1489.(in Chinese)
[3] 郑胤, 陈权崎, 章毓晋. 深度学习及其在目标和行为识别中的新进展[J]. 中国图象图形学报, 2014, 19(2): 175-184.
Zheng Yin, Chen Quanqi, Zhang Yujin. Deep learning and its new progress in object and behavior recognition[J]. Journal of Image and Graphics, 2014, 19(2): 175-184.(in Chinese)
[4] Krizhevsky A, Sutskever I, Hinton G. Imagenet classification with deep convolutional neural networks[C]∥Proceedings of the Advances in Neural Information Processing Systems (NIPS), 2012: 1097-1105.
[5] Yi D, Lei Z, Li S Z. Age Estimation by Multi-scale Convolutional Network[C]∥Asian Conference on Computer Vision. Singapore, Singapore. Springer, Cham, 2014: 144-158.
[6] Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]∥Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016: 779-788.
[7] Cao J, Guo Y, Wu Q, et al. Adversarial Learning with Local Coordinate Coding[C]∥International Conference on Machine Learning, 2018, 80: 707-715.
[8] Simonyan K, Zisserman A. Two-stream convolutional networks for action recognition in videos[C]∥Proceedings of the Advances in Neural Information Processing Systems (NIPS), 2014: 568-576.
[9] Gong Y, Liu L, Yang M, et al. Compressing Deep Convolutional Networks using Vector Quantization[EB/OL]. 2014-12-18[2019- 04-20]. https:∥arxiv.org/abs/1412.6115.
[10]Rastegari M, Ordonez V, Redmon J, et al. XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks[C]∥European Conference on Computer Vision (ECCV), 2016: 525-542.
[11]Denton E, Zaremba W, Bruna J, et al. Exploiting Linear Structure Within Convolutional Networks for Efficient Evaluation[C]∥Proceedings of the 27th International Conference on Neural Information Processing Systems, 2014, 1: 1269-1277.
[12]Jaderberg M, Vedaldi A, Zisserman A. Speeding up Convolutional Neural Networks with Low Rank Expansions[C]∥Proceedings of the British Machine Vision Conference (BMVC), 2015.
[13]Han S, Pool J, Tran J, et al. Learning both Weights and Connections for Efficient Neural Networks[C]∥Proceedings of the Advances in Neural Information Processing Systems (NIPS), 2015.
[14]Luo J H, Wu J X, Lin W Y. ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression[C]∥Proceedings of the International Conference on Computer Vision (ICCV), 2017.
[15]Li Z F, Ni B B, Zhang W J, et al. Performance Guaranteed Network Acceleration via High-Order Residual Quantization[C]∥Proceeding of IEEE International Conference on Computer Vision (ICCV), 2017.
[16]Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]∥Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Boston: IEEE Press, 2015: 1-9.
[17]Hou L, Yao Q, Kwok J T. LOSS-AWARE BINARIZATION OF DEEP NETWORKS[C]∥Proceedings of the IEEE International Conference on Learning Representations (ICLR), 2017.
[18]Lebedev V, Ganin Y, Rakhuba M, et al. Speeding-up convolutional neural networks using fine-tuned CP-decomposition[EB/OL]. 2015- 04-24[2019- 4-20]. https:∥arxiv.org/abs/1412.6553.
[19]Denil M, Shakibi B, Dinh L, et al. Predicting parameters in deep learning[C]∥Proceedings of the Advances in Neural Information Processing Systems (NIPS), 2013, 2: 2148-2156.
[20]Wen W, Wu C, Wang Y, et al. Learning Structured Sparsity in Deep Neural Networks[C]∥Proceedings of the Advances in Neural Information Processing Systems (NIPS), 2016: 2082-2090.
[21]Li H, Kadav A, Durdanovic I, et al. Pruning filters for efficient convnets[C]∥Proceedings of the IEEE International Conference on Learning Representations (ICLR), 2017.
[22]Luo J H, Wu J X. An Entropy-based Pruning Method for CNN Compression[EB/OL]. 2017- 06-19[2019- 04-20]. https:∥arxiv.org/abs/1706.05791.
[23]Li H, Kadav A, Durdanovic I, et al. Pruning Filters for Efficient Convnets[EB/OL]. 2017- 03-10[2019- 04-20]. https:∥arxiv.org/abs/1608.08710.
[24]Krizhevsky A, Sutskever I, Hinton G. Imagenet classification with deep convolutional neural networks[C]∥Proceedings of the Advances in Neural Information Processing Systems (NIPS), 2012: 1097-1105.
[25]Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[EB/OL]. 2015- 04-10[2018-11- 01]. https:∥arxiv.org/abs/1409.1556.
[26]He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]∥Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016: 770-778.
[27]Huang G, Liu Z, Laurens V D M, et al. Densely connected convolutional networks[C]∥Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Honolulu, HI, USA, 2017: 2261-2269.
[28]Huang G, Liu S, Maaten L, et al. Condensenet: an efficient densenet using learned group convolutions[C]∥In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Salt Lake City, UT, USA, 2018: 2752-2761.
[29]Krizhevsky A, Hinton G. Learning multiple layers of features from tiny images[R]. Technical Report, University of Toronto, 2009.
[30]Loshchilov I, Hutter F. SGDR: stochastic gradient descent with restarts[EB/OL]. 2017- 03- 03[2019- 04-20]. https:∥arxiv.org/abs/1608.03983.
吴 鹏 男, 1982年生, 河北保定人。全球能源互联网研究院有限公司, 工程师, 硕士, 主要研究方向为机器学习、最优化方法、智能电网。
E-mail: wup@geiri.sgcc.com.cn
林国强 男, 1989年生, 江西上饶人。全球能源互联网研究院有限公司, 工程师, 博士, 研究方向为数据挖掘、网络分析、图像处理。
E-mail: linshen1213@163.com
郭玉荣 女, 1994年生, 山西临汾人。华北电力大学, 硕士, 主要研究领域为深度学习、图像分类。
E-mail: 490133104@qq.com
赵振兵 男, 1979年生, 江苏宿迁人。华北电力大学, 博士, 副教授, 主要研究领域为深度学习与计算机视觉。
E-mail: zhaozhenbing@ncepu.edu.cn