文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.182417
中文引用格式: 王昆,周驊. 基于深度學(xué)習(xí)的實時識別硬件系統(tǒng)框架設(shè)計[J].電子技術(shù)應(yīng)用,,2018,,44(10):11-14.
英文引用格式: Wang Kun,Zhou Hua. Design of real-time recognition hardware system framework based on deep learning[J]. Application of Electronic Technique,,2018,,44(10):11-14.
0 引言
近年來隨著深度學(xué)習(xí)的迅速發(fā)展[1-3],,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network)被廣泛使用[4-5],,特別是在圖像識別場景中的應(yīng)用[6-7]。為滿足更多場景應(yīng)用,,需要設(shè)計出一種能夠根據(jù)實際場景需求可替換不同CNN網(wǎng)絡(luò)模型的系統(tǒng)框架,。雖然CNN的使用廣泛,但是目前應(yīng)用CNN的硬件平臺主要是通過普通處理器CPU來實現(xiàn)的[8-9],,其電路架構(gòu)并不適合作為CNN實現(xiàn)的計算平臺,,因為CNN當(dāng)中的模型結(jié)構(gòu),其內(nèi)部的每層卷積運算都只與當(dāng)前卷積層的卷積核相關(guān),,與其他層的運算是互相獨立的,,所以CNN的結(jié)構(gòu)是一種并行的,使得CPU整體的計算效率較低,。而現(xiàn)場可編程門陣列(FPGA)作為一種高度密集型計算加速器件,具有可重配置特性,,利用硬件描述語言完成相關(guān)結(jié)構(gòu)設(shè)計實現(xiàn),,因此可使用FPGA的硬件結(jié)構(gòu)特性實現(xiàn)CNN的計算加速。
ZYNQ是Xilinx公司設(shè)計的一種FPGA+ARM的芯片,,該芯片通過使用AXI總線互聯(lián)技術(shù)將FPGA與ARM整合在一起,,從而可充分發(fā)揮出兩種器件結(jié)構(gòu)的優(yōu)勢。
本文使用ZYNQ作為實現(xiàn)平臺,,采用軟硬件協(xié)同的方式,,通過ARM完成輸入圖像數(shù)據(jù)的實時采集、存儲和顯示,,利用FPGA的硬件電路特性完成卷積神經(jīng)網(wǎng)絡(luò)的硬化實現(xiàn),,設(shè)計出了一種基于深度學(xué)習(xí)的實時識別硬件系統(tǒng)框架,從而可根據(jù)實際需求選擇合適的網(wǎng)絡(luò)模型,。為了驗證系統(tǒng)硬件框架設(shè)計的功能性,,本文采用MNIST和Fashion MNIST數(shù)據(jù)集訓(xùn)練的兩個CNN網(wǎng)絡(luò)模型作為系統(tǒng)框架的功能驗證。整體系統(tǒng)框架結(jié)構(gòu)如圖1所示,。
1 圖像采集存儲及顯示
1.1 圖像采集存儲
系統(tǒng)設(shè)計使用OV7670 CMOS攝像頭進行系統(tǒng)視頻圖像數(shù)據(jù)的實時獲取,,并且將其分辨率配置為320像素×240像素,輸出數(shù)據(jù)為RGB565色彩格式,。由于不同模塊之間的工作時鐘不同,,因此需要根據(jù)圖像采集模塊的控制信號和攝像頭的時鐘信號,,將采集到的實時視頻數(shù)據(jù)流存儲至雙口FIFO中進行跨時鐘域處理,然后通過數(shù)據(jù)總線將圖像數(shù)據(jù)存儲在ZYNQ的雙端口的BRAM當(dāng)中,,從而使得整個系統(tǒng)能夠?qū)Σ杉膱D像數(shù)據(jù)進行讀取和處理,。
1.2 圖像顯示
系統(tǒng)框架設(shè)計中使用ILI9341作為控制芯片,分辨率為320×240的2.8寸TFT顯示屏作為視頻圖像數(shù)據(jù)的輸出顯示,,然后通過SPI總線接口協(xié)議完成對攝像頭模塊獲取到的每一幀圖像數(shù)據(jù)進行發(fā)送傳輸,。圖像顯示模塊通過數(shù)據(jù)總線將TFT顯示屏的ILI9341控制模塊連接在雙端口的BRAM上,根據(jù)雙口BRAM當(dāng)中的存儲數(shù)據(jù)量進行圖像數(shù)據(jù)的高速讀取,,將讀取到的圖像數(shù)據(jù)存儲至雙口FIFO當(dāng)中進行存儲及讀取,,從而實現(xiàn)將攝像頭采集的視頻圖像數(shù)據(jù)進行顯示。同時根據(jù)CNN網(wǎng)絡(luò)模型的幀控制信號及運算完成控制信號,,將圖像數(shù)據(jù)讀取至CNN網(wǎng)絡(luò)模型當(dāng)中進行運算識別,,識別完成后也將運算結(jié)果更新至雙端口FIFO進行結(jié)果輸出顯示。
2 卷積神經(jīng)網(wǎng)絡(luò)硬件設(shè)計及實現(xiàn)
系統(tǒng)框架中的可替換網(wǎng)絡(luò)模塊設(shè)計實現(xiàn)了兩個結(jié)構(gòu)一致的CNN網(wǎng)絡(luò)模型,,其結(jié)構(gòu)如圖2所示,,該CNN網(wǎng)絡(luò)模型結(jié)構(gòu)由1個輸入層、6個卷積層,、3個池化層,、1個全連接層和 1個輸出層共12層構(gòu)成。
其中第1層,、第12層為輸入層和輸出層,。輸入層完成經(jīng)過預(yù)處理調(diào)整后的一幀圖像數(shù)據(jù)輸入,由于用來驗證系統(tǒng)框架設(shè)計的兩種訓(xùn)練數(shù)據(jù)集為MNIST和Fashion MNIST數(shù)據(jù)集,,因此網(wǎng)絡(luò)的輸入層均為28×28的窗口,,輸入數(shù)據(jù)為784個。輸出層連接的權(quán)重個數(shù)為16×11=176個,,輸出結(jié)果為11種,,其中一種為無效。
第2,、3,、5、6,、8,、9層均為卷積層。輸出特征圖的個數(shù)分別為4,、4,、8、8,、16,、16個,,每層卷積核大小為3×3,,移動步長均為1,,并且卷積運算結(jié)果的圖像尺寸大小與輸入圖像一致,激活函數(shù)選擇便于硬件實現(xiàn)的ReLU作為激活函數(shù)且無偏置,,每一層的參數(shù)分別為:
第2層:權(quán)重為3×3×4=36個
第3層:權(quán)重為3×3×4×4=144個
第5層:權(quán)重為3×3×4×8=288個
第6層:權(quán)重為3×3×8×8=576個
第8層:權(quán)重為3×3×8×16=1 152個
第9層:權(quán)重為3×3×16×16=2 304個
因此整個卷積層總共有4 500個參數(shù),。
第4、7,、10層為池化層,。在池化層也采用卷積運算,卷積核大小為2×2,,使用最大池化方法,。
2.1 網(wǎng)絡(luò)模型參數(shù)
根據(jù)設(shè)定的網(wǎng)絡(luò)結(jié)構(gòu)及選用的方法,通過使用Keras深度學(xué)習(xí)庫的函數(shù)式模型來進行CNN整體網(wǎng)絡(luò)結(jié)構(gòu)的搭建,,同時將網(wǎng)絡(luò)的學(xué)習(xí)率設(shè)置為0.001,,選擇隨機梯度下降法SGD作為學(xué)習(xí)方法,經(jīng)過130次迭代訓(xùn)練后完成兩種CNN網(wǎng)絡(luò)模型的建立,,并且將訓(xùn)練好的網(wǎng)絡(luò)模型參數(shù)進行存儲,。最終建立的整體網(wǎng)絡(luò)性能如圖3所示,可以看出隨著迭代次數(shù)的增加,,網(wǎng)絡(luò)的性能逐漸提升,,并經(jīng)過測試后,CNN網(wǎng)絡(luò)的整體精度可以達到97.14%,,其性能基本能夠滿足實際應(yīng)用的需要。
由于FPGA本身并不適合進行浮點運算,,因此為了實現(xiàn)FPGA的網(wǎng)絡(luò)硬化,,必須將所生成的網(wǎng)絡(luò)模型參數(shù)
進行定點數(shù)處理,但因為所生成的網(wǎng)絡(luò)模型參數(shù)數(shù)值范圍較大,,會使得定點數(shù)所需位數(shù)較多從而消耗大量的硬件邏輯資源,,所以本文首先對網(wǎng)絡(luò)模型中的權(quán)值參數(shù)進行歸一化處理,然后尋找出最優(yōu)定點數(shù)表示的位數(shù)使得權(quán)值參數(shù)所需位數(shù)最小且不影響整體網(wǎng)絡(luò)的精度,。通過Python讀取網(wǎng)絡(luò)參數(shù)并進行最優(yōu)尋找后系統(tǒng)設(shè)計使用12位位寬進行定點數(shù)表示,并將轉(zhuǎn)換后網(wǎng)絡(luò)模型的權(quán)值參數(shù)按照一定的順序存儲至片內(nèi)BRAM中,。
2.2 卷積層硬件實現(xiàn)
在系統(tǒng)框架設(shè)計的卷積層中,為了實現(xiàn)卷積運算,,需要將BRAM中存儲的圖像數(shù)據(jù)進行緩沖處理,。因為要進行卷積運算,其過程是將輸入的每一幀圖像數(shù)據(jù)與每一層所對應(yīng)卷積層的卷積核Kernel所重疊的部分進行對位相乘相加,,所以必須使得輸入的數(shù)據(jù)與卷積核的大小相匹配,。在系統(tǒng)設(shè)計中利用移位寄存器(Shift Register)來實現(xiàn)對圖像數(shù)據(jù)的緩沖處理,,通過移位寄存器能夠?qū)RAM當(dāng)中的圖像數(shù)據(jù)進行緩存處理并且能夠進行移位操作,使得圖像數(shù)據(jù)與對應(yīng)的卷積核進行對位卷積運算,。由于設(shè)計中的輸出圖像與輸入圖像數(shù)據(jù)大小一致,因此還需要對輸入圖像數(shù)據(jù)進行填充操作以保證輸出后的特征圖大小保持不變,,且通過移位寄存器使得系統(tǒng)能夠在運行時實現(xiàn)單周期的卷積運算,,提升了系統(tǒng)的計算效率。當(dāng)卷積運算完成后還需要經(jīng)過激活函數(shù),,系統(tǒng)設(shè)計中使用了ReLU函數(shù)作為輸出激活函數(shù),該函數(shù)的輸出取決于輸入數(shù)值大小,,當(dāng)輸入數(shù)值大于零時輸出原輸入值,,小于零時輸出零,,因此硬件容易實現(xiàn),系統(tǒng)中使用比較器實現(xiàn)激活函數(shù),,從而完成卷積層的計算,,進而提取當(dāng)前層的輸入圖像特征。
2.3 卷積層運算并行優(yōu)化
由于整個CNN網(wǎng)絡(luò)模型中的每個計算模塊是互不相關(guān)且獨立的,,充分體現(xiàn)出了其結(jié)構(gòu)能夠進行并行運算的特性,尤其是在進行卷積運算時,,而FPGA本身的硬件電路結(jié)構(gòu),,也使其具有進行并行運算的特點,。因此在整體系統(tǒng)框架設(shè)計中均采用了并行化的實現(xiàn)方法,框架設(shè)計中為每個卷積層的卷積核進行了卷積核組的設(shè)定,,根據(jù)特征圖輸入和運算后特征輸出的個數(shù)來確定卷積核組的數(shù)量,,來并行地對設(shè)定的每個卷積核組進行卷積運算,獲取輸入圖特征,。因為系統(tǒng)框架設(shè)計中對池化層中的最大采樣也采用了卷積運算來完成,所以本系統(tǒng)框架設(shè)計能夠?qū)崿F(xiàn)單時鐘周期528次卷積運算,,與普通CPU的運算時間相比較,,本系統(tǒng)框架的計算效率得到了明顯提高。系統(tǒng)框架卷積運算優(yōu)化設(shè)計具體結(jié)構(gòu)如圖4所示,。
圖4中xi為特征數(shù)據(jù)輸入,wij分別是卷積核組中的不同卷積核權(quán)值,,ki為不同的卷積核組,,ci為特征數(shù)據(jù)輸出,。
2.4 Softmax函數(shù)分類器
輸入圖像數(shù)據(jù)通過整體網(wǎng)絡(luò)中的卷積層和采樣層計算后完成對輸入圖像數(shù)據(jù)的特征提取,然后還需要將其與最后的輸出層進行全連接才能最終獲取圖像數(shù)據(jù)的分類結(jié)果,。系統(tǒng)框架設(shè)計中使用了Softmax函數(shù)作為分類器來實現(xiàn)對圖像數(shù)據(jù)的分類結(jié)果輸出,。由于Softmax函數(shù)的概率分布計算是通過指數(shù)運算得出的,,且概率分布的計算結(jié)果為浮點數(shù),而FPGA本身的硬件結(jié)構(gòu)會使指數(shù)計算耗費較長時間,,因此設(shè)計中通過查表法將計算后的指數(shù)運算結(jié)果存儲至BRAM當(dāng)中,,然后根據(jù)輸入圖像數(shù)據(jù)的特征值作為地址來查找所對應(yīng)的指數(shù)結(jié)果,。當(dāng)一幀輸入圖像數(shù)據(jù)經(jīng)過CNN網(wǎng)絡(luò)模塊計算識別后,將結(jié)果更新至顯示模塊的BRAM當(dāng)中,,并且也會通過藍牙控制模塊同時將結(jié)果發(fā)送至上位機進行識別結(jié)果顯示,。
3 系統(tǒng)測試與分析
系統(tǒng)設(shè)計中的具體硬件使用Xilinx公司的ZYNQ-7000 xc7z010clg400-1芯片作為試驗平臺,,該芯片內(nèi)部擁有28k個邏輯單元,,2.1 Mb的嵌入式存儲器,80個嵌入式乘法器,,片內(nèi)資源較為豐富,,基本能夠滿足系統(tǒng)框架中的CNN模型硬件設(shè)計所需要的資源。CPU軟件訓(xùn)練平臺使用Core i7-8700k處理器,,主頻為3.4 GHz,。使用Vivado 2018.1開發(fā)工具完成整個硬件平臺工程。
測試過程中,,分別使用對應(yīng)MNIST和Fashion MNIST數(shù)據(jù)集的測試樣本進行實際測試,,通過攝像頭對200個20種類別的圖像數(shù)據(jù)進行實時視頻采集,、顯示及識別,部分測試結(jié)果如圖5所示,。
可以看出整個系統(tǒng)框架設(shè)計能夠完成對圖像數(shù)據(jù)的實時采集和顯示,,同時可根據(jù)實際需要替換不同的CNN網(wǎng)絡(luò)模型且均能夠?qū)崿F(xiàn)對結(jié)果的正確識別,,從而實現(xiàn)了多場景下的需求并增加了一定的靈活性。
系統(tǒng)框架設(shè)計中主要的硬件資源消耗及功耗估算如表1所示,。
系統(tǒng)設(shè)計因為中使用了大量的BRAM和FIFO進行權(quán)值數(shù)據(jù)與圖像數(shù)據(jù)的存儲,使得BRAM的硬件邏輯資源消耗較多,,但可以看出實驗所用使用的ZYNQ器件基本能夠滿足本文所設(shè)計的系統(tǒng)框架,。
4 結(jié)論
本文設(shè)計了一種基于深度學(xué)習(xí)的實時識別硬件系統(tǒng)框架,,采用軟硬件協(xié)同的方式,利用ZYNQ中的ARM部分實現(xiàn)了對圖像數(shù)據(jù)的采集及顯示,,通過FPGA部分實現(xiàn)了CNN網(wǎng)絡(luò)模型的硬件設(shè)計,并對整個卷積層進行了并行運算優(yōu)化,,使得整個系統(tǒng)能夠在單時鐘周期內(nèi)同時處理所有卷積層中的528次卷積運算,,提升了運算速度。實驗結(jié)果表明,,該系統(tǒng)框架能夠根據(jù)不同的場景應(yīng)用需求選擇適合的CNN網(wǎng)絡(luò)模型進行圖像實時采集、顯示與準(zhǔn)確識別,,結(jié)合ZYNQ器件中高度模塊化設(shè)計使得整個系統(tǒng)框架具有移植性高的特性,,且系統(tǒng)整體運行時識別速度快,、所需功耗低。
參考文獻
[1] Pei Jifang,Huang Yulin,,Huo Weibo,,et al.SAR automatic target recognition based on multiview deep learning framework[J].IEEE Transactions on Geoscience and Remote Sensing,,2018,56(4):2196-2210.
[2] LECUN Y,,BENGIO Y,,HINTON G.Deep learning[J].Nature,,2015,521(7553):436-444.
[3] 朱虎明,,李佩焦,,李成,,等.深度神經(jīng)網(wǎng)絡(luò)并行化研究綜述[J].計算機學(xué)報,2018,,41(2):1-23.
[4] 王海,,蔡英鳳,,賈允毅,等.基于深度卷積神經(jīng)網(wǎng)絡(luò)的場景自適應(yīng)道路分割算法[J].電子與信息學(xué)報,,2017,,39(2):263-269.
[5] 蔣兆軍,,成孝剛,彭雅琴,,等.基于深度學(xué)習(xí)的無人機識別算法研究[J].電子技術(shù)應(yīng)用,,2017,,43(7):84-87.
[6] 許少尉,陳思宇.基于深度學(xué)習(xí)的圖像分類方法[J].電子技術(shù)應(yīng)用,,2018,44(6):116-119.
[7] 胡振,傅昆,,張長水.基于深度學(xué)習(xí)的作曲家分類問題[J].計算機研究與發(fā)展,2014,,51(9):1945-1954.
[8] 張榜,,來金梅.一種基于FPGA的卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計與實現(xiàn)[J].復(fù)旦學(xué)報(自然科學(xué)版),2018,,57(2):236-242.
[9] 周飛燕,,金林鵬,董軍.卷積神經(jīng)網(wǎng)絡(luò)研究綜述[J].計算機學(xué)報,,2017,,40(6):1229-1251.
作者信息:
王 昆,周 驊
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,,貴州 貴陽550025)