999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的卷積神經網絡的實現*

2018-04-18 07:00:26李嘉輝蔡述庭陳學松熊曉明
自動化與信息工程 2018年1期

李嘉輝 蔡述庭 陳學松 熊曉明

?

基于FPGA的卷積神經網絡的實現*

李嘉輝 蔡述庭 陳學松 熊曉明

(廣東工業大學自動化學院)

現有基于CPU或GPU的卷積神經網絡實現方案,無法兼顧實時性、功耗以及便攜性的要求。基于FPGA強大的并行處理能力和超低功耗,在DE1-Soc開發板上采用Verilog HDL實現了使用MNIST數據集的阿拉伯數字手寫體識別卷積神經網絡。網絡的每一層采用流水線和時分復用方法;單個時鐘周期能完成72次乘累加操作,在100 MHz的工作頻率下,加速器峰值運算速度可達7.2 GMAC/s。與PC上運行的定點數版本的C語言程序相比,在相同錯誤率6.43%的情況下,速度是其5.2倍。

卷積神經網絡;FPGA;性能加速

0 引言

目前卷積神經網絡(Convolutional Neural Network,CNN)的實現方案有基于CPU、GPU和FPGA三大類。因CPU的結構特點以及通用計算機的架構限制,導致基于CPU的方案功耗、便攜性和實時性不可兼得。雖然GPU具有強大的浮點運算和并行處理能力,但基于GPU的方案,存在功耗過高,移動性能也不足的弱點[1-3]。因此,基于CPU或者GPU的實現方案在追求移動性能的場景下均不可取。FPGA具有強大的并行處理能力、靈活的可配置特性和超低功耗,可以考慮作為CNN的實現平臺。

目前,FPGA開發有2種途徑:一種是基于HDL的傳統途徑;另一種是使用高層次綜合工具,如OpenCL或者Xilinx的HLS[4],雖能加快FPGA開發流程,但資源消耗大、性能低,且開發人員不能對生成的電路進行精準干預。因此本文使用Verilog HDL語言,在DE1-Soc平臺下實現一個識別阿拉伯數字手寫體的CNN網絡。

1 網絡結構

本文實現的CNN網絡整體結構如圖1所示。其中卷積層C1和C3的卷積核都是5×5的矩陣組;下采樣層S4和輸出層之間的192×1矩陣,由下采樣層的12個4×4矩陣直接展開得到,再經過全連接層計算得到輸出層。

圖1 CNN網絡結構示意圖

2 CNN加速模塊的總體架構

2.1 總體架構

CNN加速系統分為2部分:一部分是在開發板上以Cortex-A9為中心的HPS,主要將樣本數據讀取并加載到DDR3 SDRAM的特定地址,然后告知CNN加速模塊數據已經準備完畢;另一部分是FPGA內部實現的CNN加速模塊,實現一個使用AXI-HP接口的AXI4總線主機,從DDR3 SDRAM中讀取樣本,計算并將結果寫回DDR3 SDRAM,再通過中斷通知HPS。另外,HPS通過AXI4-lite設置加速模塊的參數,如數據存儲地址。加速系統整體架構和CNN加速模塊結構圖如圖2、圖3所示。

2.2 CNN實現方案特點

本文CNN實現方案具有以下特點:

1)通過時分復用降低對FPGA上DSP等資源的需求;

2)具體到某一層的實現,采用流水線增加數據吞吐率;

3)使用定點數代替浮點數,進一步降低對BRAM和DSP的資源消耗;

4)對MNIST樣本預處理,避免因數據位數有限導致溢出。

圖2 加速系統整體架構

圖3 CNN加速模塊結構圖

3 CNN各層的實現

3.1 卷積層的實現

