《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA加速的卷積神經網絡識別系統
基于FPGA加速的卷積神經網絡識別系統
2020年電子技術應用第2期
林志文,林志賢,郭太良,林珊玲
福州大學 物理與信息工程學院,福建 福州350116
摘要: 針對卷積神經網絡(CNN)在通用CPU以及GPU平臺上推斷速度慢、功耗大的問題,采用FPGA平臺設計了并行化的卷積神經網絡推斷系統。通過運算資源重用、并行處理數據和流水線設計,并利用全連接層的稀疏性設計稀疏矩陣乘法器,大大提高運算速度,減少資源的使用。系統測試使用ORL人臉數據庫,實驗結果表明,在100 MHz工作頻率下,模型推斷性能分別是CPU的10.24倍,是GPU的3.08倍,是基準版本的1.56倍,而功率還不到2 W。最終在模型壓縮了4倍的情況下,系統識別準確率為95%。
中圖分類號: TN409;TP391
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.191000
中文引用格式: 林志文,林志賢,郭太良,等. 基于FPGA加速的卷積神經網絡識別系統[J].電子技術應用,2020,46(2):24-27.
英文引用格式: Lin Zhiwen,Lin Zhixian,Guo Tailiang,et al. Recognition system of convolution neural network based on FPGA acceleration[J].Application of Electronic Technique,2020,46(2):24-27.
Recognition system of convolution neural network based on FPGA acceleration
Lin Zhiwen,Lin Zhixian,Guo Tailiang,Lin Shanling
School of Physics and Information Engineering,Fuzhou University,Fuzhou 350116,China
Abstract: A convolutional neural network(CNN) inference system is designed based on the FPGA platform for the problem that the convolutional neural network infers at low speed and it is power consuming on the general CPU and GPU platforms. By computing resource reusing, parallel processing of data and pipeline design, it greatly improved the computing speed, and reduced the use of computing and storage resources by model compression and sparse matrix multipliers using the sparseness of the fully connected layer. The system uses the ORL face database. The experimental results show that the model inference performance is 10.24 times of the CPU, 3.08 times of the GPU and 1.56 times of the benchmark version at the working frequency of 100 MHz, and the power is less than 2 W. When the model is compressed by 4 times, the system identification accuracy is 95%.
Key words : convolutional neural network(CNN);FPGA;face recognition;sparsity

0 引言

    隨著近些年深度學習的迅速發展和廣泛的應用,卷積神經網絡(CNN)[1]已經成為檢測和識別領域最好的方法,它可以自動地從數據集中學習提取特征,而且網絡層數越多,提取的特征越有全局性。通過局部連接和權值共享可以提高模型的泛化能力,大幅度提高了識別分類的精度。并且隨著物聯網的發展,部署嵌入式端的卷積神經網絡要處理大量的數據,這將會消耗大量的資源與能量,而嵌入式設備通常用電池維持工作,頻繁更換電池將會提高成本,因此對于推斷階段的運算加速以及低功耗設計有重要實際意義。

    CNN的不同卷積核的運算之間是相互獨立的,而且全連接層的矩陣乘法不同行之間也是獨立的,因此神經網絡的推斷在CPU平臺上串行計算的方式是非常低效的。GPU可以通過流處理器實現一定的并行性,但是缺乏對于網絡并行結構的深度探索,不是最優的方案。而基于FPGA的神經網絡可以更好地實現網絡并行計算與資源復用,因此本文采用FPGA加速卷積神經網絡運算。

    此前已有一些基于FPGA的卷積神經網絡加速器,WANG D設計了流水線卷積計算內核[2];宋宇鯤等人針對激活函數進行設計優化[3];王昆等人通過ARM+FPGA軟硬件協同設計的異構系統加速神經網絡[4];張榜通過雙緩沖技術與流水線技術對卷積優化[5]。本文針對卷積神經網絡的并行性以及數據與權值的稀疏性,對卷積層和全連接層進行優化,根據卷積核的獨立性設計單指令多數據(Single Instruction Multiple Data,SIMD)的卷積與流水線結構,提高計算速度與資源效率,利用全連接層數據極大的稀疏性,設計稀疏矩陣乘法器減少計算冗余,然后對模型參數定點優化,最后將實驗結果與CPU、GPU平臺以及基準設計[5]進行比較分析。

