杜闊 李亞
摘? 要: 數字識別在郵政編碼、車牌數字檢測識別等場景有著廣泛的應用。以Lenet?5卷積神經網絡為基礎,研究卷積計算量過大和預測速度慢的問題。對不同的卷積層(首層、中間層、尾層)和網絡結構進行了改進和優化,采用不同組合的方案使卷積核連接數減少一定的數量,進行仿真實驗。實驗結果表明,保證在同一準確率的前提下,綜合考慮迭代次數和預測時延,在C3層(中間層)做優化最為合適,總結出的規律和方法也可對復雜卷積神經網絡優化提供參考,滿足實時性要求高、大數據量的應用場景。
關鍵詞: 數字分類器; 卷積神經網絡; 卷積計算; 數字識別; 網絡結構優化; 仿真實驗
中圖分類號: TN761.93?34; TP391? ? ? ? ? ? ? ? ? ?文獻標識碼: A? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2019)16?0098?06
0? 引? 言
深度學習是以數據的原始形態作為輸入,經過算法的層層抽象將原始的數據抽象為自身所需的最終特征表示,映射到目標作為結束,中間不摻雜任何人為操作。深度學習中的一類代表算法是神經網絡算法[1?2],其中就包括卷積神經網絡[3?4]等。
卷積神經網絡(Convolutional Neural Network, CNN),也叫作卷積網絡。文獻[5]提出首個真實的卷積神經網絡模型,以及關于對MNIST數字庫識別的結果。目前在計算機視覺、自然語言處理、醫學圖像處理、文本分類[6?8]等領域,卷積神經網絡都表現的異常優秀。
卷積網絡的一個重要思想是通過權值共享來幫助改善學習系統。它的權值共享網絡結構類似于生物神經網絡[9],能降低網絡模型的復雜度,減少權值的數量。這個優點在網絡的輸入是多維度圖像時表現得更為明顯[10?11],圖像可以直接作為網絡的輸入,避免了傳統識別算法的特征提取和數據重建過程。還有依托于FPGA平臺的嵌入式卷積神經網絡的應用以及在嵌入式視覺實時顯示方面的應用[12]。針對典型的卷積神經網絡的改進方法,例如采用不同的激活函數,以及使用混合的下采樣方法,還有不同的池化方法,池化窗口的大小,卷積核的大小[13?15],并沒有在預測時卷積運算量和預測時延方面進行優化。所以本文提出針對減少卷積運算的方案,參照Lenet?5卷積神經網絡,設計了一個7層的卷積神經網絡,對卷積層C1,C3,C5分別進行了優化實驗,在保證準確率的前提下,減少了卷積計算量,降低了預測時延。
1? 網絡結構與分析
1.1? 網絡結構參數
卷積神經網絡是屬于一種基于監督學習的深度學習模型,還是一種特殊的深度神經網絡模型,因為它的神經元連接是非全連接的,相同層神經元連接的權重值是共享的,所以這樣的特殊性使卷積神經網絡具有很強的適應性、良好的魯棒性以及快速的學習能力。
本網絡結構由7層構成,分別為輸入層、卷積層1(C1)、池化層2(S2)、卷積層3(C3)、池化層4(S4)、卷積層5(C5)、輸出層。網絡每層參數如表1所示。
由表1可以看出每層參與的運算、各個參數的配置,卷積核的大小、個數、卷積窗口移動步長以及輸出中間結果(每層輸出)的大小。
1.2? 網絡結構與問題分析
整個網絡的結構圖如圖1所示。圖1中已經標注每個窗口的大小。最左側圖片32×32×1代表輸入1張大小為32×32 圖像的原始像素值,經過卷積層1的6個5×5大小的卷積核的卷積運算后輸出28×28×6維度的特征圖(Feature Map)作為中間結果,再經過池化(也稱為下采樣)層輸出14×14×6,直到網絡最后的輸出層;每一層的輸出結果作為下一層的數據輸入。本網絡結構與Lenet?5網絡的一點不同之處在于,卷積層5后直接是輸出層,Lenet?5網絡在卷積層5后還有全連接層。使用MNIST數據庫作為訓練集和測試集,訓練集數據樣本為60 000張,測試集數據樣本為10 000張。
得出C3層需要做的卷積次數為9 600次。計算方法是C3層的輸入特征圖大小為14×14×6,卷積核大小為5×5,步長為1,所以每個卷積核遍歷完一個特征圖要做[14?2×(5/2)] × [14?2×(5/2)]=10×10=100次卷積運算(注:([52])取2),即所有的卷積核遍歷完特征圖需要10×10×6×16=9 600次卷積運算。同理得到C1, C5層卷積次數分別為4 704次,1 920次。文獻[5]提出的卷積連接表見表2。
這個連接表說明池化層2與卷積層3是非全連接的,這樣做打破了網絡的對稱性,強迫因為不同特征圖的輸入從而學習到圖片不同的特征。卷積層3的每個特征圖是連接到池化層2的所有6個或小于6個特征圖,表示本層結果是由上一層抽取的不同特征圖組合得到的,但是這個組合并不唯一。
表2中連接表中的列數0~5代表池化層2輸出的6個特征圖;行數0~15代表卷積層3計算需要的16個不同的卷積核;O,X表示每個特征圖與不同卷積核是否連接;O表示連接進行卷積運算;X代表非連接。當然也可以采用全連接,這樣的話計算量會更大,卷積運算消耗時間更長。那么有沒有其他方案在同樣的準確率情況下使計算量減少,同時使預測時間更短。
對此,本文在算法和實現上對卷積連接表進行了改進和優化,首先減少了卷積層3進行卷積的計算量并且用Xilinx官方工具Vivado High?Level Synthesis預估計算出在卷積層3卷積運算降低延時的時間。
2? 優化方案與仿真
2.1? 優化方案分析
根據原始的卷積連接表,可以看出是按照每個特征圖卷積核連接數相等(每行10個連接),且把16個卷積核分為0~5,6~11,12~14,15四部分,每部分各列的卷積連接個數相同,最后一列為全連接排布的規則來確定每個位置是否連接, 思路是嘗試不同的方案來達到降低計算量和卷積計算延遲時間的目的。
方案是先將總的卷積核連接數減少[12],再在卷積核總數不變的原則下,按照不同的方案方法排布,通過對比實驗仿真結果尋找出最優方案方法;然后遵循此方法將卷積核連接數逐步遞減;再重復訓練仿真實驗,減少卷積核連接數,同時觀察訓練迭代次數(epoch)的變化情況。
首先,優化方案1連接表中卷積核連接數減半,原始表示連接的數是60,現在直接減為30,并且服從隨機分布,每個特征圖對應卷積核連接數不相等(即每行對應的連接數不等),具體分布如表3所示。
優化方案3,連接數依然為30,依然按照每個特征圖5個卷積核連接,等間隔(列間隔為2,無卷積核連接)交錯分布,具體分布如表5所示。
優化方案4,連接數O減少到24,每個特征圖對應連接4個卷積核,列數隨機分布,具體分布如表6所示。
優化方案5,連接數O減少到18,每個特征圖對應連接3個卷積核,列數交錯分布,具體分布如表7所示。
優化方案6,連接數O減少到12,每個特征圖對應連接2個卷積核,列數交錯分布,具體分布如表8所示。
2.2? 仿真結果對比
硬件平臺:Laptop Windows 10 Intel i7?6600U@2.6 GHz;軟件環境:Visual Studio 2017,OpenCV Library。
本網絡訓練設定最大迭代周期次數為100,學習率設定為0.01,準確率設定為98.5%。表9列出訓練仿真后的對比結果,文獻[5]的原始卷積連接表用方案0表示。
從表9的仿真對比迭代周期次數可以看出優化方案3是迭代周期最多的,表明雖然卷積計算量減少[12],但迭代次數相比方案0(原始)增加3倍多;在前三個方案中方案2是最優的,卷積計算量減少[12],但是迭代周期次數增加8次。按照此方法繼續推出了方案4,方案5,方案6,卷積核連接總數依次遞減,得出優化方案4在方案2基礎上減少運算但迭代次數并沒有增加;方案5、方案6卷積核總數依次減少同時迭代周期次數也線性增長。所以在綜合考慮到卷積運算量和訓練迭代次數的結果下方案4是最優的。
同時按照方案4的方法做了對C1 和C5 層的優化,仿真結果如表10、表11所示。其中,C1的優化方案用數字8,9來表示;C5的優化方案用數字10,11表示。
但是C1優化后,訓練的模型在預測時會出現較多錯誤,如圖2所示。
預測出錯的主要原因在于C1層緊挨輸入層,提取的是圖片的低維特征,刪減太多卷積運算導致網絡對低維特征的學習不足,從而導致在預測時出現比較嚴重的錯誤。
C5層優化后雖然保證了準確率,但迭代次數接近優化C3層的2倍,而且減少的卷積運算遠沒有C3層優化減少得多。
根據以上實驗結果總結出:當網絡的某層卷積運算較大時可以有效的對其進行刪減,卷積核連接矩陣中每行連接個數相等且每列至少有一個卷積核連接,即每個特征圖對應的實際參與卷積運算的卷積核數相等且各個特征圖對應的實際參與卷積運算的卷積核的序號盡可能保證不同,綜合考慮訓練迭代次數和運算量效果更優;而且盡量不要對靠近輸入層的卷積層進行優化,對準確率可能會有影響,如果對迭代次數可以接受的條件下,對靠后的卷積層進行適當的優化也是可以的。
3? 預測時延計算
本文介紹在實際的測試實驗下如何計算預測時間,以及使用最優方案預測減少的時延。
Vivado High Level Synthesis(Vivado HLS)是Xilinx官方提供的基于C,C++高級語言來實現描述硬件邏輯開發功能的工具,大大提高了具有高級語言開發者的工作效率。Vivado HLS還具有仿真、綜合、驗證、封裝IP打包的功能。
按照第2節所述方案順序對卷積層3進行綜合,分析綜合結果,計算通過卷積運算的時間,總結不同卷積核總數下的時間延時。
首先,為了確保在非工具參數設置因素的影響下,第一步計算出卷積層3卷積核全連接時(即連接為全O),經過卷積計算的全部時間;然后,根據上述各方案綜合結果計算各個方案延時。表12即卷積核全連接時卷積層3的延時計算表,總延時=循環延時×循環次數。表中數值的單位是時鐘周期數,FPGA的時鐘頻率設定為100 MHz,即每個時鐘周期是10 ns,所以在卷積核全連接時總延時時間是32 044×6×16×10=30 762 240 ns。
由于在工具默認設置下卷積層3卷積核非全接連所綜合出的總延時顯示為動態范圍,因此用表13表示其他方案下的綜合結果,其中CONV_LOOP一欄循環延時3 ns表示進入和退出循環消耗的時間。所以當卷積核連接總數為60時,總延時計算方法為總延時=[60×32 045+[(6×16)-60]×3]×10=19 228 080 ns ,其他方案延時計算方法相同,計算出剩余方案的延時,統計的結果如表14所示。
根據之前找出的最優方案,卷積核連接總數是24,對應的總延時時間為7 692 780 ns,相比于卷積核數為原始60時,減少的時間Δt=19 228 080-7 692 780= 11 535 300 ns = 11.535 3 ms,即在方案4下預測時每張圖片在卷積層3比方案0減少約60%的時間。
4? 結? 語
本文以Lenet?5卷積神經網絡為基礎,對其進行研究和優化。分別對各卷積層設計優化方案,通過仿真實驗找出綜合條件下的最優方案,總結出針對多層卷積神經網絡訓練時間長、計算量大等問題的解決方法,可為后續研究復雜卷積神經網絡及相關優化提供參考。
參考文獻
[1] 王曉鋒,馬鐘.基于卷積神經網絡Lenet?5的貨運列車車號識別研究[J].現代電子技術,2016,39(13):63?66.
WANG Xiaofeng, MA Zhong. Research on freight train license recognition based on convolutional neural network Lenet?5 [J]. Modern electronics technique, 2016, 39(13): 63?66.
[2] 葛明濤,王小麗,潘立武.基于多重卷積神經網絡的大模式聯機手寫文字識別[J].現代電子技術,2014,37(20):19?21.
GE Mingtao, WANG Xiaoli, PAN Liwu. Large pattern online handwriting character recognition based on multi?convolution neural network [J]. Modern electronics technique, 2014, 37(20): 19?21.
[3] 宋志堅,余銳.基于深度學習的手寫數字分類問題研究[J].重慶工商大學學報(自然科學版),2015(8):49?53.
SONG Zhijian, YU Rui. Research on the classification of handwriting number cased on deep learning [J]. Journal of Chongqing Technology and Business University (Natural science edition), 2015(8): 49?53.
[4] 呂國豪,羅四維,黃雅平,等.基于卷積神經網絡的正則化方法[J].計算機研究與發展,2014(9):1891?1900.
L? Guohao, LUO Siwei, HUANG Yaping, et al. A novel regularization method based on convolution neural network [J]. Journal of computer research and development, 2014(9): 1891?1900.
[5] LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient?based learning applied to document recognition [J]. Proceedings of the IEEE, 1998, 86(11): 2278?2324.
[6] 常亮,鄧小明,周明全,等.圖像理解中的卷積神經網絡[J].自動化學報,2016,42(9):1300?1312.
CHANG Liang, DENG Xiaoming, ZHOU Mingquan, et al. Convolutional neural network in image understanding [J]. Journal of automation, 2016, 42(9): 1300?1312.
[7] 馬媛媛,史加榮.卷積神經網絡及其在手寫體數字識別中的應用[J].湖北工程學院學報,2017,37(6):66?72.
MA Yuanyuan, SHI Jiarong. Convolutional neural network and its application in handwritten number recognition [J]. Journal of Hubei Engineering University, 2017, 37(6): 66?72.
[8] 周飛燕,金林鵬,董軍.卷積神經網絡研究綜述[J].計算機學報,2017(6):1229?1251.
ZHOU Feiyan, JIN Linpeng, DONG Jun. Review of Convolutional Neural Networks [J]. Journal of computer science, 2017(6): 1229?1251.
[9] 余萍,趙繼生,張潔.基于非線性修正函數的卷積神經網絡圖像識別研究[J].科學技術與工程,2015(34):221?225.
YU Ping, ZHAO Jisheng, ZHANG Jie. Image recognition of convolutional neural networks based on rectified nonlinear units function [J]. Science technology and engineering, 2015(34): 221?225.
[10] 盧宏濤,張秦川.深度卷積神經網絡在計算機視覺中的應用研究綜述[J].數據采集與處理,2016(1):1?17.
LU Hongtao, ZHANG Qinchuan. Applications of deep convolutional neural network in computer vision [J]. Data acquisition and processing, 2016(1): 1?17.
[11] XU B, WANG N Y, CHEN T Q, et al. Empirical evaluation of rectified activations in convolution network [J]. Computer science, 2015(2): 1?5.
[12] FRABET C, POULET C, HAN J Y, et al. CNP:an FPGA?based processor for convolutional networks [C]// Proceedings of 2009 International Conference on Field Programmable Logic and Applications. Prague, Czech: IEEE, 2009: 32?37.
[13] 張慶輝,萬晨霞,陳眾威.基于改進卷積神經網絡的手寫體識別研究[J].中原工學院學報,2017,28(4):79?85.
ZHANG Qinghui, WAN Chenxia, CHEN Zhongwei. Research on handwritten recognition based on improved convolution neural network [J]. Journal of Zhongyuan Institute of Technology, 2017, 28(4): 79?85.
[14] 高諾,胡文燁,楊玉娜.采用卷積神經網絡的數字手寫體識別的研究[J].齊魯工業大學學報,2018,32(5):45?49.
GAO Nuo, HU Wenye, YANG Yuna. Research on the recognition of digital handwriting by convolutional neural networks [J]. Journal of Qilu University of Technology, 2018, 32(5): 45?49.
[15] 杜洋,王展青.基于改進卷積神經網絡的手寫數字識別[J].計算機測量與控制,2018,26(7):256?261.
DU Yang, WANG Zhanqing. Handwritten numeral recognition based on improved convolution neural network [J]. Computer measurement and control, 2018, 26(7): 256?261.