以第一卷積層為例闡述卷積層的實現方法。第一卷積層的運算過程如圖4所示,6個卷積核矩陣分別在輸入矩陣進行平移,兩者重疊部分相乘求和得到輸出矩陣中的一個元素。輸入輸出矩陣和卷積核的數據在存儲器中的組織情況如圖5所示。每次對kernels的讀操作,能夠讀取6個數據,故可同時計算6個輸出元素。為提高模塊處理能力,采取流水線結構,如圖6所示,其中表示當前樣本在一批樣本中的序號;和表示輸出元素的坐標;和表示卷積核與輸入矩陣重疊部分中當前處理的元素的坐標(相對于重疊部分)。上述變量用于多層循環的遍歷,并用于產生輸入地址(i_addr,k_addr)和輸出地址(o_addr)。i_addr和k_addr分別用于檢索輸入和卷積核數據。檢索得到的數據相乘,各自進行累加求和,再由模塊外部的sigmoid函數求值模塊得到輸出元素,寫入到o_addr指定地址中(圖6中,輸出地址傳輸路徑上省略了若干寄存器)。另外,圖6中存儲累加器輸出結果的寄存器初值是偏置值;粗線表示其上同時傳輸多個數據。

圖4 第一卷積層運算過程示意圖

圖5 第一卷積層的數據存儲方式

圖6 第一卷積層的流水線示意圖

3.2 下采樣層的實現

以第一下采樣層為例闡述下采樣層的實現方法。第一下采樣層的計算過程如圖7所示,一個樣本有6個24階輸入方陣,以二階方陣作為單元對輸入矩陣分塊并計算各方陣元素平均值,作為其輸出元素。

下采樣層的輸入輸出數據存儲排列方式,也是將矩陣按行展開為一維數組;存儲器中某地址對應的字存儲同一樣本的多個矩陣相同坐標的元素,從而一次訪問可同時計算多個輸出矩陣的元素(稱為一組輸出元素)。另外,使用雙端口ram存儲輸入輸出元素,從而只需要2個時鐘周期就能計算一組輸出元素。下采樣層也采取流水線的結構實現,如圖8所示,其中表示當前樣本在一批樣本中的序號;和表示當前輸出元素在輸出矩陣中的行列坐標;使用雙端口ram存儲輸入數據,故各輸出元素的計算只需讀2次輸入數據存儲器input,這2次讀取標記為變量。2次讀取的4個數據求和之后,舍棄結果最后2位,得到平均數存入寄存器。i_addr,o_addr和圖中粗線與前文意義相同。另外,圖8中輸出地址傳輸路徑省略了若干寄存器。

圖7 第一下采樣層的計算過程示意圖

圖8 第一下采樣層的流水線示意圖

3.3 全連接層的實現

全連接層的輸入是12個4階方陣,一個樣本輸入,最終輸出10個數值結果。權值矩陣可看做是10組4階方陣,每組12個方陣。10組權值矩陣均與輸入的同型矩陣組按元素相乘求和。單個樣本在該層的輸入數據的存儲排列情況,可以看做是字數為16、位寬為12個數據項的一段存儲空間;共10組權值矩陣中的每一組也可以看成是相同大小的一段存儲空間。整個權值矩陣可以存儲在一個字數為160、位寬為12個數據項的存儲器中。每組權值矩陣和單個樣本輸入數據存儲情況如圖9所示。

圖9 全連接層數據的存儲示意圖

全連接層的實現也通過并行化和流水線提高數據吞吐率,輸入數據和權值矩陣的存儲也用雙端口ram。其流水線示意圖如圖10所示,其中表示當前樣本在一批樣本中的序號;和表示當前處理的元素在4階方陣中的坐標;表示當前使用哪組權值矩陣與輸入數據相乘。圖10中,w_addr表示用于檢索權值數據的地址;wght是存儲權值矩陣的存儲器。輸入到sigmoid求值模塊的寄存器初值就是全連接層的某偏置值。

3.4 sigmoid函數求值模塊的實現

常見的sigmoid函數求值模塊的實現方法有3種:1)查表法,將預先計算的結果存儲起來,把輸入數據轉換為查表地址,查詢結果;2)直接計算法,使用較為復雜的邏輯構建計算電路;3)分段線性近似法,將函數曲線分為足夠多段,每一段使用直線段近似代替原圖像。因本文使用的FPGA內BRAM有限,本設計只用于預測,不需要太高精度,所以使用分段線性近似法進行sigmoid求值模塊的實現。另外,該模塊也采用流水線結構設計。

圖10 全連接層的流水線示意圖

3.4.1 sigmoid模塊設計依據

1)本設計使用的定點數包含10位二進制小數,近似計算結果誤差不應超過0.001;