1 CNN模型與網絡參數

1.1 CNN模型

    CNN是基于多層感知機的神經網絡結構,典型的CNN模型由輸入層、卷積層、全連接層、輸出層和分類層組成,如圖1所示。由輸入層讀取圖像數據,由卷積層通過多個卷積核分別和輸入圖卷積生成多個特征圖,再由池化層降維提取特征圖信息。經過幾個卷積層后,再將特征圖展開成向量,輸入給全連接層,經過全連接層與輸出層的矩陣運算得到輸出,然后再通過Softmax分類層得到分類概率輸出。

rgzn1-t1.gif

    本文CNN模型結構如圖2所示,該結構包含兩個卷積層、兩個池化層、一個全連接層,一個輸出層、一個使用Softmax的分類層,其中激活函數不算作一層,共7層的網絡結構。其中兩個卷積層的輸出特征圖個數分別為16、32,卷積核大小為3×3,移動步長為1,輸出尺寸與輸入相同,系統使用線性修正單元(Rectified Linear Units,ReLU)作為激活函數。全連接層和輸出層分別有1 024和40個神經元。由圖2計算得權值與偏置的數量,本文模型共4 765 416個參數,其中全連接層占了99%的參數。

rgzn1-t2.gif

    由于分類層是用輸出層的值通過Softmax函數求得每個分類的概率,而Softmax函數的運算消耗大量的運算資源,而且對結果沒有影響,這是不必要的運算開銷,因此用輸出值來判別即可。

1.2 CNN網絡參數

    根據所選的網絡結構,本文使用TensorFlow框架搭建模型,學習率設置為0.000 1,使用自適應學習率優化算法Adam加速模型收斂,訓練選擇ReLU激活函數增加模型參數的稀疏性,使用交叉熵作為損失函數,加入L2正則化項減小過擬合。訓練了50輪后,模型在ORL人臉數據庫的正確率達到95%,滿足實際應用需要。

    神經網絡模型推斷降低一定的精度不會影響準確率,而且在FPGA上定點數比起浮點數的計算更有效率,所以將模型參數由32 bit浮點數量化為16 bit定點數,由深度壓縮[6]中的方法,將16 bit的定點數權值再用8 bit的索引表示,索引表的值共28=256個,然后通過反向傳播算法[7]更新索引表后,將索引和索引表存在外部存儲器中。

2 CNN系統硬件設計

    本系統針對CNN模型結構以及數據與參數的特點進行設計和優化,卷積同一層內不同特征圖的計算有天然的并行性,不同層之間因為不是獨立的,無法同時進行計算,而全連接層和輸出層都可以使用卷積層的PE來完成乘法運算。系統設計如圖3所示。

rgzn1-t3.gif

    首先通過控制器從外部存儲器DDR3中讀取圖像數據到輸入緩沖區,輸入緩沖區通過移位寄存器設計,通過固定窗口讀取數據。讀取權值索引到權值緩沖區,然后由索引讀取權值輸入給卷積的處理單元(Processing Element,PE),經過每層的卷積后加上偏置,用ReLU函數激活,再經過池化操作降維,然后特征圖經過非零檢測模塊統計稀疏性,讀取對應的非零神經元的權值,然后由稀疏矩陣乘法器(Sparse Matrix-Vector Multiplication,SPMV)完成矩陣乘法,加上偏置后輸出給輸出層。輸出層復用卷積層的PE完成矩陣乘法,然后遍歷輸出值求出最大值對應的神經元序號即為預測值。

