文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.181958
中文引用格式: 馬治楠,韓云杰,彭琳鈺,等. 基于深層卷積神經(jīng)網(wǎng)絡(luò)的剪枝優(yōu)化[J].電子技術(shù)應(yīng)用,2018,44(12):119-122,126.
英文引用格式: Ma Zhinan,Han Yunjie,Peng Linyu,et al. Pruning optimization based on deep convolution neural network[J]. Application of Electronic Technique,2018,44(12):119-122,126.
0 引言
深度學(xué)習(xí)起源于人工神經(jīng)網(wǎng)絡(luò),后來LECUN Y提出了卷積神經(jīng)網(wǎng)絡(luò)LeNet-5[1],用于手寫數(shù)字識別,并取得了較好的成績,但當(dāng)時并沒有引起人們足夠的注意。隨后BP算法被指出梯度消失的問題,當(dāng)網(wǎng)絡(luò)反向傳播時,誤差梯度傳遞到前面的網(wǎng)絡(luò)層基本接近于0,導(dǎo)致無法進行有效的學(xué)習(xí)。2006年HINTON G E提出多隱層的網(wǎng)絡(luò)可以通過逐層預(yù)訓(xùn)練來克服深層神經(jīng)網(wǎng)絡(luò)在訓(xùn)練上的困難[2],隨后深度學(xué)習(xí)迎來了高速發(fā)展期。一些新型的網(wǎng)絡(luò)結(jié)構(gòu)不斷被提出(如AlexNet、VGGNet、GoogleNet、ResNet等),網(wǎng)絡(luò)結(jié)構(gòu)不斷被優(yōu)化,性能不斷提升,用于圖像識別可以達到很好的效果。然而這些網(wǎng)絡(luò)大都具有更多的網(wǎng)絡(luò)層,對計算機處理圖像的能力要求很高,需要更多的計算資源,一般使用較好的GPU來提高訓(xùn)練速度,不利于在硬件資源(內(nèi)存、處理器、存儲)較低的設(shè)備運行,具有局限性。
深度學(xué)習(xí)發(fā)展到目前階段,其研究大體可以分為兩個方向:(1)設(shè)計復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),提高網(wǎng)絡(luò)的性能;(2)對網(wǎng)絡(luò)模型進行壓縮,減少計算復(fù)雜度。在本文將討論第二種情況,去除模型中冗余的參數(shù),減少計算量,提高程序運行速度。
目前很多網(wǎng)絡(luò)都具有更復(fù)雜的架構(gòu)設(shè)計,這就造成網(wǎng)絡(luò)模型中存在很多的參數(shù)冗余,增加了計算復(fù)雜度,造成不必要的計算資源浪費。模型壓縮大體有以下幾個研究方向:(1)設(shè)計更為精細(xì)的網(wǎng)絡(luò)結(jié)構(gòu),讓網(wǎng)絡(luò)的性能更為簡潔高效,如MobileNet網(wǎng)絡(luò)[3];(2)對模型進行裁剪,越是結(jié)構(gòu)復(fù)雜的網(wǎng)絡(luò)越存在大量參數(shù)冗余,因此可以尋找一種有效的評判方法,對訓(xùn)練好的模型進行裁剪;(3)為了保持?jǐn)?shù)據(jù)的精度,一般常見的網(wǎng)絡(luò)模型的權(quán)重,通常將其保存為32 bit長度的浮點類型,這就大大增加了數(shù)據(jù)的存儲和計算復(fù)雜度。因此,可以將數(shù)據(jù)進行量化,或者對數(shù)據(jù)二值化,通過數(shù)據(jù)的量化或二值化從而大大降低數(shù)據(jù)的存儲。除此之外,還可以對卷積核進行核的稀疏化,將卷積核的一部分誘導(dǎo)為0,從而減少計算量[4]。
本文著重討論第二種方法,對模型的剪枝,通過對無用權(quán)重參數(shù)的裁剪,減少計算量。
1 CNN卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是一種前饋式網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)由卷積層、池化層、全連接層組成[5]。卷積層的作用是從輸入層提取特征圖,給定訓(xùn)練集:
在卷積層后面一般會加一個池化層,池化又稱為降采樣,池化層可以用來降低輸入矩陣的緯度,而保存顯著的特征,池化分為最大池化和平均池化,最大池化即給出相鄰矩陣區(qū)域的最大值。池化層具有減小網(wǎng)絡(luò)規(guī)模和參數(shù)冗余的作用。
2 卷積神經(jīng)網(wǎng)絡(luò)剪枝
2.1 模型壓縮的方法
本文用以下方法修剪模型:(1)首先使用遷移學(xué)習(xí)的方法對網(wǎng)絡(luò)訓(xùn)練,然后對網(wǎng)絡(luò)進行微調(diào),使網(wǎng)絡(luò)收斂并達到最優(yōu),保存模型;(2)對保存的模型進行修剪,并再次訓(xùn)練,對修剪后的模型參數(shù)通過訓(xùn)練進行微調(diào),如此反復(fù)進行,直到檢測不到可供裁剪的卷積核;(3)對上一步裁剪后的模型再次訓(xùn)練,直到訓(xùn)練的次數(shù)達到設(shè)定的標(biāo)準(zhǔn)為止。具體的流程如圖2所示。
上述的處理流程比較簡單,重點是如何評判網(wǎng)絡(luò)模型中神經(jīng)元的重要性。本文用價值函數(shù)C(W)作為評判重要性的工具。對于數(shù)據(jù)集D,經(jīng)訓(xùn)練后得到網(wǎng)絡(luò)模型Model,其中的權(quán)重參數(shù)為:
2.2 參數(shù)評估
網(wǎng)絡(luò)參數(shù)的評估在模型壓縮中有著非常重要的作用。一般采用下面的這種方法,通過比較權(quán)重參數(shù)的l2范數(shù)的大小,刪除l2范數(shù)較小的卷積核[8]。除此之外,還可以通過激活驗證的方法對參數(shù)進行評判,將數(shù)據(jù)集通過網(wǎng)絡(luò)前向傳播,對于某個網(wǎng)絡(luò)節(jié)點,若有大量通過激活函數(shù)后的數(shù)值為0或者小于一定的閾值,則將其舍去。
2.2.1 最小化l2范數(shù)
3 實驗結(jié)果
3.1 訓(xùn)練和剪枝結(jié)果
本設(shè)計在Ubuntu16.04系統(tǒng),搭載1080Ti顯卡的高性能服務(wù)器上進行實驗,使用Pytorch深度學(xué)習(xí)框架進行訓(xùn)練和測試。本設(shè)計使用VGG16網(wǎng)絡(luò),對16類常見的路面障礙物圖片進行訓(xùn)練,其中數(shù)據(jù)集中的訓(xùn)練集有24 000張圖片,訓(xùn)練集12 000張圖片。在VGG16網(wǎng)絡(luò)中有16個卷積網(wǎng)絡(luò)層,共4 224個卷積核。采用遷移學(xué)習(xí)的方法對其進行訓(xùn)練,設(shè)置epoch為30,訓(xùn)練的結(jié)果如圖3所示。
圖3縱軸表示訓(xùn)練的準(zhǔn)確率,橫軸表示迭代次數(shù),最后的訓(xùn)練準(zhǔn)確率為97.97%。
將上面的訓(xùn)練參數(shù)保存為模型,對其進行剪枝,分5次對其修剪,首先會根據(jù)l2范數(shù)最小值篩選出要修剪的網(wǎng)絡(luò)層中的卷積核,每次去除512個卷積核,修剪后模型中剩余的卷積核數(shù)量如圖4所示。
圖4中縱軸表示模型中保留的卷積核的數(shù)量,從最初的4 224降到1 664,裁剪率達到60.6%。5次迭代修剪后的準(zhǔn)確率如圖5所示。
對修剪后的網(wǎng)絡(luò)重新訓(xùn)練得到最終的修剪模型,訓(xùn)練過程如圖6所示。
最后達到98.7%的準(zhǔn)確率。剪枝前模型大小為512 MB,剪枝后模型可以縮小到162 MB,將模型的內(nèi)存占用降低了68.35%。
3.2 嵌入式平臺下的移植測試
在嵌入式平臺樹莓派3代B型上移植Pytorch框架,樹莓派3b擁有1.2 GHz的四核BCM2837 64位ARM A53處理器,1 GB運行內(nèi)存,板載BCM43143WiFi。由于樹莓派運行內(nèi)存有限,故增加2 GB的swap虛擬內(nèi)存,用于編譯Pytorch框架源碼。將在GPU服務(wù)器上訓(xùn)練好的網(wǎng)絡(luò)模型移植到嵌入式平臺,對其進行測試。對123張測試圖片進行檢測分類,載入裁剪前的原始模型,用時109.47 s,準(zhǔn)確率為95.08%。載入剪枝后的模型,同樣對123張圖片進行測試,用時41.85 s,準(zhǔn)確率達到96.72%。結(jié)果如圖7所示,可以看到對模型裁剪后時間上減少了61%,速度有了很大提升。
4 結(jié)論
目前深度學(xué)習(xí)是一個熱門的研究方向,在圖像檢測、分類、語音識別等方面取得了前所未有的成功,但這些依賴于高性能高配置的計算機,也出現(xiàn)了各種深度學(xué)習(xí)框架以及網(wǎng)絡(luò)模型,但是可以預(yù)見深度學(xué)習(xí)即將邁入一個發(fā)展平緩期,如果不能有一個寬闊的應(yīng)用領(lǐng)域,深度學(xué)習(xí)的發(fā)展將很快被擱淺。誠然,將其應(yīng)用于嵌入式平臺將會是一個非常好的發(fā)展方向。相信未來深度學(xué)習(xí)在嵌入式領(lǐng)域會有一個更大的突破,部署于移動平臺將不再是一個難題。
參考文獻
[1] LECUN Y,BOTTOU L,BENGIO Y,et al.Gradient-based learning applied to document recognition[C].Proceedings of the IEEE,1998,86(11):2278-2324.
[2] HINTON G E,SALAKHUTDINOV R R.Reducing the dimensionality of data with neural networks[J].Science,2006,313(5786):504-507.
[3] HOWARD A G,ZHU M,CHEN B,et al.MobileNets:efficient convolutional neural networks for mobile vision applications[Z].arXiv preprint arXiv:1704.04861,2017.
[4] HAN S,MAO H,DALLY W J.Deep compression:compressing deep neural networks with pruning, trained quantization and Huffman coding[J].Fiber,2015,56(4):3-7.
[5] 周飛燕,金林鵬,董軍.卷積神經(jīng)網(wǎng)絡(luò)研究綜述[J].計算機學(xué)報,2017,40(6):1229-1251.
[6] ANWAR S,HWANG K,SUNG W,et al.Structured pruning of deep convolutional neural networks[J].JETC,2017,13(3):1-18.
[7] AYINDE B O,ZURADA J M.Building efficient ConvNets using redundant feature pruning[Z].arXiv preprint arXiv:1802.07653,2018.
[8] LI H,KADAV A,DURDANOVIC I,et al.Pruning filters for efficient ConvNets[C].ICLR 2017,2017.
作者信息:
馬治楠1,韓云杰2,彭琳鈺1,周進凡1,林付春1,劉宇紅1
(1.貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽550025;2.貴陽信息技術(shù)研究院,貴州 貴陽550081)