《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 深度學習中的卷積神經網絡系統設計及硬件實現
深度學習中的卷積神經網絡系統設計及硬件實現
2018年電子技術應用第5期
王 昆,周 驊
貴州大學 大數據與信息工程學院,貴州 貴陽550025
摘要: 針對目前深度學習中的卷積神經網絡(CNN)在CPU平臺下訓練速度慢、耗時長的問題,采用現場可編程門陣列(FPGA)硬件平臺設計并實現了一種深度卷積神經網絡系統。該系統采用修正線性單元(ReLU)作為特征輸出的激活函數并使用Softmax函數作為輸出分類器。利用流水線技術并針對每一層的特征運算進行了并行處理,從而能夠在1個系統時鐘周期內完成整個CNN中的295次卷積運算。系統最后采用MNIST數據集作為實驗樣本,實驗結果表明,在50 MHz的工作頻率下,FPGA的訓練用時相較于通用CPU的訓練用時提升了8.7倍,經過2 000次迭代后系統識別的準確率為92.42%。
中圖分類號: TP391
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.174161
中文引用格式: 王昆,周驊. 深度學習中的卷積神經網絡系統設計及硬件實現[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.
System design and hardware realization of convolution neural network system in deep learning
Wang Kun,Zhou Hua
College of Big Data and Information Engineering,Guizhou University,Guiyang 550025,China
Abstract: In this paper, a deep convolution neural network system is designed and implemented by FPGA hardware platform for the problem that the convolution neural network(CNN) in deep learning is slow and time consuming under the CPU platform. The system uses the rectified linear unit(ReLU) as the characteristic output activation function and uses the Softmax function as the output classifier. Assembly line and the parallelism are used for the feature operation of each layer, so that 295 convolution operations in the entire CNN can be completed in one system clock cycle. The system finally uses the MNIST data set as the experimental, and experimental results show that the training time of FPGA work on 50 MHz is 8.7 times higher than that of general-purpose CPU, and the accuracy rate of system identification after 2 000 iterations is 92.42%.
Key words : deep learning;CNN;FPGA;parallel processing

0 引言

    隨著深度學習的廣泛應用與發展[1-2],卷積神經網絡(Convolutional Neural Network,CNN)被使用的場景越來越多,特別是在圖像識別場景中獲得了突破性的發展。CNN擁有多層的神經網絡結構,其自身擁有較強的容錯、學習和并行處理能力[3],是一種擁有多層感知器,局部連接和權值共享的網絡結構[4],從而降低了網絡模型的復雜性和網絡連接權值的個數,因此近幾年來CNN在視頻分析[5-6]、人臉識別[7-8]等領域得到了廣泛的應用。

    雖然CNN的應用廣泛,但其模型參數的訓練往往需要大量的用時,特別是當數據量很大的時候。在現階段實現深度卷積神經網絡主要是使用消費級的通用處理器CPU來實現的[9],但是在CNN的模型結構中,其每一層內的卷積運算都只與當前層的特征運算核相關,與其他層是獨立且不相關的,所以CNN是一種典型的并行運算結構。而現場可編程門陣列(Field-Programmable Gate Array,FPGA)作為一種高度密集型計算加速器件,可通過硬件描述語言完成算法實現,從而利用FPGA的硬件結構特性實現并行運算的加速。

    本文首先對深度學習中的CNN進行了介紹,然后設計一種基于FPGA的CNN系統,通過流水線和并行處理減少了訓練參數所需用時,提升了系統的計算性能。為了驗證設計的功能性,最后采用MINST數據集作為系統驗證。

1 CNN

1.1 CNN模型

    CNN是基于神經認知機模型(Neocognitron Model)的一種深度神經網絡結構,是當前應用最為廣泛的模型結構。CNN在確定模型參數時首先利用前向傳播來獲取和輸出目標的誤差,然后再通過高效的反向傳播訓練算法來實現參數的確定。一般經典的CNN模型是由輸入層、卷積層、池化層、全連接層和分類層組合而構成的,在CNN中卷積層和不同的卷積核進行局部連接,從而產生輸入數據的多個特征輸出,將輸出經過池化層降維后通過全連接層和分類層獲取與輸出目標的誤差,再利用反向傳播算法反復地更新CNN中相鄰層神經元之間的連接權值,縮小與輸出目標的誤差,最終完成整個模型參數的訓練。圖1是一種典型的CNN網絡結構,數據使用不同權重的卷積核Kernel經過卷積運算,將運算的結果經過激活函數ReLU后加上偏置Bias得到多個特征輸出,然后經過池化進行層降維處理后再與全連接層進行全連接,最后經過分類器Softmax函數進行輸出分類。

qrs4-t1.gif

    得到分類結果后,經過與輸出目標進行比較得出誤差,最后使用反向傳播算法得出每一層的殘差,利用殘差計算出新的權值并更新原有的權值。以上整個過程可由式(1)和式(2)表示:

qrs4-gs1-2.gif

1.2 本文CNN模型

    本文所設計的CNN網絡模型結構如圖2所示,該結構有1個輸入層、4個卷積層、2個池化層、1個全連接層、1個采用Softmax函數的分類層和1個輸出層,共8層。

qrs4-t2.gif

    第1層和第8層為輸入層和輸出層。輸入層完成測試圖像數據的輸入獲取,因為采用MNIST數據集,所以輸入數據為784個。輸出層與前一層連接的權重個數為20×10=200,輸出結果為10種。

    第2、3、5、7層均為為卷積層。輸出特征圖的個數分別為5、5、10、20,每層卷積核大小分別為5×5,5×5,5×5,3×3,卷積核移動步長均為1,系統設計采用ReLU作為激活函數,每一層的參數為:

    第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個參數。

    第4、6層為池化層。在池化層也采用卷積運算,卷積核大小為2×2,使用平均池化方法。

2 CNN系統硬件設計

    整個系統硬件根據CNN網絡結構進行設計,利用FPGA硬件電路并行特性將每一層設計為單獨的一個模塊,最后的分類層利用本文所設計的Softmax分類器來完成輸入數據的分類結果,再經過反向傳播算法計算出所需要更新的權值。整體系統設計結構如圖3所示。

qrs4-t3.gif

    系統首先由控制器初始化每一層卷積核Kernel的權重數值索引地址,根據索引地址從RAM模塊當中加載權重數值和偏置值。在前向傳播時將輸入數據通過輸入信號進入數據緩沖區,然后根據每層的輸出特征圖的個數與卷積核完成卷積運算,將運算的結果經過激活函數ReLU和偏置完成當前層的最終輸出特征圖并輸入下一層當中。當經過池化層時進行下采樣運算,從而降低特征圖的維數。最后Softmax分類器根據輸入的數據通過查找ROM中與之對應的數值在經過概率轉換后完成最終的輸出結果。在反向傳播時,根據ROM當中的標簽與輸出結果進行比較得出每一層的殘差保存至RAM當中,計算完成后根據所設定的學習率來完成所有卷積層中卷積核的權值和偏置值的更新,并將更新后的權值由控制器保存到相應的存儲位置,直至所有訓練數據輸入完成。

2.1 卷積層硬件設計

    在圖3的卷積層中,首先將輸入數據進行緩存處理。因為要進行卷積運算,所以必須將輸入的數據根據每個卷積層的卷積核Kernel的大小來進行與之相對應的大小調整。在系統設計中通過使用移位寄存器(Shift Register)來實現對數據的處理,移位寄存器能夠將數據在進行緩存的同時進行移位處理,該器件能夠根據所設定的深度來對數據進行轉換處理,當需要數據進行輸出的時候只需增加抽頭輸出信號即可將數據進行輸出,利用移位寄存器就能夠在1個時鐘周期完成1次卷積運算。在計算出當前輸入數據的特征輸出圖后還需經過激活函數,系統設計使用硬件容易實現的ReLU函數作為激活函數,該函數在輸入值大于0時輸出原輸入值,小于零時輸出0,因此使用比較器即可實現。其卷積運算具體實現過程如圖4所示。

qrs4-t4.gif

    圖4是卷積核大小為3×3時的運算過程,Shift_in是數據輸入,wi為該卷積核權重值,mi為輸出數據緩存寄存器。

2.2 卷積層計算硬件優化

    由于FPGA硬件電路的并行特性,其當中每個模塊的計算是相互獨立互不相關的,并且CNN網絡結構中每層的計算也是相互獨立的,充分體現了整個結構的并行性,特別是卷積運算。因此系統設計中采用了并行設計的方法,設計根據卷積層上一層的輸出特征圖的個數和當前卷積層需要輸出特征圖的個數分別為每個特征圖設計了相應的卷積核組,利用流水線技術和并行運算同時對每個卷積核組完成與之對應的特征抽取,因為系統設計中對池化層的下采樣也采用了卷積運算來完成,所以對于本系統則能夠在1個時鐘周期內完成295次卷積運算,相較于通用CPU運算,本系統設計運算效率得到了顯著提升。系統卷積運算優化設計具體結構如圖5所示。

qrs4-t5.gif

    圖5中xi為特征圖輸入,wij分別是每個卷積核組內不同卷積核的權值,ki為不同的卷積核組,ci為計算結果輸出。

2.3 Softmax分類器

    在經過多層的卷積層和池化層的運算后最終得到當前輸入數據的特征值,將特征值與最后的輸出層進行全連接得出最終的分類結果。系統設計中的分類器使用Softmax函數來完成最后結果的輸出,但Softmax函數是將所有輸入數據通過e指數運算進而得出輸出概率分布,且概率分布的數值范圍是0~1之間的浮點數,而FPGA并不適合進行浮點數運算,并且完成e指數運算所消耗時間較長。因此系統設計中采用查表法來完成e指數運算,通過事先將計算后的指數運算結果存儲至ROM當中,然后根據輸入的特征值作為地址來查找所對應的指數結果。經過軟件平臺測試,特征值經過放大后的取值范圍是-70~80,范圍較大,為了減少ROM的存儲消耗,系統設計中將處理后的特征值計算的數值結果縮小至-30~40之間并進行取整處理,雖然該做法在一定程度上增強或減弱了對應特征值的比重,但降低了查表所需存儲數值ROM的存儲空間,減少了資源的消耗。Softmax分類器的設計電路結構圖如圖6所示。

qrs4-t6.gif

    設計中首先將特征值輸入經過查表得出對應指數運算的結果,同時將結果進行累加運算,最后相除從而計算出分類的結果。

3 系統仿真與分析

    系統設計中的硬件使用Altera公司的Cyclone IV EP4CE115芯片作為試驗平臺,該芯片內部擁有114 480個邏輯單元,6.3 MB的嵌入式存儲器,266個嵌入式18×18乘法器,片內資源豐富,能夠滿足CNN系統硬件設計中所需要的資源,CPU測試平臺使用Core i7四核處理器,主頻為3.4 GHz。

    仿真過程中,整個CNN的學習率設置為0.04,每次輸入批次為30張,迭代次數為2 000次,實驗樣本訓練數據為MNIST數據集28×28像素的灰度圖片60 000張,圖像數值范圍為0~255,測試數據為10 000張,使用均方誤差函數作為損失函數來評價CNN整體系統的性能,最終實驗運行結果如圖7所示。

qrs4-t7.gif

    可以看出在硬件平臺運行和軟件平臺運行均能夠實現對結果的正確分類,在訓練的最開始由于權重值是隨機初始化的,因此誤差較大,隨著不斷地迭代更新權值,誤差逐漸降低,最后其對圖像識別準確率分別為92.42%和96.21%,識別的準確率基本一致。硬件平臺的準確度不如軟件平臺高,是由于在分類器中對Softmax函數的輸入取值做了一定的限定,并在整個訓練過程中進行了數據的放大處理和取整,損失了一定的精度。硬件平臺的訓練時間和軟件平臺訓練所需的時間消耗如表1所示。

qrs4-b1.gif

    硬件平臺整個訓練所用時間相較于軟件平臺運算的時間提升了8.7倍,系統設計主要的硬件資源消耗如表2所示。

qrs4-b2.gif

    系統設計因為中使用了大量的移位寄存器和緩存寄存器來存儲特征值的輸入值,使得寄存器的使用較多,但可以看出實驗所用使用的FPGA能夠滿足本文所設計的CNN網絡結構。

4 結論

    本文設計了一種深度學習中的CNN硬件系統,通過FPGA實現了整個CNN網絡結構,充分利用了FPGA的硬件電路并行特性和流水線技術,對整個卷積層進行了并行運算優化,使得整個系統能夠在1個時鐘周期內同時處理所有卷積層中295次卷積運算,從而使得整個網絡訓練用時相較于通用CPU平臺提升了8.7倍,減少了網絡訓練的所需用時,并且設計了一種通過查表法實現的Softmax分類器來完成對輸出結果的分類。實驗結果表明,該系統設計能夠對MNIST測試數據集完成識別分類且識別準確率經過2 000次迭代后為92.42%,結果基本與相同訓練次數下的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].計算機工程,2017,43(1):109-114,119.