2.1 卷積層硬件設計優化

    如圖4所示,卷積層采用移位寄存器作為輸入緩存,本文卷積層的卷積核尺寸為3×3,每次讀取9個權值,使用9個定點小數乘法器,然后使用4層加法樹結構將結果與偏置相加。然后通過ReLU函數激活,該函數表達式為y=max(0,x),因此只要判斷輸入數據的符號位即可,使用一個數據選擇器即可完成運算,消耗一個時鐘。第一層卷積的不同卷積核是獨立計算的,所以使用16個PE同時計算,然后通過流水線技術,可以在一個時鐘周期內產生16個卷積輸出,輸出數據的延遲包括讀取數據延遲和加法樹的延遲。

rgzn1-t4.gif

2.2 池化層設計優化

    池化層用于對輸入特征圖降低維度和提取信息,池化分為平均值池化和最大值池化,本文使用最大值池化,池化尺寸為2×2,步長為2。池化層使用比較器得到最大值,經過兩次比較得到結果。經研究發現,池化操作不影響卷積操作,因此設計了池化與卷積的并行計算,如圖5所示。并行操作節省了池化運算的時間,加快了網絡的計算速度。

rgzn1-t5.gif

2.3 全連接層與輸出層的設計與優化

2.3.1 全連接層

    全連接層將所有輸入特征圖和輸出向量相連接,每個神經元的值由卷積層特征圖加權求和得到。本文多次實驗發現全連接層有大量為零的神經元,如圖6所示。因此可以利用神經元的稀疏性減少乘法的操作,設計如圖7所示稀疏矩陣乘法器。首先通過非零元檢測模塊,得到不為零的神經元,然后復用卷積層的PE來計算非零神經元與權值的乘加操作。這樣可以重復利用運算資源,并大大降低運算的時間復雜度,提高運算速度。

rgzn1-t6.gif

rgzn1-t7.gif

2.3.2 輸出層

    輸出層對全連接層神經元做矩陣運算,然后通過Softmax層得到所有分類的概率。但是由于Softmax函數含有指數運算,需要消耗大量運算資源和時間,而且對結果沒有影響,因此將Softmax層移除,直接使用輸出層值的大小來分類。本文多次實驗發現輸出層沒有稀疏性,大部分神經元不為零,輸出層的計算復用SPMV的第二個部分進行計算,由PE與串行加法器組成,分別計算輸出層的40個分類的值,40個運算單元共用一路數據輸入,采用滑動窗口讀取數據,多路PE同時計算,由串行加法器輸出結果。最后遍歷求得輸出值最大值,并輸出分類結果。

3 數據量化與模型壓縮

    本文模型使用了兩個卷積層、一個全連接層、一個輸出層的結構,使用參數量由前文所述有476萬參數,而全連接層又占了99%的參數,因此主要針對全連接層進行數據壓縮。對于所有層的參數進行數據量化,從原本模型64 bit浮點數量化為16 bit定點數,然后用8 bit的索引,共256個共享的權值,然后通過反向傳播算法[7]修正原始權值與共享權值的差值。壓縮率公式如下: 

    rgzn1-gs1.gif

其中,n為參數量,b為量化的比特數,k為b bit能表示的類數(256類)。式(1)代入數據求得壓縮率大約為4倍。

4 實驗結果

    系統設計使用Xilinx公司的ZYNQ-7000 xc7z020clg400-1芯片作為實驗平臺,該芯片內部有85 000個邏輯單元、4.9 MB的Block RAM、220個DSP48單元、1 GB片外DRAM,滿足本系統所需。CPU平臺使用Core i5 9400f,主頻為2.9 GHz,GPU平臺使用GTX 1060,GPU主頻為1.5 GHz,顯存帶寬為160 GB/s。將實驗結果與CPU、GPU平臺以及基準設計[5]對比,資源使用情況如表1所示,實驗結果如表2所示。

rgzn1-b1.gif

