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

基于FPGA 的卷積神經網絡并行加速器設計

2021-03-11 03:48:48陳斌岳張福海
電子技術應用 2021年2期
關鍵詞:資源設計

王 婷,陳斌岳,張福海

(南開大學 電子信息與光學工程學院,天津300350)

0 引言

隨著人工智能的快速發展,卷積神經網絡越來越受到人們的關注。 由于它的高適應性和出色的識別能力,它已被廣泛應用于分類和識別、目標檢測、目標跟蹤等領域[1]。 與傳統算法相比,CNN 的計算復雜度要高得多,并且通用CPU 不再能夠滿足計算需求。 目前,主要解決方案是使用GPU 進行CNN 計算。 盡管GPU 在并行計算中具有自然優勢,但在成本和功耗方面存在很大的缺點。卷積神經網絡推理過程的實現占用空間大,計算能耗大[2],無法滿足終端系統的CNN 計算要求。 FPGA 具有強大的并行處理功能,靈活的可配置功能以及超低功耗,使其成為CNN 實現平臺的理想選擇。 FPGA 的可重配置特性適合于變化的神經網絡網絡結構。 因此,許多研究人員已經研究了使用FPGA 實現CNN 加速的方法[3]。 本文參考了Google 提出的輕量級網絡MobileNet 結構[4],并通過并行處理和流水線結構在FPGA 上設計了高速CNN 系統,并將其與CPU 和GPU 的實現進行了比較。

1 卷積神經網絡加速器的設計研究

1.1 卷積神經網絡的介紹

在深度學習領域中,卷積神經網絡占有著非常重要的地位,它的圖像識別準確率接近甚至高于人類的識別水平。卷積神經網絡是同時具有層次結構性和局部連通性的人工神經網絡[5]。 卷積神經網絡的結構都是類似的,它們采用前向網絡模型結構,節點使用神經元來實現分層連接。 并且,相鄰層之間的節點是在局部區域內相連接,同一層中的一些神經元節點之間是共享連接權重的。 傳統的卷積神經網絡結構如圖1 所示,卷積神經網絡是直接將準備識別的原始圖像作為輸入,然后依次通過多個隱藏層連接到各層,得到識別結果。

圖1 卷積神經網絡典型結構

1.2 CNN 的結構框架

MobileNet 是用于移動和嵌入式設備的有效模型。MobileNet 基于簡化的架構,并使用深度可分離卷積來構建輕型深度神經網絡。 為了進一步減少參數數量并促進在FPGA 上的部署,本文中使用了經過修改的CNN 網絡結構,如圖2 所示。 共有9 個卷積層和3 個池化層。

圖2 卷積神經網絡結構

1.3 卷積模塊的設計

在卷積神經網絡中,卷積運算占據了大部分計算量。傳統的卷積分為兩個步驟,即每個卷積核與每張特征圖片進行按位乘法然后相加,此時的計算量為DF*DF*DK*DK*M*N,DF 是輸入特征圖的尺寸,DK 是卷積核的尺寸,M、N 分別是輸入通道數和輸出通道數。 本文采用的卷積方式不同于傳統卷積,首先按照輸入通道進行按位相乘,得到的結果通道數是沒有變化的,接下來使用1*1 的卷積核再進行計算,以改變通道數。這種方法的計算量為DK*DK*M*DF*DF+1*1*M*N*DF*DF, 第1 項表示的是卷積核為3 時的計算量,第2 項表示卷積核為1 時的計算量,當DK=3 時,這種卷積方式比傳統卷積減少了8 倍多的計算量,計算量的大幅度減少更有利于部署在資源有限的FPGA 端。 運算一個卷積層需要6 個循環嵌套來實現,循環順序按照輸出通道>輸入通道>高度>寬度>卷積內核元素依次來排列計算。 對于每一卷積層來說,最外面的循環按照順序遍歷所有像素。上述循環結構的優化實現可以使用循環展開,循環拆分以及循環合并的指令方法,以設計加速器的IP 核。

1.4 資源占用優化

在訓練了卷積神經網絡之后,參數數據是一個32 位浮點數。 相關實驗已經證實,精度降低一定程度對CNN識別精度的影響非常微弱[6]。 因此,本文設計中經過嘗試不同量化位數后,在保證了精度的情況下選擇輸入的圖像數據和權重數據使用9 位定點數。這種設計大大降低了FPGA 資源的利用率,并提高了網絡運行速度。

卷積神經網絡的計算成本主要有卷積層的大量乘法運算,在FPGA 中通常使用DSP 資源進行乘法運算,而通常不足的DSP 資源會成為卷積神經網絡部署在FPGA 端的瓶頸。 BOOTH 算法實現的乘法器可有效地代替使用DSP 資源的傳統乘法。 在Vivado HLS 中,數據都是以十六位二進制帶符號的補碼表示,原碼乘法器的移位相加方法并不能直接推廣用于補碼的乘法運算中。普通的移位相加運算量比較大,乘數的每一位都產生部分積,乘數中值為1 的位數決定著累加的次數。 BOOTH算法的思想是將乘數近似為一個較大的整數值,利用這個整數值與被乘數相乘的結果減去這個整數值的補數與被乘數相乘的結果,對于具有連續的1 和0 的乘數來說產生的部分積較少。 具體運算步驟如下:

