弹载图像目标检测系统[1]利用采集的弹载图像进行目标自主识别和定位,为跟踪制导提供精确的定位信息。随着深度学习[2-3](deep learning,DL)在目标检测领域的推广应用,卷积神经网络 (convolution neural network,CNN)通过训练学习得到图像中的目标特征信息,检测精度远超过人工挖掘图像特征目标检测算法。而基于深度学习的目标检测算法依赖于卷积神经网络,在目标特征提取和推理过程中需要进行大量的计算,随着网络架构的深度不断增加,模型的检测精度不断提高,随之带来的是庞大的数据量问题,尤其是训练得到的参数信息会随着网络的深度成指数增加,这为在边缘部署深度学习算法带来了严峻挑战。
对于嵌入式设备而言,存储空间、计算资源、能耗以及体积限制了理论模型向工程实现的转换,轻量化深度学习模型设计成为解决此问题的重要途径。早在1989年深度学习模型还没有被广泛应用之前,Lecun教授就在文献[4]中提出剔除神经网络中不重要参数信息思想,达到压缩模型尺寸的作用,当前很多深度学习模型剪枝算法都是基于文献[4]中提出的OBD方法的改进。深度学习模型压缩技术在于减少参数冗余而不会损失较大的预测精度,关键技术难点为压缩量化指标的确定,其研究主要集中在精细化的模型设计、量化、Low-rank分解、模型/通道剪枝以及迁移学习等方面,相关研究均在特定模型中取得较好的压缩效果,如图1所示。
图1 深度学习压缩模型研究分类框图
图1中,深度学习模型精细化设计将卷积核分解成多个小卷积核组合,优化模型结构的同时大大减少网络参数;量化是通过降低权重参数的比特位数进行模型压缩,例如将32bit浮点权重转换为8bit整型以及权重二值化、三值化等,在保证模型精度损失较小的情况下,极大地提高计算效率,降低内存占用率;模型训练出的权重矩阵中很多信息是冗余的,Low-Rank分解是用若干小矩阵表达出大矩阵包含的信息,模型精度几乎不变,而模型的计算复杂度和内存开销大大降低;模型剪枝分为结构化、非结构化以及中间隐层剪枝,其核心思想是通过判定指标确定模型节点、通道以及参数的重要程度,剔除对模型精度影响不大的部分,并通过再训练对模型进行微调。根据剪枝再训练过程又可分为永久剪枝和动态剪枝,其中永久剪枝完全依赖于训练模型的权重信息,裁剪完成后不再参与再训练过程,但是对于网络模型来说,某些权重信息是对后面权重参数的重要补充,永久裁剪后极大降低模型的精度,动态裁剪就是将这些误裁剪的节点重新恢复回来,降低重要参数被裁剪的风险;迁移学习来源于Teacher-Student方法,在结构复杂、泛化性好、精度高的Teacher模型基础上“引导”结构简单、参数量少的Student模型训练,得到和Teacher模型精度相近的结果。
因此,结合弹载平台特殊的应用环境,在满足目标检测精度的前提下,设计高效的目标检测算法,并且在不损失或损失较少目标检测精度的情况下对网络结构进行轻量化设计,降低模型训练过程参数冗余和推理过程计算量,这对提高弹载图像目标检测精度和算法在弹载嵌入式平台中部署有重要研究价值。
图1对当前的深度学习模型压缩技术进行了概括分析,其中权重排序剪枝是众多研究学者广泛研究的模型压缩算法,并取得一定的压缩效果。但是权重排序剪枝算法类似于在参数空间中的一种暴力搜索,不同神经元的组合种类数以万计,仅以权重值排序进行筛选只能在参数空间找到极少的一种组合方式,很多潜在的、压缩率更高的组合并没有搜索到。例如,以卷积层为例,所有卷积核是否去除用0或1表示,这些数字组成一个向量空间,该空间的维度N与卷积层的卷积核数目一致,每一个数字在0和1之间变化时,都对应着该向量空间中的不同位置。基于权重的压缩方法,只能兼顾到该高维空间中的极少几个位置,对于广阔的向量空间来说,该方法容易陷入局部最优。另外,权重排序剪枝算法基于“权重值偏小的神经元,对分类的意义很小”这一假设条件,在很多情况下权重偏小的神经元随着训练的迭代也会为分类提供较大的参考价值,对于此类神经元需要更深入的分析和观察,而不是粗暴的过滤。
此外,网络参数修剪也可以分为结构化和非结构剪枝[19],结构化剪枝为直接对卷积核的删减,对网络结构影响不大。而非结构剪枝为对卷积核内某一位置元素操作,会使网络权重参数稀疏化。2种裁剪方式均可对模型达到很好的压缩效果。但是非结构化裁剪会使模型在弹载嵌入式硬件平台移植过程中造成无法高效使用密集乘法矩阵加速计算,硬件的计算成本和难度会大幅度提升。
因此,为提高在向量空间搜索时的覆盖度以及对不同权重贡献率的分析,降低后期算法向硬件平台移植难度,找到更优的压缩结果,本文采用遗传算法[20](genetic algorithm,GA)对卷积核进行结构化剪枝,在全局搜索空间内对网络参数进行压缩,防止陷入局部最优,提高网络压缩后的整体效果。
遗传算法是模拟生物进化过程开发的搜索最优解计算模型,将求解最优解问题转换成基因的交叉、变异和选择算子过程,具有良好的全局寻优能力。GA以种群中的所有个体为对象,通过遗传操作不断地更新每个个体的基因序列,直到收敛到全局最优染色体序列,其流程如图2所示。
图2 遗传算法流程框图
图2为遗传算法的基本流程,其中编码方式、种群初始化、适应度函数以及遗传操作中的选择、交叉和变异是GA的关键步骤,文献[20]中对GA实现流程进行了详细介绍,本文不做赘述。
卷积神经网络一般由卷积层和全连接层组成,卷积层主要用来提取图像中的特征信息,占据了整个网络架构90%~95%的计算量和5%的参数量,而全连接层主要用来语义表达,判断检测目标的属性,其占据了网络5%~10%的计算量和95%的参数。为此,卷积层和全连接层的参数优化是模型压缩的关键环节,结合图2遗传算法流程,对网络中的卷积层和全连接层实现结构化剪枝,建立基于GA的模型压缩算法。
1) 编码
二进制编码通过0和1来组成染色的基因序列,是GA染色体常用的编码方式。为此,该算法用0和1作为卷积核的掩膜,以此标记卷积层中卷积核的保留和剔除,为压缩过程中的卷积核表示提供了极大地便利,其编码方式如图3所示。
图3 卷积核二进制编码示意图
图3中,当卷积层总共包含256个卷积核时,则染色体的基因长度为256,全部都以0和1组成,每个数字与卷积核一一对应,作为该卷积核的掩膜,比如最左侧数字对应最左侧卷积核。
在完成GA迭代之后,得到了最优秀的染色体,根据最优染色体的DNA序列值来得到当前卷积层压缩结果。例如,如果DNA某位置数字值是0,则将其对应位置的卷积核从网络中删除。如果是1,则保留该卷积核不动,将DNA解码,便可得到模型结构化压缩结果。
2) 适应度计算
适应度函数用来表征染色体基因序列遗传给后代的概率,适应度高的染色体遗传率高,相反则遗传率低,故也称目标函数。在目标检测网络中,每个染色对适应度的贡献率用检测精度表示,由分类结果和位置检测精度两部分组成。当分类结果错误时,贡献率为0;当分类结果正确时,贡献率为1。位置检测精度贡献率由真实框和检测框的交叠程度表示,如图4所示(IoU的计算方式)。
则,位置检测精度贡献率如式(1)所示:
(1)
式中:Strue为真实标注框;Sdetect为检测框;S0为交叠面积。利用位置和分类贡献率,计算模型的mAP和网络参数规模,并且确定单个染色体的适应度为:
(2)
其中:mAPj和SNetj分别为第j条染色体均值平均精度和网络参数规模;Fj为第j条染色体的适应度。最终的适应度要同时兼顾两个方面的性能,即“高检测率,低网络大小”。其网络参数规模SNetj可以用式(3)表示:
(3)
其中:Wl为第l卷积层的参数量;Kl为第l层卷积核大小;Nl和Nl+1分别为对应层通道数。由此可得压缩比Ratioj为:
(4)
其中,SNet为未压缩参数量。
图4 位置检测精度贡献率示意图
另外,GA每一次迭代都需要计算每个染色体对应的适应度值,如果把所有样本都用来计算适应度,则整个训练过程的计算代价将非常大,严重影响遗传算法的速度。为此,该算法将样本集分成3个规模:小样本集、中样本集、大样本集,在迭代过程中灵活使用不同规模的样本集来弥补计算量太大的问题。
例如,如果检测任务总共包括10类目标,每一类目标有10 000个样本,总计100 000个样本。其中,小样本集包含10类目标,每一类随机从总样本中挑选出100个样本;中样本集包含10类目标,每一类也是随机挑选1 000个样本;大样本集是总体样本。虽然小样本集得到的适应度相比于中样本集、大样本集有所偏差,但遗传算法本身是一种“粗犷”的搜索方法,其更加注重在向量空间中进行大范围的覆盖,以防止过早进入局部最优。因此,小样本集带来的适应度偏差在接受范围内,并且可以通过反复迭代和更新样本集来提高其压缩精度。
3) 遗传操作
遗传操作包含算子选择、交叉和变异,各步骤方法和传统方法类似。
通过上述分析,基于遗传算法的模型压缩算法流程可以在图2的基础上更新为图5。
图5 基于GA的模型压缩流程框图
由图5可以分析基于GA的网络压缩过程为:
Step 1:选定压缩网络层
当前,基于深度学习的目标检测网络结构复杂,该算法从输入层网络开始,逐层进行压缩。即,先用GA完成第一个卷积层中冗余卷积核的去除,此后再考虑第二个卷积层,在对第一个卷积层处理的过程中,后续所有的卷积层都保持不动。
Step 2:编码及初始化
每个染色体对应的DNA基因序列由K个数字组成(数字为0或1),K与当前卷积层的卷积核数量一致。DNA的每一个位置的数字值,根据随机分配为0或1,其中0表示该卷积核会被删除。设置染色体初始值Num和基因随机编码比例λ,即DNA中的0的数量比例。
Step 3:计算每个染色体的适应度值Fj
利用式(2)计算每个染色体的适应度值,记录适应度最好的染色体,将其作为历史最优染色体。
Step 4:遗传操作
Step 5:生成新种群,计算下一代染色体适应度
记录当前适应度最好的个体,将其与历史最优染色体进行比较,以此实现历史最优染色体更新。
Step 6:循环上述步骤Step 3~Step 5一定的次数,直到当前样本集上的适应度提升没有明显变化为止(条件判断1)
Step 7:更换样本集
更换样本集,重复步骤Step 3~Step 6,当大样本集遍历完成后输出最优解(条件判断2),即在大样9本集上的适应度提升没有明显变化。为了降低样本集变大带来的速度影响,保留上一层级样本集寻优结果中比例γ的最优染色体作为初始染色体。
Step 8:输出最优解,解码获得最优压缩结果
上述迭代完成后,解码历史最优染色体DNA序列,根据序列中的0、1掩膜决定其对应位置的卷积核是否从网络中删除,完成当前层网络压缩,重复Step 2~Step 7继续下一层网络压缩。
为验证本文压缩算法的有效性,分别以LeNet-5和AlexNet卷积网络为基准进行逐层压缩,数据集分别为MNIST和CIFAR-10,对比分析各层压缩后的参数变化。
LeNet-5卷积网络是在LeNet基础上改进的,网络结构相对简单,由标准卷积层和全连接层组成,其网络结构图如图6。
其中,LeNet-5分别由3个卷积层、2个池化层和1个全连接层组成,其各层参数如图6所示。
从表1中发现,因LeNet-5模型各层卷积核数量较少,LeNet-5模型的整体压缩比为0.783 4。其中第1个卷积层C1无法进行压缩,删减任何一个卷积核,都会引起整个网络性能的下降,主要归因于第一个卷积层提取的特征是后续特征学习的基础。卷积层C5和全连接层F6的单层压缩率较高,验证了卷积层和全连接层是模型结构化压缩的重点。此外,原LeNet-5模型的检测精度为99.2%,经过压缩后模型的检测精度为99.07%,模型压缩后的检测精度损失0.13%。
同理,对AlexNet卷积网络在数据集CIFAR-10的训练结果进行压缩,其结果如表2所示。
图6 LeNet5网络结构图
表1 LeNet-5压缩前后参数量对比(MNIST数据集)
层数压缩前卷积核数量压缩后卷积核数量压缩前参数量压缩后参数量压缩比C16632×32×6=6 14432×32×6=6 1440C316115×5×6×16=2 4005×5×6×11=1 6500.312 5C5120195×5×16×120=48 0005×5×13×19=6 1750.871 4F68417120×84=10 08028×17=4760.952 8输出101084×10=84017×10=1700.797 6总计2366367 46414 6150.783 4
表2 AlexNet压缩前后参数量对比(CIFAR-10数据集)
层数压缩前卷积核数量压缩后卷积核数量压缩前参数量压缩后参数量压缩比C19618(上)+25(下)11×11×3×96=34 84811×11×3×(18+25)=15 6090.552 1C225637(上)+55(下)5×5×48×256=307 2005×5×(18×37+25×55)=51 0250.833 9C338442(上)+65(下)3×3×256×384=884 7363×3×92×(42+65)=88 5960.899 9C438463(上)+39(下)3×3×192×384=663 5523×3×(42×63+65×39)=46 6290.929 7C525643(上)+33(下)3×3×192×256=442 3683×3×(63×43+39×33)=35 9640.918 7F64 096391(上)+263(下)6×6×256×4 096=37 748 7366×6×76×654=1 789 3440.952 6F74 096254(上)+185(下)4 096×4 096=16 777 216654×439=287 1060.982 9输出10104 096×10=40 960439×10=4 3900.892 8总计9 578152356 899 6162 318 6630.959 2
通过表2分析发现,本文算法能够实现对AlexNet网络参数95.92%的压缩,大大降低模型的参数量。从各层压缩比分析出,初始层卷积核压缩比相对较低,随着网络深度的不断递增,模型冗余参数不断增多,压缩比不断增高,体现了初始卷积层对特征学习的重要性。另外,未压缩模型的检测精度为81.32%,压缩后模型的检测精度为80.76%,模型精度损失0.56%。
另外,为进一步验证本文模型的有效性,对比分析采用文献[21]权重裁剪算法、L1范数结构化剪枝算法[22]以及本文算法的压缩性能参数,基准网络选用上述AlexNet网络,其结果如表3所示。
表3 不同算法模型剪枝性能分析结果
算法参数压缩比FLOPs精度损失/%文献[21]算法0.975 11.32M-0.25L1范数算法0.810 04.82M1.74本文模型0.959 21.55M0.56
从其中可以看出,因文献[21]提出的权重裁剪算法为细粒度剪枝,可以保留卷积核内的有用信息,而L1范数算法和本文算法为粗粒度剪枝,裁剪完后的卷积核内仍存在一定的权重冗余,但因本文模型是在全局范围内对卷积核的重要性进行评估,大大提高了裁剪的准确率,达到较好的压缩效果,并将精度损失控制在1%以内。另外,文献[21]提出的算法会造成权重稀疏连接,对硬件平台友好性差,而本文算法对于弹载异构硬件平台的适应性较好,可以高效利用硬件乘加器实现矩阵的快速计算,降低算法向异构硬件平台移植的难度。
为降低深度学习算法向弹载嵌入式硬件平台部署的难度,提出了基于GA的结构化模型压缩算法,主要创新点为:
1) 利用遗传算法在全局空间的搜索特性对模型各层卷积核进行结构化剪枝,解决传统权重剪枝易陷入局部最优和剪枝结果对硬件平台不友好问题;
2) 提出“高检测率,低网络大小”的模型压缩判别指标,获得精度损失低、模型压缩率高的轻量化模型结构;
3) 优化样本集规模,解决整个训练过程计算代价大等问题,提高基于GA的模型压缩算法执行速度。
[1] 钱立志.电视末制导炮弹武器系统关键技术研究[D].合肥:中国科学技术大学,2006.
[2] 范晋祥,刘嘉.精确制导自动目标识别智能化的挑战与思考[J].航空兵器,2019,26(01):30-38.
[3] 李欣瑶,刘飞阳,文鹏程,等.卷积神经网络的软硬件协同加速技术[J].航空兵器,2020,7(06):1-6.
[4] Yann Le Cun,John S,et al.Optimal brain damage[J].Advances in neural information processing systems,1989,598-605.
[5] Forrest N.Iandola1,Song Han,et al.SqueezeNet:AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size[J].ICLR 2017,arXiv preprint arXiv:1602.07360.
[6] Qin Z,Zhang Z,Chen X,et al.FD-MobileNet:Improved MobileNet with a fast downsampling strategy[J].25th IEEE International Conference on Image Processing,2018,11(6):457-462.
[7] Francois Chollet.Xception:Deep learning with depth-wise separable convolutions[J].2017 IEEE Conference on Computer Vision and Pattern Recognitio,2017,arXiv preprint arXiv:10.1109.
[8] Shengjie Wang,Haoran Cai,et al.Training compressed fully-connected networks with a density-diversity penalty[J].ICLR2017,2017,11(05):1121-1132.
[9] Anwar Sajid,Hwang Kyuyeon,et al.Structured pruning of deep convolutional neural networks[J].ACM Journal on Emerging Technologies in Computing Systems,2017,13(3):32-44.
[10]Hengyuan Hu,Rui Peng,Yuwing Tai,et al.Network trimming:A data-driven neuron pruning approach towards efficient deep architectures[J].CVPR2017,arXiv preprint arXiv:1607.03250.
[11]Vadim Lebedev,Yaroslav Ganin,Maksim Rakhuba,et al.Speeding up convolutional neural networks using fine-tuned CP-decomposition[J].CVPR2015,arXiv preprint arXiv:1412.6553.
[12]Zhang X,Zou J,He K,et al.accelerating very deep convolutional networks for classification and detection[J].IEEE Transactions on pattern analysis and Machine Intelligence,2016,38(10):1943-1955.
[13]Yong-Deok Kim,Eunhyeok Park,Sungjoo Yoo,et al.Compression of deep convolutional neural networks for fast and low power mobile applications[J].CVPR2016,arXiv:1511.06530.
[14]Alexander Novikov,Dmitry Podoprikhin,et al.Tensorizing neural networks[J].CVPR2015, arXiv preprint arXiv:1509.06569.
[15]Tim Dettmers.8-bit approximations for parallelism in deep learning[J].CVPR2015,arXiv preprint arXiv:1511.04561.
[16]Fengfu Li,Bo Zhang,Bin Liu.Ternary weight networks[J].CVPR2016,arXiv:1605.04711.
[17]Junho Yim,Donggyu Joo1,Jihoon Bae,et al.A gift from knowledge distillation:Fast optimization,network minimization and transfer learning[J].CVPR2017,2017,21(6):1069-1080.
[18]Geoffrey Hinton,Oriol Vinyals,Jeff Dean.Distilling the knowledge in a neural network[J].NIPS2014,arXiv preprint arXiv:1503.02531.
[19]吴立帅.深度神经网络中的结构化模型压缩算法研究与应用[D].成都:电子科技大学,2020.
[20]玄光男.遗传算法与工程优化[M].北京:清华大学出版社,2004.
[21]徐国现.基于参数修剪和共享的深度神经网络模型压缩方法研究[D].南京:东南大学,2019.
[22]徐嘉荟.基于模型剪枝的神经网络压缩技术研究[J].信息通信,2019(12):165-167.