rgzn1-b2.gif

    本文硬件平臺的工作頻率為100 MHz,識別每張圖片時間為0.27 ms,功耗為1.95 W,性能達到了27.74 GOPS/s,分別是CPU、GPU平臺的10.24倍、3.08倍,以及基準設計的1.56倍,能效比優于CPU、GPU平臺以及基準設計[5]。在數據量化為16 bit定點數之后,識別率達到95%,沒有造成精度損失。

5 結論

    本文設計了一種基于FPGA的卷積神經網絡加速系統。首先使用ORL人臉數據庫,在卷積神經網絡模型LeNet-5上訓練,然后用短定點數對神經網絡進行量化,再使用索引與索引表的方式進一步壓縮模型的全連接層,最終壓縮率達到了4倍。同時,從并行結構設計、流水線技術、時序合并等方式增加系統并行性,通過對模型稀疏性的利用,極大地加速了模型運算。本文使用的CNN模型壓縮方法和利用稀疏性加速的方法理論上也適用于其他的硬件平臺,在嵌入式終端部署更具有優勢。在與CPU、GPU平臺以及相關文獻的設計的對比分析后,本文設計在性能和能耗比上都優于此前的方案。

參考文獻

[1] KRIZHEVSKY A,SUTSKEVER I,HINTON G.ImageNet classification with deep convolutional neural networks[C].NIPS. Curran Associates Inc.,2012.

[2] WANG D,XU K,JIANG D.PipeCNN:an OpenCL-based open-source FPGA accelerator for convolution neural networks[C].2017 International Conference on Field Programmable Technology(ICFPT).IEEE,2017.

[3] 宋宇鯤,高曉航,張多利,等.Sigmoid函數的分段非線性擬合法及其FPGA實現[J].電子技術應用,2017,43(8):49-51.

[4] 王昆,周驊.基于深度學習的實時識別硬件系統框架設計[J].電子技術應用,2018,44(10):11-14.

[5] 張榜,來金梅.一種基于FPGA的卷積神經網絡加速器的設計與實現[J].復旦學報(自然科學版),2018,57(2):236-242.

[6] HAN S,MAO H,DALLY W J.Deep compression:compressing deep neural networks with pruning, trained quantization and Huffman coding[J].Fiber,2015,56(4):3-7.

[7] CUN LE Y,BOSER B,DENKER J S,et al.Handwritten digit recognition with a back-propagation network[J].Advances in Neural Information Processing Systems,1997,2(2):396-404.



作者信息:

林志文,林志賢,郭太良,林珊玲

(福州大學 物理與信息工程學院,福建 福州350116)

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 日本男人天堂 | 成人免费视频播放 | 毛片1毛片2毛片3毛片4 | 成人手机在线 | 毛片视频网站在线观看 | 国产精品免费视频能看 | 欧美啊v在线观看 | 国产亚洲三级 | 亚洲午夜精品一区二区 | 成人欧美一区二区三区在线 | 欧美性色xo在线 | 欧美 在线 成 人怡红院 | 亚洲欧美精品中文字幕 | 欧美精品色视频 | 欧美激情视频一区二区免费 | 91精品成人福利在线播放 | 成人精品视频在线观看播放 | 黄色视品 | 成人免费观看永久24小时 | 日韩不卡一区二区三区 | 人成18亚洲资源在线 | 国产成人久久777777 | 最新亚洲精品国自产在线 | 不卡午夜| 深夜福利视频网站 | 国产成人精品福利网站在线观看 | 美女视频黄免费 | 精品久久一区 | 91原创视频在线观看 | 国产成人免费片在线观看 | 久久国产精品歌舞团 | 国产日本欧美亚洲精品视 | 九草在线免费观看 | 国产一区亚洲 | 欧美精品久久 | 免费精品99久久国产综合精品 | 久久久久久久99久久久毒国产 | 久久精品视频免费看 | 性做久久久久久 | 外国成人网在线观看免费视频 | 欧美成人手机在线 |