3)當輸入大于8時,函數值與1的差值小于0.001。

線性近似線段參數的計算:區間[0, 8]等分為32段,連接函數圖像在相鄰兩分點的交點,得到線性近似;計算各線段的斜率和截距。可以驗證,近似計算的誤差不超過0.001。

3.4.2 模塊計算過程

1)對輸入取絕對值;

2)根據絕對值進行近似計算;

3)根據原數據符號,決定是否使用1減去第2步的結果;

4)輸出結果。

4 實驗結果與分析

4.1 實驗平臺和條件

本設計使用MNIST數據集作為訓練和測試數據。PC配置:i5-3570,8GB DDR3-1600 MHz;開發板上的Soc FPGA芯片是5CSEMA5F31C6,邏輯容量為85 K,并包含一個以cortex-A9雙核CPU為核心的HPS。首先在PC上使用C語言編寫的程序(單精度浮點版本)進行網絡訓練(樣本已預處理),得到參數;然后對參數定點化處理作為FPGA加速模塊的參數;最后使用相同的測試集進行測試,與PC上定點版本的正向預測過程進行對比。CNN加速模塊最終工作頻率為100 MHz。

樣本數據預處理:原MNIST數據集使用uint8存儲數據;若采用20位定點數,則用原MNIST數據集運算很可能導致溢出,產生錯誤,因此對樣本進行預處理:設定閾值,當輸入數據不超過該閾值,那么保持原值,否則輸出閾值。本設計使用16作為閾值。

4.2 實驗結果

實驗結果分2部分:PC上的正向預測過程錯誤率6.43%,平均每個樣本耗時852 us;FPGA方案錯誤率為6.43%,平均每個樣本總耗時164 us,因此加速效果為5.2倍。

本設計消耗的資源統計:

logic utilization:7%

DSP blocks:42%

total block memory bits:69%

total registers:4765

4.3 結果分析及改進

預測錯誤率6.43%與同類論文對比偏高,這是因為PC上網絡訓練過程中,只對訓練集樣本進行一次遍歷,與FPGA加速模塊的設計無關。另外,第二卷積層的實現中,一個時鐘周期同時計算12個輸出特征圖的元素,每個輸出元素需要計算6對乘法,因此峰值性能能夠得到7.2 GMAC/s(工作頻率100 MHz)。對于本設計實現的CNN網絡算法,一個樣本的處理需要約2.06×105次乘累加操作,因此加速模塊的平均性能達到1.26 GMAC/s。對比文獻[5]中的性能,本文提出的設計性能更優。另外,文獻[5]中使用浮點數進行數據處理,以及關于激活函數計算使用查表法,都導致較高的BRAM使用率。

在正向預測過程中,卷積層用時最長,特別是第一卷積層,因其輸出矩陣尺寸較大且模塊的并行度不高(每個時鐘計算5次乘法)。可以考慮將第一卷積層的輸入數據的存儲器從1個擴展為5個,那么可以同時從5個存儲器獲取數據來源,從而提高模塊并行度;而由此導致BRAM不足的問題,將輸入樣本數據進行二值化即可。

5 結論

本文提出的基于FPGA的CNN加速器設計,采用流水線和并行計算的方法,提高了加速器的吞吐率;使用時分復用的方法以及用定點數代替浮點數,降低了資源利用率。通過采用MNIST數據集進行測試,對比PC運行的C語言程序,在相同預測準確率的情況下,性能是PC實現的5.2倍。

[1] 畢占甲.基于多GPU的多層神經網絡并行加速訓練算法的研究[D].哈爾濱:哈爾濱工業大學,2015.

[2] Strigl D, Kofler K, Podlipnig S. Performance and scalability of GPU-based convolutional neural networks[C]. 18th Euromicro Conference on Parallel, Distributed and Network-Based Processing, 2010.

[3] 劉琦,黃咨,陳璐艷,等.基于GPU的卷積檢測模型加速[J].計算機應用與軟件,2016,33(5):226-230.

[4] Zhang Chen, Li Peng, Sun Guanyu, et al. Optimizing FPGA-based accelerator design for deep convolutional neural networks[C]. In ACM Int. Symp. On Field Programmable Gate Arrays, 2015:161-170.

