《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于深度學(xué)習(xí)的實時識別硬件系統(tǒng)框架設(shè)計
基于深度學(xué)習(xí)的實時識別硬件系統(tǒng)框架設(shè)計
2018年電子技術(shù)應(yīng)用第10期
王 昆,周 驊
貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽550025
摘要: 設(shè)計了一種基于深度學(xué)習(xí)的實時識別硬件系統(tǒng)框架。該系統(tǒng)框架使用Keras完成卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練并提取出網(wǎng)絡(luò)的參數(shù),利用ZYNQ器件的FPGA+ARM軟硬件協(xié)同的方式,使用ARM完成對實時圖像數(shù)據(jù)的采集、預(yù)處理及顯示,通過FPGA實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的硬化并對圖像進行識別,再將識別結(jié)果發(fā)送至上位機進行實時顯示。系統(tǒng)框架采用MNIST和Fashion MNIST數(shù)據(jù)集作為網(wǎng)絡(luò)模型硬化試驗樣本,實驗結(jié)果表明,在一般場景下該系統(tǒng)框架能夠?qū)崟r、準確地完成圖像數(shù)據(jù)的獲取、顯示及識別,并且具有可移植性高、處理速度快、功耗低的特點。
中圖分類號: TP391
文獻標識碼: 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.
Design of real-time recognition hardware system framework based on deep learning
Wang Kun,Zhou Hua
College of Big Data and Information Engineering,Guizhou University,Guiyang 550025,China
Abstract: This paper designs a real-time recognition hardware system framework based on deep learning. The system framework uses Keras to complete the training of the convolutional neural network model and extracts the parameters of the network. Using the FPGA+ARM software and hardware coordination method of the ZYNQ device, ARM was used to complete the acquisition, preprocessing and display of real-time image data. Through the FPGA,the hardening of the convolutional neural network is performed and the image is recognized, and the recognition result is sent to the upper computer for real-time display. The system framework uses MNIST and Fashion MNIST data sets as network model hardening test samples. The experimental results show that the system framework can display and identify image data in real time and accurately under the general scene. And it has the characteristics of high portability, fast processing speed and low power consumption.
Key words : deep learning; CNN; ZYNQ; hardware-software-collaborative

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當中的模型結(jié)構(gòu),其內(nèi)部的每層卷積運算都只與當前卷積層的卷積核相關(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所示。

rgzd3-t1.gif

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當中,從而使得整個系統(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當中的存儲數(shù)據(jù)量進行圖像數(shù)據(jù)的高速讀取,將讀取到的圖像數(shù)據(jù)存儲至雙口FIFO當中進行存儲及讀取,從而實現(xiàn)將攝像頭采集的視頻圖像數(shù)據(jù)進行顯示。同時根據(jù)CNN網(wǎng)絡(luò)模型的幀控制信號及運算完成控制信號,將圖像數(shù)據(jù)讀取至CNN網(wǎng)絡(luò)模型當中進行運算識別,識別完成后也將運算結(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)成。

rgzd3-t2.gif

    其中第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)用的需要。

rgzd3-t3.gif

    由于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當中的圖像數(shù)據(jù)進行緩存處理并且能夠進行移位操作,使得圖像數(shù)據(jù)與對應(yīng)的卷積核進行對位卷積運算。由于設(shè)計中的輸出圖像與輸入圖像數(shù)據(jù)大小一致,因此還需要對輸入圖像數(shù)據(jù)進行填充操作以保證輸出后的特征圖大小保持不變,且通過移位寄存器使得系統(tǒng)能夠在運行時實現(xiàn)單周期的卷積運算,提升了系統(tǒng)的計算效率。當卷積運算完成后還需要經(jīng)過激活函數(shù),系統(tǒng)設(shè)計中使用了ReLU函數(shù)作為輸出激活函數(shù),該函數(shù)的輸出取決于輸入數(shù)值大小,當輸入數(shù)值大于零時輸出原輸入值,小于零時輸出零,因此硬件容易實現(xiàn),系統(tǒng)中使用比較器實現(xiàn)激活函數(shù),從而完成卷積層的計算,進而提取當前層的輸入圖像特征。

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所示。

rgzd3-t4.gif

    圖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當中,然后根據(jù)輸入圖像數(shù)據(jù)的特征值作為地址來查找所對應(yīng)的指數(shù)結(jié)果。當一幀輸入圖像數(shù)據(jù)經(jīng)過CNN網(wǎng)絡(luò)模塊計算識別后,將結(jié)果更新至顯示模塊的BRAM當中,并且也會通過藍牙控制模塊同時將結(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所示。

rgzd3-t5.gif

    可以看出整個系統(tǒng)框架設(shè)計能夠完成對圖像數(shù)據(jù)的實時采集和顯示,同時可根據(jù)實際需要替換不同的CNN網(wǎng)絡(luò)模型且均能夠?qū)崿F(xiàn)對結(jié)果的正確識別,從而實現(xiàn)了多場景下的需求并增加了一定的靈活性。

    系統(tǒng)框架設(shè)計中主要的硬件資源消耗及功耗估算如表1所示。

rgzd3-b1.gif

    系統(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ò)模型進行圖像實時采集、顯示與準確識別,結(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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。