宋非洋 吳黎明 鄭耿哲 何欣穎
基于MobileNetV3的結(jié)構(gòu)性剪枝優(yōu)化
宋非洋1吳黎明2鄭耿哲2何欣穎2
(1.廣東工業(yè)大學(xué)信息工程學(xué)院 2.廣東工業(yè)大學(xué)機(jī)電工程學(xué)院)
針對(duì)深度神經(jīng)網(wǎng)絡(luò)參數(shù)過多以及計(jì)算量巨大,使其較難部署在移動(dòng)設(shè)備和APP上的問題,提出采用高效輕量化的MobileNetV3模型與結(jié)構(gòu)性剪枝相融合的方法,對(duì)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行重構(gòu)和壓縮。最終生成的精簡(jiǎn)模型體積比原始模型縮小5.8倍,大幅度減少計(jì)算量和內(nèi)存的消耗。經(jīng)過微調(diào)后的精簡(jiǎn)網(wǎng)絡(luò)模型相比于稀疏化訓(xùn)練的網(wǎng)絡(luò),準(zhǔn)確度更高、泛化性能更好,能夠直接運(yùn)行在成熟框架(Pytorch,MXnet或TensorFlow等)或硬件平臺(tái)上(GPU,F(xiàn)PGA等),無需特殊算法庫的支持。
深度神經(jīng)網(wǎng)絡(luò)壓縮;MobileNet;結(jié)構(gòu)性剪枝
近年來,深度神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺、語音識(shí)別等方面取得較大成就[1-3]。深度神經(jīng)網(wǎng)絡(luò)的發(fā)展一方面得益于基礎(chǔ)理論的完善,另一方面也得益于近幾年GPU計(jì)算能力的爆發(fā)性增長(zhǎng)。隨著深度神經(jīng)網(wǎng)絡(luò)的不斷發(fā)展,為完成更復(fù)雜的任務(wù),深度神經(jīng)網(wǎng)絡(luò)變得越來越深,計(jì)算量也越來越大。Hinton和Alex Krizhevsky等人[4]在2012年的國(guó)際計(jì)算機(jī)視覺挑戰(zhàn)賽(ImageNet Large Scale Visual Recognition Competition,ILSVRC)上提出AlexNet,以16.4%的Top 5錯(cuò)誤率奪得冠軍,其包含6億3000萬個(gè)鏈接,6000萬個(gè)參數(shù)和65萬個(gè)神經(jīng)元。一張圖片從輸入到輸出需要經(jīng)過15億次的浮點(diǎn)數(shù)計(jì)算。后來提出的高性能網(wǎng)絡(luò)結(jié)構(gòu),如VGGNet[5],DenseNet[6]和ResNet[7]等,則需要更多的儲(chǔ)存空間和更高的計(jì)算能力。
由于嵌入式設(shè)備和移動(dòng)設(shè)備的硬件條件受限,無法支撐這種計(jì)算密集型和存儲(chǔ)密集型的深度神經(jīng)網(wǎng)絡(luò)。但與此同時(shí),手機(jī)、汽車等移動(dòng)場(chǎng)景對(duì)深度學(xué)習(xí)的需求越來越多。因此,對(duì)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行壓縮、加速,使其能夠部署在移動(dòng)設(shè)備上變得至關(guān)重要[8]。針對(duì)上述問題,主流的解決方法有模型壓縮和輕量化模型設(shè)計(jì)2種。
本文采用高效輕量化的MobileNetV3模型與結(jié)構(gòu)性剪枝相融合的方法,進(jìn)一步壓縮輕量化的深度神經(jīng)網(wǎng)絡(luò),并測(cè)試了壓縮后的模型性能以及深度神經(jīng)壓縮[9]中結(jié)構(gòu)性剪枝的壓縮方式對(duì)網(wǎng)絡(luò)模型的影響。
2019年,Google公布了MobileNet系列的最新成果MobileNetV3。MobileNetV3作為新一代輕量級(jí)深度卷積神經(jīng)網(wǎng)絡(luò),既繼承于原有的MobileNetV1和MobileNetV2,又擁有許多新特性。
表1 MobileNetV2的基本網(wǎng)絡(luò)單元
由于采用會(huì)引入延遲,因此網(wǎng)絡(luò)前半部分的激活函數(shù)仍采用ReLU,后半部分則采用。另外,針對(duì)MobileNetV2網(wǎng)絡(luò)末端計(jì)算量大的問題,使用Avg-Pooling代替計(jì)算量大的部分,在降低計(jì)算量的同時(shí)不會(huì)造成精度損失。MobileNetV3的基本網(wǎng)絡(luò)單元如圖1所示。
神經(jīng)網(wǎng)絡(luò)剪枝算法最初用于解決模型過擬合問題,現(xiàn)在主要用于網(wǎng)絡(luò)的稀疏化,以降低網(wǎng)絡(luò)復(fù)雜度。目前主流的剪枝算法可分為非結(jié)構(gòu)性剪枝和結(jié)構(gòu)性剪枝2種。大多數(shù)情況下,非結(jié)構(gòu)性剪枝是按照人為制定的標(biāo)準(zhǔn)對(duì)權(quán)重進(jìn)行修剪。Han Song[14]等人提出閾值剪枝算法,通過設(shè)定閾值對(duì)網(wǎng)絡(luò)中冗余的權(quán)重進(jìn)行裁剪。由于深度神經(jīng)網(wǎng)絡(luò)中存在大量的冗余連接,閾值剪枝算法可有效減小模型復(fù)雜度,并通過稀疏數(shù)據(jù)格式儲(chǔ)存模型,減小模型的存儲(chǔ)空間。然而,這種稀疏數(shù)據(jù)計(jì)算時(shí),采用傳統(tǒng)的計(jì)算方式效率較低,只能通過調(diào)用專用的稀疏矩陣運(yùn)算庫,如CUDA的cuSPARSE庫或?qū)I(yè)硬件進(jìn)行計(jì)算。另外,盡管閾值剪枝可以壓縮模型的存儲(chǔ)空間,但由于其僅僅使相應(yīng)的權(quán)重置零,而未將冗余的連接從網(wǎng)絡(luò)中徹底剔除,模型運(yùn)行時(shí)產(chǎn)生的中間變量仍會(huì)消耗大量的內(nèi)存。Srinivas[15]等人提出使用額外的門變量,對(duì)每一個(gè)權(quán)重都進(jìn)行稀疏約束,并通過對(duì)門變量為零的連接進(jìn)行剪枝來實(shí)現(xiàn)模型壓縮,該方法擁有更高的壓縮率,但內(nèi)存消耗仍然較大。
Liu Z[16]等人提出一種有效的結(jié)構(gòu)性剪枝方法,通過利用Batch Normalization(BN)層的尺度因子作為深度神經(jīng)網(wǎng)絡(luò)通道的重要性因子,即由值決定是否對(duì)通道進(jìn)行剪枝。
本文采用典型的迭代過程作為結(jié)構(gòu)化剪枝的基本流程,具體步驟:
1)根據(jù)數(shù)據(jù)集制定相應(yīng)的網(wǎng)絡(luò)模型并初始化;
2)對(duì)模型進(jìn)行稀疏化訓(xùn)練;
3)找到尺度因子較小的通道并進(jìn)行剪枝;
4)對(duì)剪枝后的網(wǎng)絡(luò)模型進(jìn)行微調(diào);
5)重復(fù)步驟1)~步驟4);
6)完成剪枝。
剪枝流程圖如圖2所示,其中虛線為迭代過程。
圖2 剪枝流程圖
剪枝后的網(wǎng)絡(luò)模型以python通用的pth格式保存,其內(nèi)部包含優(yōu)化器(optimizer)參數(shù)、迭代數(shù)(epochs)以及網(wǎng)絡(luò)參數(shù)(state_dict)等信息。
一般來說,深度神經(jīng)網(wǎng)絡(luò)層與層之間以串聯(lián)的方式相連接,連接處的通道數(shù)相對(duì)固定,只有在需要調(diào)整或修改模型網(wǎng)絡(luò)結(jié)構(gòu)時(shí)才進(jìn)行通道數(shù)變更。本文使用的結(jié)構(gòu)化剪枝將冗余通道的輸入輸出連接以及相關(guān)的權(quán)重全部進(jìn)行裁剪,導(dǎo)致模型各層的通道數(shù)發(fā)生改變,且MobileNetV3結(jié)構(gòu)復(fù)雜特殊,既包含膨脹層和反向殘差層,又加入了注意力模型。若此時(shí)對(duì)模型進(jìn)行測(cè)試,由于各層通道數(shù)不匹配,會(huì)產(chǎn)生模型無法運(yùn)行的錯(cuò)誤。因此在完成模型的稀疏化訓(xùn)練之后,本文提出一種模型重構(gòu)引導(dǎo)方法。該方法能根據(jù)此前訓(xùn)練好的結(jié)構(gòu)化稀疏模型重新構(gòu)建一個(gè)更緊湊的網(wǎng)絡(luò)結(jié)構(gòu),并載入剪枝后的模型參數(shù),使重構(gòu)后的模型在網(wǎng)絡(luò)大小、卷積計(jì)算和運(yùn)行內(nèi)存消耗等方面更加輕量化。
本文在pytorch中創(chuàng)建1個(gè)_guide類,作為模型重構(gòu)引導(dǎo)方法的基類;定義guide方法和rebuild方法,將完成訓(xùn)練的模型保存為稀疏格式并引導(dǎo)模型進(jìn)行重構(gòu)。在模型重構(gòu)引導(dǎo)方法中,主要采用掩膜(mask)方式對(duì)模型進(jìn)行處理,thre表示全局閾值;cfg表示重構(gòu)引導(dǎo)參數(shù)。mask由BN層的權(quán)重參數(shù)矩陣和torch的內(nèi)部類方法gt(thre)聯(lián)立給出,并以四維tensor形式儲(chǔ)存;每個(gè)通道對(duì)應(yīng)的mask值由0或1組成,其中0表示需要進(jìn)行剪枝的通道,1表示保留的通道。cfg以一維數(shù)組的形式儲(chǔ)存,其內(nèi)部包含每一層網(wǎng)絡(luò)需要保留的通道數(shù),即mask非零項(xiàng)的和。此時(shí)mask已包含所有的剪枝信息,與重構(gòu)引導(dǎo)參數(shù)cfg相結(jié)合即可完成模型重構(gòu)。
超參數(shù)的選擇與調(diào)整對(duì)模型效果有著顯著的影響,如何找出一個(gè)對(duì)模型貢獻(xiàn)度最高的超參數(shù),是一項(xiàng)十分重要的工作。本文使用剪枝算法對(duì)模型進(jìn)行稀疏化訓(xùn)練時(shí),引入了新的損失函數(shù)以及超參數(shù)。為找出對(duì)模型稀疏化效果最優(yōu)的超參數(shù),本文利用Cifar-10數(shù)據(jù)集對(duì)MobileNetV3進(jìn)行結(jié)構(gòu)性稀疏化訓(xùn)練,并同時(shí)設(shè)定多個(gè)超參數(shù),評(píng)估不同的超參數(shù)對(duì)模型稀疏化的影響,結(jié)果如圖3所示。
圖3 不同的值下γ重要性因子的分布
為了保證實(shí)驗(yàn)的準(zhǔn)確性和客觀性,本文采用經(jīng)典的Cifar-10作為實(shí)驗(yàn)數(shù)據(jù)集。Cifar-10是一個(gè)10分類數(shù)據(jù)集,圖片尺寸為32像素×32像素,每一類包含6000張圖片,共有60000張圖片,其中50000張為訓(xùn)練集,10000張為測(cè)試集。
本文的實(shí)驗(yàn)環(huán)境為搭載有NVDIA Tesla T4顯卡的高性能工作站,采用Pytorch深度學(xué)習(xí)框架對(duì)模型進(jìn)行搭建、訓(xùn)練和測(cè)試。訓(xùn)練周期為30個(gè)epoch;mini-batch為100;優(yōu)化器為Adam;初始學(xué)習(xí)率為0.002,采用可變學(xué)習(xí)率方法,學(xué)習(xí)策略為
其中為測(cè)試集準(zhǔn)確率。當(dāng)<80時(shí),保持學(xué)習(xí)率為0.002;當(dāng)8≤87時(shí),學(xué)習(xí)率為0.001;當(dāng)87≤學(xué)習(xí)率為0.0002;當(dāng)90時(shí),學(xué)習(xí)率為0.00002。
3.2.1 剪枝率
為更好地了解結(jié)構(gòu)化剪枝中不同剪枝率對(duì)MobileNetV3的影響,本文設(shè)定9個(gè)不同剪枝率對(duì)模型進(jìn)行實(shí)驗(yàn)測(cè)試,結(jié)果如圖4所示。
圖4 剪枝率對(duì)模型的影響
由圖4可知:模型稀疏化訓(xùn)練下的準(zhǔn)確率比原始模型高3%,且模型在剪枝率為40%時(shí)效果最好;說明結(jié)構(gòu)性稀疏化訓(xùn)練能有效增加模型的泛化性能,減少神經(jīng)元之間錯(cuò)綜復(fù)雜的依賴關(guān)系,提高模型的魯棒性。
3.2.2 模型壓縮率
每經(jīng)過一個(gè)訓(xùn)練周期后,對(duì)相應(yīng)的模型數(shù)據(jù)進(jìn)行保存。在完成全部的訓(xùn)練周期后,從中篩選出表現(xiàn)最優(yōu)的結(jié)構(gòu)性稀疏化模型,采用40%的剪枝率進(jìn)行剪枝微調(diào)處理,結(jié)果如表2所示。
表2 剪枝微調(diào)處理結(jié)果
由表2可知:剪枝后模型的體積為16 M,相比原始模型體積減少了77 M;top-1準(zhǔn)確率提高了1.6%;模型整體體積壓縮了5.8倍,壓縮率達(dá)到17.21%;這表明經(jīng)過結(jié)構(gòu)化剪枝的模型能夠在保證準(zhǔn)確率的情況下,減少模型載入時(shí)的內(nèi)存消耗,提高模型載入的速度。
本文基于深度神經(jīng)網(wǎng)絡(luò)壓縮理論,通過結(jié)構(gòu)化剪枝算法簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu),提出MobileNetV3模型的改進(jìn)方案。鑒于原始網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜特殊,為了最大程度保留網(wǎng)絡(luò)的強(qiáng)連接,本文采取稀疏化訓(xùn)練和模型重構(gòu)引導(dǎo)方法,對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練、剪枝、重建和調(diào)優(yōu)等操作,以達(dá)到壓縮但不影響性能的效果。Cifar-10數(shù)據(jù)集的研究結(jié)果表明:對(duì)MobileNetV3進(jìn)行不同程度的結(jié)構(gòu)化剪枝,經(jīng)過微調(diào)后的網(wǎng)絡(luò)模型相比于稀疏化訓(xùn)練的網(wǎng)絡(luò),準(zhǔn)確度更高、泛化性能更好;同時(shí)大幅度減少計(jì)算量和內(nèi)存的消耗。下一步應(yīng)研究分析模型中各單元模塊對(duì)整個(gè)MobileNetV3的影響,對(duì)各單元模塊分別進(jìn)行剪枝處理,以理解各模塊層級(jí)之間的共適應(yīng)和依賴關(guān)系。
[1] Szegedy Christian, Liu Wei, Jia Yangqing, et al. Going deeper with convolutions[C]//IEEE Conference on Computer Vision and Pattern Recognition. Boston, 2015:1-9.
[2] Hinton G, Deng L, Yu D, et al. Deep neural networks for acoustic modeling in speech recognition: the shared views of four research groups[J]. IEEE Signal Processing Magazine, 2012,29(6):82-97.
[3] Huang Zhen, Siniscalchi Sabato Marco, Lee Chin-Hui. A unified approach to transfer learning of deep neural networks with applications to speaker adaptation in automatic speech recognition[J]. Neurocomputing, 2016,218:448-459.
[4] Krizhevsky Alex, Sutskever Ilya, Hinton Geoffrey E. ImageNet Classification with Deep Convolutional Neural Networks[J]. Communications of the ACM,2017,60(6):84-90.
[5] Ioffe Sergey, Szegedy Christian. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift[C]//InternationalConference on Machine Learning.Lille, 2015:448-456.
[6] Huang Gao, Liu Zhuang, Weinberger Kilian Q. Densely Connected Convolutional Networks[C]//IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, 2017:4700-4708.
[7] He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[C]//IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, 2016:770-778.
[8] 紀(jì)榮嶸,林紹輝,晁飛, 等.深度神經(jīng)網(wǎng)絡(luò)壓縮與加速綜述[J].計(jì)算機(jī)研究與發(fā)展,2018,55(9):1871-1888.
[9] Han S, Mao H, Dally W J. Deep Compression:Compressing Deep Neural Networks with Pruning,Trained Quantization and Huffman Coding[EB/OL].http//arxiv.org/abs/1510.00149,(2016-02-15).
[10] Howard A G , Zhu M , Chen B , et al. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications[EB/OL].http//arxiv.org/abs/1409.1556,(2017-04-17).
[11] Sandler M , Howard A , Zhu M , et al. Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and Segmentation[C]//IEEE Conference on Computer Vision and Pattern Recognition. Salt Lake City, 2018:4510-4520.
[12] Tan M , Chen B , Pang R , et al. MnasNet:Platform-Aware Neural Architecture Search for Mobile[C]//IEEE Conference on Computer Vision and Pattern Recognition. Long Beach, 2019: 2820-2828.
[13] Jie H, Li S, Albanie S, et al. Squeeze-and-Excitation Networks[C]//IEEE Conference on Computer Vision and Pattern Recognition. Salt Lake City, 2018:7132-7141.
[14] Han S , Pool J , Tran J , et al. Learning both Weights and Connections for Efficient Neural Networks[C]//Neural Information Processing Systems Conference. Barcelona, 2016:1135-1143.
[15] Srinivas S, Subramanya A, Babu R V. Training Sparse Neural Networks[C]//IEEE Conference on Computer Vision and Pattern Recognition Workshops. Honolulu, 2017:138-145.
[16] Liu Z , Li J , Shen Z , et al. Learning Efficient Convolutional Networks through Network Slimming[C]//IEEE International Conference on Computer Vision. Venice, 2017: 2736-2744.
Optimization of Structural Pruning Based on MobileNetV3
Song Feiyang1Wu Liming2Zheng Gengzhe2He Xinying2
(1.College of Information Engineering , Guangdong University of Technology 2.College of Mechanical and Electrical Engineering , Guangdong University of Technology)
With the continuous development and landing of artificial intelligence, deep neural networks have made great achievements in target detection and image recognition, but the excessive parameters and huge calculations of deep neural networks make it difficult to deploy on mobile devices and apps. In order to solve this problem, a high efficiency and light weight MobileNetV3 model combined with structural pruning is proposed to reconstruct and compress the deep neural network. The resulting streamlined model is 3.2 times smaller than the original model, which greatly reduces the amount of computation and memory consumption. The fine-tuned streamlined network model has higher accuracy and better generalization performance than the sparse training network and can run directly on mature frameworks (Pytorch, MXnet or TensorFlow, etc.) or hardware platforms(GPU, FPGA, etc.). No support for special algorithms is required.
Deep Neural Network Compression; MobileNet; Structural Pruning
宋非洋,男,1995年生,碩士研究生,主要研究方向:計(jì)算機(jī)視覺與深度學(xué)習(xí)。E-mail:458852863@qq.com
吳黎明,男,1962年生,教授,主要研究方向:人工智能與深度學(xué)習(xí)。E-mail:jkyjs@gdut.edu.cn
鄭耿哲,男,1996年生,碩士研究生,主要研究方向:計(jì)算機(jī)視覺與深度學(xué)習(xí)。E-mail:zhenggengzhe@mail2.gdut.edu.cn
何欣穎,女,1996年生,碩士研究生,主要研究方向:機(jī)器視覺、深度學(xué)習(xí)。E-mail:756594764@qq.com