[5] 余子健.基于FPGA的卷積神經網絡加速器[D].杭州:浙江大學,2016.

[6] Suda N, Chandra V, Dasika G, et al. Throughput-optimized OpenCL-based FPGA accelerator for large-scale convolutional neural networks[C].Proceedings of the 2016 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. ACM, 2016: 16-25.

The Realization of the Convolution Neural Network Based on FPGA

Li Jiahui Cai Shuting Chen Xuesong Xiong Xiaoming

(School of Automation, Guangdong University of Technology)

Convolutional Neural Network is a computation intensive algorithm based on deep learning, and it is common used in image classification, video recognition, etc. Due to the powerful parallel capability and flexibility of FPGA, it is frequently used as the platform to implementation of CNN. Meanwhile, the rapidly emerging mobile application of deep learning suggest that it is very significant to implement a CNN on mobile platform. Therefore, a DE1-Soc development board was used to implement a CNN network by Verilog HDL approach, using mnist as samples data. Finally, the implementation is 5.2 times faster than that on PC.

Convolution Neural Network; FPGA; Performance Acceleration

李嘉輝,男,1991年生,在讀碩士,主要研究方向:FPGA加速、深度學習。

蔡述庭(通訊作者),男,1979年生,博士,副教授,主要研究方向:FPGA加速、深度學習。E-mail:shutingcai@126.com

陳學松,男,1978年生,博士,副教授,主要研究方向:強化學習、機器學習。

熊曉明,男,1956年生,博士,教授,主要研究方向:IC設計、EDA技術。

國家自然科學基金(61201392);廣東省自然科學基金-自由申請項目(2015A030313497)。

主站蜘蛛池模板: 国产精品亚洲一区二区三区z| 91网在线| 91毛片网| 久久中文字幕av不卡一区二区| 亚洲色图欧美在线| 久久99国产乱子伦精品免| 欧美精品v欧洲精品| 天堂av综合网| 国产精品流白浆在线观看| 亚洲黄色激情网站| 亚洲成人黄色在线| 国产一级小视频| 野花国产精品入口| 在线国产资源| 97一区二区在线播放| a级毛片网| 都市激情亚洲综合久久| 久久超级碰| 999国内精品久久免费视频| 国产精品成人一区二区不卡| 中国一级特黄大片在线观看| 中文字幕人成乱码熟女免费| 五月婷婷欧美| 亚洲制服中文字幕一区二区| 成人年鲁鲁在线观看视频| 三上悠亚在线精品二区| 亚洲精品动漫| 国产在线精品人成导航| 色偷偷一区二区三区| 凹凸国产分类在线观看| 国产无码高清视频不卡| 黄色a一级视频| 国产人前露出系列视频| 狠狠色噜噜狠狠狠狠奇米777 | 亚洲国产黄色| 在线综合亚洲欧美网站| 无码AV动漫| 狠狠色综合久久狠狠色综合| 在线观看精品国产入口| 香蕉国产精品视频| 99久久99视频| 精品国产成人高清在线| 91成人在线免费视频| 国产高清自拍视频| 国产农村1级毛片| www.亚洲一区| 成人在线亚洲| 亚洲午夜天堂| 91久久偷偷做嫩草影院| 成人精品区| 久久久噜噜噜久久中文字幕色伊伊| 国产sm重味一区二区三区| 亚洲毛片一级带毛片基地| 亚洲一区二区三区国产精华液| 久久精品国产免费观看频道| 亚洲一区国色天香| 热久久这里是精品6免费观看| 国产精品青青| 欧美三级视频网站| 无码高潮喷水专区久久| 97精品国产高清久久久久蜜芽| 3344在线观看无码| 国产区免费| 久草网视频在线| 国产精品中文免费福利| 精品伊人久久久香线蕉 | 亚洲乱码视频| 国产91精品久久| 国产91特黄特色A级毛片| 国产精品综合久久久| 欧美午夜在线播放| 中文字幕欧美日韩| 亚洲无码A视频在线| 国产靠逼视频| 免费xxxxx在线观看网站| av天堂最新版在线| www.精品视频| 性色生活片在线观看| 国产18页| 国产成人精品一区二区秒拍1o| 国产精品性| 欧美亚洲国产精品第一页|