(1)被乘數X 與乘數Y 均為有符號數補碼,運算結果也是補碼。

(2)初始部分積為0,乘數Y 末尾添加附加位,初始值為0。

(3)判斷乘數Y 后兩位:若是01 則部分積加被乘數X 再右移一位, 若是10 則部分積減被乘數X 再右移一位,若是00 以及11 則只進行右移一位操作。

(4)累加n+1 次(n 表示數據數值位數),右移n 次。

2 基于FPGA 的加速器系統設計

2.1 卷積神經網絡層融合策略

卷積層之間的運算有兩種實現模式,分為層串行模式和層并行模式[7]。 本文在設計基于FPGA 的CNN 加速器時,選擇了高度的靈活性和實現難度低的層串行模式。

在層串行模式中,FPGA 中的所有PE 單元都只用于實現卷積神經網絡中一層的功能。并且通過重復調用存在的PE 單元,即使用時分復用PE 單元的策略來實現整個神經網絡的運算[8]。 根據卷積神經網絡單層操作的類似性原理,因此考慮由單層實現的層串行模式是確實可行的。 并且,在這種操作模式下,從DDR 中讀取數據傳輸給PE 單元,PE 單元計算得到結果后將其寫回到DDR,數據控制比較簡單。 然而,對于中間數據的存儲,層串行模式是通過AXI 總線協議將每一層的中間運算結果都再傳輸到外部存儲器DDR 中,因此這種方法對IO 帶寬的要求非常高[9]。

為了增大吞吐量并解決因帶寬瓶頸而造成的傳輸時間過長,可以減少每一層的數據訪問以及存儲空間,以實現最大程度的數據和模塊復用。 因此,本文將每三層合并為一組,然后將結果輸出到DDR,從而將12 層CNN 結構減少為5 層,這將節省一部分傳輸步驟。 此操作將多層融合在一起而形成局部組合的方法,將從DRAM 接收的輸入數據和操作的中間結果緩存都存儲在片上BRAM 存儲器中。

2.2 緩存結構

在帶寬瓶頸的影響下,整個硬件平臺的加速性能主要受到數據的訪存效率限制。為了有效控制數據流的訪存將使用緩沖技術,以增加帶寬利用率[10]。 乒乓操作的緩沖方式是使用兩個數據存儲器,先將數據存儲在第一個數據緩存中,當第一個數據緩存存滿時,數據將轉換到第二個數據緩存中存儲,并在相同時刻讀取第一個數據緩存中的數據。這種方式使得單通道的數據傳輸有效地變化為雙通道的數據流傳輸, 數據流經過緩沖后,不斷地傳遞到數據處理模塊,這將使數據傳輸時間與數據運算時間重疊,以抵消大部分的時間[11]。

為了提高加速器系統的吞吐效率,在片內的輸入緩存設置了圖像輸入緩存和權值輸入緩存,以及結果輸出緩存。 輸入緩存的作用是從外部存儲器DDR 中載入所需數據以及所需參數,輸出緩存的作用是將存儲運算結果輸出至外部存儲器DDR 中或者是再應用于計算單元中。緩存結構根據DMA 的方式來進行數據交互。本文的輸入圖像、權值以及輸出的計算結果都采用如圖3 所示的乒乓緩沖方式。兩個數據緩沖模塊通過二選一復用器相互配合使用,使數據可以沒有停頓地依次加載到計算單元中,計算單元可以時時刻刻處于計算狀態,以此充分利用了有限的計算資源。

圖3 乒乓緩存數據流

2.3 加速器整體架構

加速器的總體設計如圖4 所示,由PS 和PL 組成。其中PS 主要負責圖像數據預處理,權重數據預處理和特征定位的任務,而PL 負責整個CNN 計算部分。 加速器系統通過AXI 總線將CPU 和外部存儲器DDR 中的卷積神經網絡參數權重,以及要識別的輸入圖像像素數據傳遞給PL 部分。 當操作控制指令傳遞到PL 端時,PL 端啟動系統主程序,并通過輸入緩沖區的乒乓操作將參數和像素數據傳輸到運算操作邏輯單元。在完成整個卷積神經網絡的計算后,輸出數據通過AXI 總線通過輸出緩沖區傳輸到DDR 存儲器,并輸出最終結果。

圖4 加速器系統的整體設計

3 基于FPGA 的加速器系統設計

3.1 實驗環境

實驗采用Xilinx Zynq UltraScale+MPSoC ZU3EG A484 Development Board 對本文目標檢測定位算法進行加速。片內由ARM 處理器與可重構FPGA 構成,片上資源主要 由432 個BRAM 和360 個DSP 組 成。 CPU 采 用Intel Core i5 2500K 處理器,GPU 是NVIDIA UeForce UTX 960。所用到的軟件開發工具為賽靈思公司開發的Vivado 設計套件Vivado IDE 和Vivado HLS。

