《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于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網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美午夜电影在线| 国产亚洲激情视频在线| 午夜亚洲性色视频| 日韩视频在线免费| 久久精品女人的天堂av| 亚洲嫩草精品久久| 一区二区三区久久久| 亚洲精品1234| 91久久午夜| 亚洲高清色综合| 激情小说另类小说亚洲欧美| 国产亚洲欧美一区| 国产亚洲一区在线播放| 国产日本欧美一区二区| 国产精品视频yy9099| 国产精品成人一区二区| 欧美午夜精品理论片a级大开眼界| 欧美精品一区在线播放| 欧美高清视频一二三区| 欧美大片第1页| 欧美顶级艳妇交换群宴| 欧美国产一区二区在线观看 | 亚洲成色999久久网站| 午夜精品影院| 欧美一区二区视频在线| 欧美中文字幕在线观看| 久久精品日韩| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲午夜免费视频| 亚洲一区中文字幕在线观看| 亚洲一区中文| 久久福利资源站| 亚洲激情第一页| 妖精视频成人观看www| 一区二区毛片| 亚洲综合成人在线| 久久精品视频免费| 毛片一区二区三区| 欧美日韩久久精品| 国产精品免费在线| 国内免费精品永久在线视频| 亚洲丶国产丶欧美一区二区三区 | 亚洲精品美女在线| 亚洲视频中文| 久久不射2019中文字幕| 亚洲日本成人在线观看| 宅男精品导航| 久久国产精品网站| 欧美+日本+国产+在线a∨观看| 欧美人与禽性xxxxx杂性| 国产精品久久久99| 国产一区日韩欧美| 亚洲精品视频在线观看免费| 亚洲小视频在线| 久久精品国产亚洲一区二区三区 | 国产欧美日韩一区二区三区在线| 国内精品久久久久影院 日本资源| 在线观看亚洲精品视频| 日韩视频一区二区在线观看 | 欧美成人亚洲成人日韩成人| 欧美三级午夜理伦三级中文幕| 国产模特精品视频久久久久| 亚洲成人中文| 亚洲午夜激情网页| 亚洲国产精品一区二区尤物区 | 国语自产精品视频在线看抢先版结局| 在线免费高清一区二区三区| 亚洲乱码国产乱码精品精天堂| 午夜精品久久久久| 日韩一级在线观看| 久久精品一区二区国产| 欧美日韩喷水| 国产一区二区三区丝袜| 亚洲精品孕妇| 久久国产天堂福利天堂| 亚洲午夜一区二区三区| 久久综合九色99| 国产精品系列在线| 亚洲精品久久久久久久久久久久久 | 久久成人免费日本黄色| 正在播放日韩| 美女91精品| 国产精品影片在线观看| 亚洲国产欧洲综合997久久| 午夜精品久久久久久久男人的天堂| 日韩午夜av| 久久综合九九| 国产视频不卡| 亚洲午夜影视影院在线观看| 亚洲精品色图| 久久久夜精品| 国产乱理伦片在线观看夜一区| 亚洲精品国产品国语在线app | 蘑菇福利视频一区播放| 国产情人综合久久777777| 亚洲麻豆国产自偷在线| 亚洲二区在线观看| 欧美一区二区三区四区在线| 欧美日韩视频在线一区二区 | 欧美一区二区三区四区视频| 亚洲一区不卡| 欧美日韩p片| 亚洲国产成人在线播放| 欧美资源在线观看| 欧美在线一二三| 国产精品久久久久久久久搜平片| 亚洲精品日韩综合观看成人91| 亚洲国产精品成人一区二区| 久久国产精品久久久久久久久久| 国产精品久久中文| 一区二区三区福利| 中文国产成人精品| 欧美日韩精品免费观看视频完整| 亚洲福利国产| 亚洲激情影视| 欧美高清视频一区二区| 在线播放亚洲一区| 亚洲国产精品精华液网站| 久久久999精品| 国产午夜精品久久| 午夜精品久久久久久久蜜桃app| 午夜精品视频| 国产美女精品视频免费观看| 亚洲欧美综合精品久久成人| 午夜免费在线观看精品视频| 国产精品高潮呻吟| 亚洲影院色在线观看免费| 亚洲欧美日韩精品久久亚洲区| 欧美性片在线观看| 亚洲午夜未删减在线观看| 午夜精品福利视频| 国产精品欧美激情| 亚洲欧美视频| 久久久精品国产99久久精品芒果| 国产女人水真多18毛片18精品视频| 亚洲一区二区在线播放| 欧美一区二区三区视频| 国产一区二区三区四区三区四| 欧美一区日韩一区| 久久夜色精品国产欧美乱| 伊人蜜桃色噜噜激情综合| 亚洲经典自拍| 欧美国产一区二区| 一本色道久久综合狠狠躁的推荐| 亚洲一区中文| 国产日本欧美一区二区| 久久精品人人做人人综合| 女女同性精品视频| 亚洲美女一区| 午夜精品一区二区三区四区 | 欧美日韩国产色站一区二区三区| 亚洲理论在线| 欧美一区成人| 激情欧美一区二区三区| 亚洲免费av片| 国产精品第2页| 欧美一级网站| 欧美成人久久| 亚洲视频电影图片偷拍一区| 久久国产精品99久久久久久老狼 | 亚洲高清资源综合久久精品| 99视频精品在线| 国产精品视频福利| 亚洲第一精品电影| 欧美日韩国产成人在线观看| 亚洲天堂av综合网| 久久视频免费观看| 亚洲精品黄色| 久久久久久久波多野高潮日日| 亚洲黄色av| 欧美一区二区久久久| 在线欧美视频| 亚洲欧美日韩在线| 精品动漫一区二区| 亚洲一区二区三区免费观看 | 一本久道久久综合中文字幕| 性做久久久久久| 亚洲高清在线视频| 西西裸体人体做爰大胆久久久| 精品成人国产| 亚洲女同同性videoxma| 激情成人av在线| 亚洲视频视频在线| 国模私拍一区二区三区| 一本久道久久综合中文字幕| 国产日韩在线播放| 一本色道久久综合精品竹菊 | 欧美呦呦网站| 欧美日韩性生活视频| 久久不见久久见免费视频1| 欧美日韩亚洲系列| 亚洲国产电影| 国产精品一区二区在线观看| 亚洲精品综合| 国产一区二区三区久久久久久久久| 亚洲视频你懂的| 亚洲国产精品久久久久秋霞不卡 | 国产精品高清免费在线观看| 久久精品一二三| 国产精品视频网站|