文獻標(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)