[4] 方睿,劉加賀,薛志輝,等.卷積神經網絡的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] 李倩玉,蔣建國,齊美彬.基于改進深層網絡的人臉識別算法[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.



作者信息:

王  昆,周  驊

(貴州大學 大數據與信息工程學院,貴州 貴陽550025)

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 小明爱看看永久成人免费平台 | 一级黄网站 | 日韩免费一区二区三区在线 | 特级夫妻大片免费在线播放 | 欧美日韩免费一区二区在线观看 | 午夜欧美成人久久久久久 | 欧美性v视频播放 | 欧美成人aaa大片 | 日韩字幕一中文在线综合 | 不卡国产视频 | 精品免费在线 | 一区二区三区四区视频在线观看 | 国产成人精彩在线视频50 | 欧美 日韩 国产 在线 | 免费观看黄色毛片 | 丝袜美腿极品老师系列集合 | 成人av手机在线观看 | 天天干天天做 | 毛片成人永久免费视频 | 最近中文字幕在线播放 | 黄网站色视频免费观看 | 日韩天天操 | 亚洲欧洲在线视频 | 欧美一级特黄aa大片视频 | 最近中文字幕经典版在线 | 日韩免费片 | 欧美日韩性视频一区二区三区 | 日韩激情淫片免费看 | 欧美成人私人视频88在线观看 | 国产99视频在线观看 | 免费午夜网站 | 日韩精品视频一区二区三区 | 国产免费播放一区二区三区 | 欧洲色吧| 亚洲综合激情六月婷婷在线观看 | 成人a毛片一级 | 丝袜制服国产 | 欧美精品国产日韩综合在线 | 亚洲国产成人久久午夜 | 舔射插啊~在线观看女女 | 亚洲国产成人久久77 |