文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.174161
中文引用格式: 王昆,周驊. 深度學習中的卷積神經(jīng)網(wǎng)絡系統(tǒng)設計及硬件實現(xiàn)[J].電子技術應用,2018,44(5):56-59.
英文引用格式: Wang Kun,Zhou Hua. System design and hardware realization of convolution neural network system in deep learning[J]. Application of Electronic Technique,2018,44(5):56-59.
0 引言
隨著深度學習的廣泛應用與發(fā)展[1-2],卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)被使用的場景越來越多,特別是在圖像識別場景中獲得了突破性的發(fā)展。CNN擁有多層的神經(jīng)網(wǎng)絡結構,其自身擁有較強的容錯、學習和并行處理能力[3],是一種擁有多層感知器,局部連接和權值共享的網(wǎng)絡結構[4],從而降低了網(wǎng)絡模型的復雜性和網(wǎng)絡連接權值的個數(shù),因此近幾年來CNN在視頻分析[5-6]、人臉識別[7-8]等領域得到了廣泛的應用。
雖然CNN的應用廣泛,但其模型參數(shù)的訓練往往需要大量的用時,特別是當數(shù)據(jù)量很大的時候。在現(xiàn)階段實現(xiàn)深度卷積神經(jīng)網(wǎng)絡主要是使用消費級的通用處理器CPU來實現(xiàn)的[9],但是在CNN的模型結構中,其每一層內(nèi)的卷積運算都只與當前層的特征運算核相關,與其他層是獨立且不相關的,所以CNN是一種典型的并行運算結構。而現(xiàn)場可編程門陣列(Field-Programmable Gate Array,FPGA)作為一種高度密集型計算加速器件,可通過硬件描述語言完成算法實現(xiàn),從而利用FPGA的硬件結構特性實現(xiàn)并行運算的加速。
本文首先對深度學習中的CNN進行了介紹,然后設計一種基于FPGA的CNN系統(tǒng),通過流水線和并行處理減少了訓練參數(shù)所需用時,提升了系統(tǒng)的計算性能。為了驗證設計的功能性,最后采用MINST數(shù)據(jù)集作為系統(tǒng)驗證。
1 CNN
1.1 CNN模型
CNN是基于神經(jīng)認知機模型(Neocognitron Model)的一種深度神經(jīng)網(wǎng)絡結構,是當前應用最為廣泛的模型結構。CNN在確定模型參數(shù)時首先利用前向傳播來獲取和輸出目標的誤差,然后再通過高效的反向傳播訓練算法來實現(xiàn)參數(shù)的確定。一般經(jīng)典的CNN模型是由輸入層、卷積層、池化層、全連接層和分類層組合而構成的,在CNN中卷積層和不同的卷積核進行局部連接,從而產(chǎn)生輸入數(shù)據(jù)的多個特征輸出,將輸出經(jīng)過池化層降維后通過全連接層和分類層獲取與輸出目標的誤差,再利用反向傳播算法反復地更新CNN中相鄰層神經(jīng)元之間的連接權值,縮小與輸出目標的誤差,最終完成整個模型參數(shù)的訓練。圖1是一種典型的CNN網(wǎng)絡結構,數(shù)據(jù)使用不同權重的卷積核Kernel經(jīng)過卷積運算,將運算的結果經(jīng)過激活函數(shù)ReLU后加上偏置Bias得到多個特征輸出,然后經(jīng)過池化進行層降維處理后再與全連接層進行全連接,最后經(jīng)過分類器Softmax函數(shù)進行輸出分類。
得到分類結果后,經(jīng)過與輸出目標進行比較得出誤差,最后使用反向傳播算法得出每一層的殘差,利用殘差計算出新的權值并更新原有的權值。以上整個過程可由式(1)和式(2)表示:
1.2 本文CNN模型
本文所設計的CNN網(wǎng)絡模型結構如圖2所示,該結構有1個輸入層、4個卷積層、2個池化層、1個全連接層、1個采用Softmax函數(shù)的分類層和1個輸出層,共8層。
第1層和第8層為輸入層和輸出層。輸入層完成測試圖像數(shù)據(jù)的輸入獲取,因為采用MNIST數(shù)據(jù)集,所以輸入數(shù)據(jù)為784個。輸出層與前一層連接的權重個數(shù)為20×10=200,輸出結果為10種。
第2、3、5、7層均為為卷積層。輸出特征圖的個數(shù)分別為5、5、10、20,每層卷積核大小分別為5×5,5×5,5×5,3×3,卷積核移動步長均為1,系統(tǒng)設計采用ReLU作為激活函數(shù),每一層的參數(shù)為:
第2層:權重為5×5×5=125個,偏置為5個;
第3層:權重為5×5×5×5=625個,偏置為5個;
第5層:權重為5×5×5×10=1 250個,偏置為10個;
第7層:權重為3×3×10×20=1 800個,偏置為20個;因此整個卷積層總共有3 840個參數(shù)。
第4、6層為池化層。在池化層也采用卷積運算,卷積核大小為2×2,使用平均池化方法。
2 CNN系統(tǒng)硬件設計
整個系統(tǒng)硬件根據(jù)CNN網(wǎng)絡結構進行設計,利用FPGA硬件電路并行特性將每一層設計為單獨的一個模塊,最后的分類層利用本文所設計的Softmax分類器來完成輸入數(shù)據(jù)的分類結果,再經(jīng)過反向傳播算法計算出所需要更新的權值。整體系統(tǒng)設計結構如圖3所示。
系統(tǒng)首先由控制器初始化每一層卷積核Kernel的權重數(shù)值索引地址,根據(jù)索引地址從RAM模塊當中加載權重數(shù)值和偏置值。在前向傳播時將輸入數(shù)據(jù)通過輸入信號進入數(shù)據(jù)緩沖區(qū),然后根據(jù)每層的輸出特征圖的個數(shù)與卷積核完成卷積運算,將運算的結果經(jīng)過激活函數(shù)ReLU和偏置完成當前層的最終輸出特征圖并輸入下一層當中。當經(jīng)過池化層時進行下采樣運算,從而降低特征圖的維數(shù)。最后Softmax分類器根據(jù)輸入的數(shù)據(jù)通過查找ROM中與之對應的數(shù)值在經(jīng)過概率轉(zhuǎn)換后完成最終的輸出結果。在反向傳播時,根據(jù)ROM當中的標簽與輸出結果進行比較得出每一層的殘差保存至RAM當中,計算完成后根據(jù)所設定的學習率來完成所有卷積層中卷積核的權值和偏置值的更新,并將更新后的權值由控制器保存到相應的存儲位置,直至所有訓練數(shù)據(jù)輸入完成。
2.1 卷積層硬件設計
在圖3的卷積層中,首先將輸入數(shù)據(jù)進行緩存處理。因為要進行卷積運算,所以必須將輸入的數(shù)據(jù)根據(jù)每個卷積層的卷積核Kernel的大小來進行與之相對應的大小調(diào)整。在系統(tǒng)設計中通過使用移位寄存器(Shift Register)來實現(xiàn)對數(shù)據(jù)的處理,移位寄存器能夠?qū)?shù)據(jù)在進行緩存的同時進行移位處理,該器件能夠根據(jù)所設定的深度來對數(shù)據(jù)進行轉(zhuǎn)換處理,當需要數(shù)據(jù)進行輸出的時候只需增加抽頭輸出信號即可將數(shù)據(jù)進行輸出,利用移位寄存器就能夠在1個時鐘周期完成1次卷積運算。在計算出當前輸入數(shù)據(jù)的特征輸出圖后還需經(jīng)過激活函數(shù),系統(tǒng)設計使用硬件容易實現(xiàn)的ReLU函數(shù)作為激活函數(shù),該函數(shù)在輸入值大于0時輸出原輸入值,小于零時輸出0,因此使用比較器即可實現(xiàn)。其卷積運算具體實現(xiàn)過程如圖4所示。
圖4是卷積核大小為3×3時的運算過程,Shift_in是數(shù)據(jù)輸入,wi為該卷積核權重值,mi為輸出數(shù)據(jù)緩存寄存器。
2.2 卷積層計算硬件優(yōu)化
由于FPGA硬件電路的并行特性,其當中每個模塊的計算是相互獨立互不相關的,并且CNN網(wǎng)絡結構中每層的計算也是相互獨立的,充分體現(xiàn)了整個結構的并行性,特別是卷積運算。因此系統(tǒng)設計中采用了并行設計的方法,設計根據(jù)卷積層上一層的輸出特征圖的個數(shù)和當前卷積層需要輸出特征圖的個數(shù)分別為每個特征圖設計了相應的卷積核組,利用流水線技術和并行運算同時對每個卷積核組完成與之對應的特征抽取,因為系統(tǒng)設計中對池化層的下采樣也采用了卷積運算來完成,所以對于本系統(tǒng)則能夠在1個時鐘周期內(nèi)完成295次卷積運算,相較于通用CPU運算,本系統(tǒng)設計運算效率得到了顯著提升。系統(tǒng)卷積運算優(yōu)化設計具體結構如圖5所示。
圖5中xi為特征圖輸入,wij分別是每個卷積核組內(nèi)不同卷積核的權值,ki為不同的卷積核組,ci為計算結果輸出。
2.3 Softmax分類器
在經(jīng)過多層的卷積層和池化層的運算后最終得到當前輸入數(shù)據(jù)的特征值,將特征值與最后的輸出層進行全連接得出最終的分類結果。系統(tǒng)設計中的分類器使用Softmax函數(shù)來完成最后結果的輸出,但Softmax函數(shù)是將所有輸入數(shù)據(jù)通過e指數(shù)運算進而得出輸出概率分布,且概率分布的數(shù)值范圍是0~1之間的浮點數(shù),而FPGA并不適合進行浮點數(shù)運算,并且完成e指數(shù)運算所消耗時間較長。因此系統(tǒng)設計中采用查表法來完成e指數(shù)運算,通過事先將計算后的指數(shù)運算結果存儲至ROM當中,然后根據(jù)輸入的特征值作為地址來查找所對應的指數(shù)結果。經(jīng)過軟件平臺測試,特征值經(jīng)過放大后的取值范圍是-70~80,范圍較大,為了減少ROM的存儲消耗,系統(tǒng)設計中將處理后的特征值計算的數(shù)值結果縮小至-30~40之間并進行取整處理,雖然該做法在一定程度上增強或減弱了對應特征值的比重,但降低了查表所需存儲數(shù)值ROM的存儲空間,減少了資源的消耗。Softmax分類器的設計電路結構圖如圖6所示。
設計中首先將特征值輸入經(jīng)過查表得出對應指數(shù)運算的結果,同時將結果進行累加運算,最后相除從而計算出分類的結果。
3 系統(tǒng)仿真與分析
系統(tǒng)設計中的硬件使用Altera公司的Cyclone IV EP4CE115芯片作為試驗平臺,該芯片內(nèi)部擁有114 480個邏輯單元,6.3 MB的嵌入式存儲器,266個嵌入式18×18乘法器,片內(nèi)資源豐富,能夠滿足CNN系統(tǒng)硬件設計中所需要的資源,CPU測試平臺使用Core i7四核處理器,主頻為3.4 GHz。
仿真過程中,整個CNN的學習率設置為0.04,每次輸入批次為30張,迭代次數(shù)為2 000次,實驗樣本訓練數(shù)據(jù)為MNIST數(shù)據(jù)集28×28像素的灰度圖片60 000張,圖像數(shù)值范圍為0~255,測試數(shù)據(jù)為10 000張,使用均方誤差函數(shù)作為損失函數(shù)來評價CNN整體系統(tǒng)的性能,最終實驗運行結果如圖7所示。
可以看出在硬件平臺運行和軟件平臺運行均能夠?qū)崿F(xiàn)對結果的正確分類,在訓練的最開始由于權重值是隨機初始化的,因此誤差較大,隨著不斷地迭代更新權值,誤差逐漸降低,最后其對圖像識別準確率分別為92.42%和96.21%,識別的準確率基本一致。硬件平臺的準確度不如軟件平臺高,是由于在分類器中對Softmax函數(shù)的輸入取值做了一定的限定,并在整個訓練過程中進行了數(shù)據(jù)的放大處理和取整,損失了一定的精度。硬件平臺的訓練時間和軟件平臺訓練所需的時間消耗如表1所示。
硬件平臺整個訓練所用時間相較于軟件平臺運算的時間提升了8.7倍,系統(tǒng)設計主要的硬件資源消耗如表2所示。
系統(tǒng)設計因為中使用了大量的移位寄存器和緩存寄存器來存儲特征值的輸入值,使得寄存器的使用較多,但可以看出實驗所用使用的FPGA能夠滿足本文所設計的CNN網(wǎng)絡結構。
4 結論
本文設計了一種深度學習中的CNN硬件系統(tǒng),通過FPGA實現(xiàn)了整個CNN網(wǎng)絡結構,充分利用了FPGA的硬件電路并行特性和流水線技術,對整個卷積層進行了并行運算優(yōu)化,使得整個系統(tǒng)能夠在1個時鐘周期內(nèi)同時處理所有卷積層中295次卷積運算,從而使得整個網(wǎng)絡訓練用時相較于通用CPU平臺提升了8.7倍,減少了網(wǎng)絡訓練的所需用時,并且設計了一種通過查表法實現(xiàn)的Softmax分類器來完成對輸出結果的分類。實驗結果表明,該系統(tǒng)設計能夠?qū)NIST測試數(shù)據(jù)集完成識別分類且識別準確率經(jīng)過2 000次迭代后為92.42%,結果基本與相同訓練次數(shù)下的CPU平臺一致。
參考文獻
[1] LECUN Y,BENGIO Y,HINTON G.Deep learning[J].Nature,2015,521(7553):436-444.
[2] SZEGEDY C,Liu Wei,Jia Yangqing,et al.Going deeper with convolutions[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2015:1-9.
[3] 余子健,馬德,嚴曉浪,等.基于FPGA的卷積神經(jīng)網(wǎng)絡加速器[J].計算機工程,2017,43(1):109-114,119.
[4] 方睿,劉加賀,薛志輝,等.卷積神經(jīng)網(wǎng)絡的FPGA并行加速方案設計[J].計算機工程與應用,2015,51(8):32-36.
[5] Zhu Yuke,MOTTAGHI R,KOLVE E,et al.Target-driven visual navigation in indoor scenes using deep reinforcement learning[C].IEEE International Conference on Robotics & Automation,ICRA,2017:3357-3367.
[6] ALAHI A,WILSON J,Li Feifei,et al.Unsupervised camera localization in crowded spaces[C].IEEE International Conference on Robotics & Automation,ICRA,2017:2666-2673.
[7] 蔣雨欣,李松斌,劉鵬,等.基于多特征深度學習的人臉性別識別[J].計算機工程與應用,2016,1(43):226-231.
[8] 李倩玉,蔣建國,齊美彬.基于改進深層網(wǎng)絡的人臉識別算法[J].電子學報,2017(3):619-625.
[9] SZEGEDY C,VANHOUCKE V,IOFFE S,et al.Rethinking the inception architecture for computer vision[J].Computer Science,2015:2818-2826.
作者信息:
王 昆,周 驊
(貴州大學 大數(shù)據(jù)與信息工程學院,貴州 貴陽550025)