傳統的FPGA 設計流程復雜且繁瑣,為了簡化開發流程,加速器系統采用高級綜合方式來進行優化設計[12]。首先采用Vivado HLS 開發工具將CNN 計算過程的高級編程語言C++轉化為硬件描述語言,再封裝為Vivado 的IP 核輸出。 Vivado HLS 工具具體的設計流程如圖5 所示。 然后利用Vivado IDE 開發工具,導入封裝好的CNN運算IP 核、主控單元zynq_ultra_ps、時鐘單元以及AXI傳輸模塊。 通過綜合、設定約束、布局布線來實現完成整個加速器系統的設計。

圖5 Vivado HLS 工具設計流程

3.2 實驗環境

表1 列出了默認乘法的FPGA 的資源使用情況,表2 列出了部分乘法用BOOTH 算法代替的資源使用情況,由于開發板的LUT 資源使用率已經很高,因此部分乘法還是采用了DSP 資源。 BRAM 用于圖像數據、網絡權重及輸出數據的緩存,DSP 以及LUT 用于卷積模塊的乘加運算,該設計高效地利用了FPGA 的內部資源。

表1 默認乘法FPGA 內部資源的利用率

表2 BOOTH 乘法FPGA 內部資源的利用率

表3 中顯示了將FPGA 中CNN 的性能與Intel Core i5 CPU 和NVIDIA UeForce UTX 960 UPU 進行比較的結果。 基于FPGA 優化設計的卷積神經網絡處理單個圖像所需的時間比CPU 要少得多,相當于GPU 的速度。 GPU功耗是本文設計的30 倍以上。

表3 不同硬件平臺的性能評估

4 結論

本文提出了一種基于FPGA 有限資源的卷積神經網絡加速器。利用BOOTH 算法實現乘法,有效降低了DSP 資源占用量。通過流水線結構和卷積運算的并行性提高了卷積運算的速度。網絡加速器的內部結構在資源有限的開發板上實現12 層CNN 網絡, 并將其與CPU 和GPU進行比較。 實驗結果表明,嵌入式FPGA 的功耗和性能具有很大的優勢,更適合于移動端的部署。

猜你喜歡
資源設計
讓有限的“資源”更有效
基礎教育資源展示
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
一樣的資源,不一樣的收獲
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
資源回收
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
主站蜘蛛池模板: 国产一区二区色淫影院| 国产女人在线观看| 久久综合丝袜日本网| 免费一级毛片完整版在线看| 91热爆在线| 国产性猛交XXXX免费看| 精品视频在线一区| 国产性生交xxxxx免费| 全部毛片免费看| 狠狠ⅴ日韩v欧美v天堂| 日本成人不卡视频| 免费一级毛片在线播放傲雪网| 一级毛片在线播放| 伊人福利视频| 狠狠色婷婷丁香综合久久韩国| 免费人成网站在线高清| 久久这里只精品热免费99| 四虎国产成人免费观看| 久久精品这里只有精99品| 国产91在线免费视频| 伊人久久福利中文字幕| 亚洲色图欧美激情| 亚洲视频一区在线| 色成人综合| 鲁鲁鲁爽爽爽在线视频观看| 欧洲亚洲欧美国产日本高清| 国产成人综合亚洲欧洲色就色| 狠狠v日韩v欧美v| 激情视频综合网| 91丨九色丨首页在线播放| 在线观看亚洲国产| 91丨九色丨首页在线播放| 欧美午夜久久| 无码精油按摩潮喷在线播放| 日韩欧美国产成人| a毛片在线| 18禁高潮出水呻吟娇喘蜜芽| 欧美国产日本高清不卡| 亚洲国产精品不卡在线| 亚洲精选无码久久久| 91区国产福利在线观看午夜| 青青极品在线| 久久天天躁狠狠躁夜夜躁| 97视频精品全国在线观看| 亚洲成A人V欧美综合| 99热这里只有精品免费| 国产流白浆视频| 成人在线视频一区| 久久无码av三级| 91美女视频在线| 国产成人毛片| 婷婷午夜天| 国产在线观看高清不卡| 国产精品欧美在线观看| 欧美激情二区三区| 久久国产精品影院| 在线精品视频成人网| 欧美 亚洲 日韩 国产| 高清乱码精品福利在线视频| 欧美 亚洲 日韩 国产| 国产午夜精品一区二区三区软件| h视频在线播放| 亚洲国产精品日韩av专区| 国产在线拍偷自揄拍精品| 国产成人高清精品免费| 久久精品一品道久久精品| 欧美翘臀一区二区三区| 亚洲va视频| a在线亚洲男人的天堂试看| 国产制服丝袜91在线| 激情在线网| 亚洲侵犯无码网址在线观看| 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产视频入口| 国产成人精品一区二区三区| 国产高清不卡| 久久www视频| 18禁色诱爆乳网站| swag国产精品| 亚洲人人视频| 免费毛片网站在线观看| 无码粉嫩虎白一线天在线观看|