文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.181958
中文引用格式: 馬治楠,,韓云杰,,彭琳鈺,等. 基于深層卷積神經(jīng)網(wǎng)絡的剪枝優(yōu)化[J].電子技術應用,,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 引言
深度學習起源于人工神經(jīng)網(wǎng)絡,,后來LECUN Y提出了卷積神經(jīng)網(wǎng)絡LeNet-5[1],用于手寫數(shù)字識別,,并取得了較好的成績,,但當時并沒有引起人們足夠的注意。隨后BP算法被指出梯度消失的問題,,當網(wǎng)絡反向傳播時,,誤差梯度傳遞到前面的網(wǎng)絡層基本接近于0,導致無法進行有效的學習,。2006年HINTON G E提出多隱層的網(wǎng)絡可以通過逐層預訓練來克服深層神經(jīng)網(wǎng)絡在訓練上的困難[2],,隨后深度學習迎來了高速發(fā)展期。一些新型的網(wǎng)絡結構不斷被提出(如AlexNet,、VGGNet,、GoogleNet、ResNet等),,網(wǎng)絡結構不斷被優(yōu)化,,性能不斷提升,用于圖像識別可以達到很好的效果,。然而這些網(wǎng)絡大都具有更多的網(wǎng)絡層,,對計算機處理圖像的能力要求很高,需要更多的計算資源,,一般使用較好的GPU來提高訓練速度,,不利于在硬件資源(內存、處理器,、存儲)較低的設備運行,,具有局限性,。
深度學習發(fā)展到目前階段,其研究大體可以分為兩個方向:(1)設計復雜的網(wǎng)絡結構,,提高網(wǎng)絡的性能,;(2)對網(wǎng)絡模型進行壓縮,減少計算復雜度,。在本文將討論第二種情況,,去除模型中冗余的參數(shù),減少計算量,,提高程序運行速度,。
目前很多網(wǎng)絡都具有更復雜的架構設計,這就造成網(wǎng)絡模型中存在很多的參數(shù)冗余,,增加了計算復雜度,,造成不必要的計算資源浪費。模型壓縮大體有以下幾個研究方向:(1)設計更為精細的網(wǎng)絡結構,,讓網(wǎng)絡的性能更為簡潔高效,,如MobileNet網(wǎng)絡[3];(2)對模型進行裁剪,,越是結構復雜的網(wǎng)絡越存在大量參數(shù)冗余,,因此可以尋找一種有效的評判方法,對訓練好的模型進行裁剪,;(3)為了保持數(shù)據(jù)的精度,一般常見的網(wǎng)絡模型的權重,,通常將其保存為32 bit長度的浮點類型,,這就大大增加了數(shù)據(jù)的存儲和計算復雜度。因此,,可以將數(shù)據(jù)進行量化,,或者對數(shù)據(jù)二值化,通過數(shù)據(jù)的量化或二值化從而大大降低數(shù)據(jù)的存儲,。除此之外,,還可以對卷積核進行核的稀疏化,將卷積核的一部分誘導為0,,從而減少計算量[4],。
本文著重討論第二種方法,對模型的剪枝,,通過對無用權重參數(shù)的裁剪,,減少計算量。
1 CNN卷積神經(jīng)網(wǎng)絡
卷積神經(jīng)網(wǎng)絡是一種前饋式網(wǎng)絡,,網(wǎng)絡結構由卷積層,、池化層,、全連接層組成[5]。卷積層的作用是從輸入層提取特征圖,,給定訓練集:
在卷積層后面一般會加一個池化層,,池化又稱為降采樣,池化層可以用來降低輸入矩陣的緯度,,而保存顯著的特征,,池化分為最大池化和平均池化,最大池化即給出相鄰矩陣區(qū)域的最大值,。池化層具有減小網(wǎng)絡規(guī)模和參數(shù)冗余的作用,。
2 卷積神經(jīng)網(wǎng)絡剪枝
2.1 模型壓縮的方法
本文用以下方法修剪模型:(1)首先使用遷移學習的方法對網(wǎng)絡訓練,然后對網(wǎng)絡進行微調,,使網(wǎng)絡收斂并達到最優(yōu),,保存模型;(2)對保存的模型進行修剪,,并再次訓練,,對修剪后的模型參數(shù)通過訓練進行微調,如此反復進行,,直到檢測不到可供裁剪的卷積核,;(3)對上一步裁剪后的模型再次訓練,直到訓練的次數(shù)達到設定的標準為止,。具體的流程如圖2所示,。
上述的處理流程比較簡單,重點是如何評判網(wǎng)絡模型中神經(jīng)元的重要性,。本文用價值函數(shù)C(W)作為評判重要性的工具,。對于數(shù)據(jù)集D,經(jīng)訓練后得到網(wǎng)絡模型Model,,其中的權重參數(shù)為:
2.2 參數(shù)評估
網(wǎng)絡參數(shù)的評估在模型壓縮中有著非常重要的作用,。一般采用下面的這種方法,通過比較權重參數(shù)的l2范數(shù)的大小,,刪除l2范數(shù)較小的卷積核[8],。除此之外,還可以通過激活驗證的方法對參數(shù)進行評判,,將數(shù)據(jù)集通過網(wǎng)絡前向傳播,,對于某個網(wǎng)絡節(jié)點,若有大量通過激活函數(shù)后的數(shù)值為0或者小于一定的閾值,,則將其舍去,。
2.2.1 最小化l2范數(shù)
3 實驗結果
3.1 訓練和剪枝結果
本設計在Ubuntu16.04系統(tǒng),搭載1080Ti顯卡的高性能服務器上進行實驗,,使用Pytorch深度學習框架進行訓練和測試,。本設計使用VGG16網(wǎng)絡,,對16類常見的路面障礙物圖片進行訓練,其中數(shù)據(jù)集中的訓練集有24 000張圖片,,訓練集12 000張圖片,。在VGG16網(wǎng)絡中有16個卷積網(wǎng)絡層,共4 224個卷積核,。采用遷移學習的方法對其進行訓練,,設置epoch為30,訓練的結果如圖3所示,。
圖3縱軸表示訓練的準確率,,橫軸表示迭代次數(shù),最后的訓練準確率為97.97%,。
將上面的訓練參數(shù)保存為模型,,對其進行剪枝,分5次對其修剪,,首先會根據(jù)l2范數(shù)最小值篩選出要修剪的網(wǎng)絡層中的卷積核,,每次去除512個卷積核,修剪后模型中剩余的卷積核數(shù)量如圖4所示,。
圖4中縱軸表示模型中保留的卷積核的數(shù)量,,從最初的4 224降到1 664,裁剪率達到60.6%,。5次迭代修剪后的準確率如圖5所示,。
對修剪后的網(wǎng)絡重新訓練得到最終的修剪模型,訓練過程如圖6所示,。
最后達到98.7%的準確率,。剪枝前模型大小為512 MB,剪枝后模型可以縮小到162 MB,,將模型的內存占用降低了68.35%。
3.2 嵌入式平臺下的移植測試
在嵌入式平臺樹莓派3代B型上移植Pytorch框架,,樹莓派3b擁有1.2 GHz的四核BCM2837 64位ARM A53處理器,,1 GB運行內存,板載BCM43143WiFi,。由于樹莓派運行內存有限,,故增加2 GB的swap虛擬內存,用于編譯Pytorch框架源碼,。將在GPU服務器上訓練好的網(wǎng)絡模型移植到嵌入式平臺,,對其進行測試。對123張測試圖片進行檢測分類,,載入裁剪前的原始模型,,用時109.47 s,,準確率為95.08%。載入剪枝后的模型,,同樣對123張圖片進行測試,,用時41.85 s,準確率達到96.72%,。結果如圖7所示,,可以看到對模型裁剪后時間上減少了61%,速度有了很大提升,。
4 結論
目前深度學習是一個熱門的研究方向,,在圖像檢測、分類,、語音識別等方面取得了前所未有的成功,,但這些依賴于高性能高配置的計算機,也出現(xiàn)了各種深度學習框架以及網(wǎng)絡模型,,但是可以預見深度學習即將邁入一個發(fā)展平緩期,,如果不能有一個寬闊的應用領域,深度學習的發(fā)展將很快被擱淺,。誠然,,將其應用于嵌入式平臺將會是一個非常好的發(fā)展方向。相信未來深度學習在嵌入式領域會有一個更大的突破,,部署于移動平臺將不再是一個難題,。
參考文獻
[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)絡研究綜述[J].計算機學報,,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.貴州大學 大數(shù)據(jù)與信息工程學院,,貴州 貴陽550025;2.貴陽信息技術研究院,,貴州 貴陽550081)