国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種高度并行的卷積神經(jīng)網(wǎng)絡加速器設計方法

2020-06-23 07:46王少軍
哈爾濱工業(yè)大學學報 2020年4期
關(guān)鍵詞:加速器權(quán)值卷積

徐 欣,劉 強,王少軍

(1.天津市成像與感知微電子技術(shù)重點實驗室(天津大學),天津 300072;2.哈爾濱工業(yè)大學 電子與信息工程學院,哈爾濱 150001)

卷積神經(jīng)網(wǎng)絡近年來在目標檢測[1]、圖像修復[2]、自然語言處理、機器視覺等應用領(lǐng)域獲得了巨大突破.面對這些復雜任務,神經(jīng)網(wǎng)絡系統(tǒng)需要強大的數(shù)據(jù)存儲以及數(shù)據(jù)處理能力.高速定制化的硬件處理器為處理能力的提高提供了一個可行的途徑[3-6].相比于其他硬件處理器,F(xiàn)PGA擁有良好的性能、較短的開發(fā)周期、更高的能源利用率及重配置功能,因此越來越多的開發(fā)者選擇基于FPGA設計卷積神經(jīng)網(wǎng)絡硬件加速器[3,7-8].

目前,基于FPGA的卷積神經(jīng)網(wǎng)絡硬件加速器仍面臨諸多挑戰(zhàn). 1)卷積硬件加速器具有較高的并行計算特性,因此數(shù)據(jù)傳輸速度往往成為性能繼續(xù)提升的瓶頸,例如Qiu等[9]設計提出的采用多個卷積處理單元并行計算的方法,其較低的片上數(shù)據(jù)傳輸速度就限制了整體系統(tǒng)的計算性能;2)硬件設計空間巨大,不同的硬件并行設計方法將影響加速器性能與資源使用率,例如端到端的設計[10-11]的方法把所有卷積層的計算引擎都放置到片上.這種方法對片上資源和帶寬要求較高,并且只適用于較小網(wǎng)絡模型.如何設計加速器的高度并行傳輸與計算架構(gòu)以及如何在有限的硬件資源下選擇出最佳并行方案以實現(xiàn)加速器的高性能是目前亟需解決的問題.

針對上述問題,本文首先提出了數(shù)據(jù)對齊并行處理的方法以實現(xiàn)數(shù)據(jù)層面的高速并行傳輸與計算,采用多卷積核并行處理的方法實現(xiàn)同一卷積層的多個卷積核并行計算,并通過建立性能與資源評估模型,生成性能與資源協(xié)同優(yōu)化的并行方案.最終在Xilinx Zynq XC7Z045上的SSD網(wǎng)絡模型測試結(jié)果表明,該加速器在175 MHz時鐘下可以達到44.59 FPS與306.6 GOP·s-1.

1 卷積神經(jīng)網(wǎng)絡

卷積神經(jīng)網(wǎng)絡是一種具有共享權(quán)重結(jié)構(gòu)、平移不變性特征的人工神經(jīng)網(wǎng)絡,其主要由卷積層、下采樣層和全連接層組成.卷積層的作用是通過權(quán)值共享來提取特征,下采樣層則主要是為了降低數(shù)據(jù)維度與防止圖像過擬合,全連接層的作用是把最后一層卷積的輸出圖像由高維變成低維,并且把輸入的信息進行提取整合,再經(jīng)過激活函數(shù)的映射,以實現(xiàn)特征到標簽的映射.

卷積層從上層局部鄰域特征圖中提取特征,然后施加一個加性偏差,其結(jié)果如下:

gj(x+p,y+q).

(1)

式中:Qi(x,y)為第i張輸出圖像上的(x,y)處的輸出特征;bi為第i張輸出特征的偏差;gj(x+p,y+q)為第j張輸入圖像在(x+p,y+q)處特征值;Wij(p,q)為卷積核(p,q)處的權(quán)重值;Mi為輸入圖像的通道數(shù);Pi、Qi分別為卷積核長寬.

除此之外,卷積層的輸出還要經(jīng)過激活函數(shù)和批量歸一化處理.激活函數(shù)可以把特征保留并映射出來,以增強卷積神經(jīng)網(wǎng)絡系統(tǒng)的非線性,常用的激活函數(shù)有tanh,sigmoid,ReLU,PReLU等.本文選擇下式所示ReLU函數(shù)[12]作為非線性激活函數(shù).

ReLU(x)=Max(x,0),

式中x為輸入像素.

經(jīng)過卷積層權(quán)值共享和局部連接后,圖像權(quán)值參數(shù)已經(jīng)大大減少,但是對于全連接層來說仍有著計算量方面的挑戰(zhàn),并且還會出現(xiàn)過擬合現(xiàn)象.為了解決這些問題,可按著一定的方法對特征圖進行下采樣操作,提升整個網(wǎng)絡模型的性能.

全連接層是將特征圖進行整合和分類的高層,以得到整個圖像的信息.該層的每一個神經(jīng)元都與上一層的所有神經(jīng)元相連,簡單來說全連接層就是矩陣向量乘法過程,輸入向量與權(quán)重矩陣相乘,以實現(xiàn)特征的分類.

為了兼顧目標檢測的時效性和不變性,SSD算法在2016年被Liu等[13]提出.SSD算法的網(wǎng)絡模型是一個基于VGG16結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡,其核心是利用小型卷積濾波器來預測目標類別與邊界框,并達到速度與精確度的平衡.如圖1所示為一個基本的SSD網(wǎng)絡架構(gòu).

圖1 基本SSD網(wǎng)絡模型

2 硬件實現(xiàn)及優(yōu)化

本文所提出的系統(tǒng)整體架構(gòu)如圖2所示,主要包含:片外雙倍速率同步動態(tài)隨機存儲器(double data rate synchronous dynamic random access memory, DDR SDRAM)、ARM(advanced risc machine)處理器、直接內(nèi)存存取單元(direct memory access, DMA)、片上緩沖器、控制器以及卷積計算單元.片外DDR將儲存外設獲取的輸入圖像數(shù)據(jù)以及網(wǎng)絡的權(quán)值系數(shù);ARM處理器對整體系統(tǒng)進行控制;卷積計算單元主要完成卷積神經(jīng)網(wǎng)絡的卷積計算,還包括池化、激活等操作;片上緩沖器用于緩存計算所需圖像數(shù)據(jù),權(quán)值系數(shù)以及計算結(jié)果;DMA用于片外儲存器與片上緩沖器之間的數(shù)據(jù)傳輸;控制器從外部獲取指令并對其進行解碼,以控制可編程邏輯端的所有模塊.

圖2 系統(tǒng)整體硬件架構(gòu)圖

2.1 數(shù)據(jù)對齊并行處理

本文首先提出了一種數(shù)據(jù)對齊并行預處理的方法實現(xiàn)數(shù)據(jù)層面的高度并行傳輸與計算,以提高數(shù)據(jù)傳輸、并行計算速度和硬件設計的通用性.文中用PD表示數(shù)據(jù)傳輸?shù)牟⑿卸?,即一個時鐘周期內(nèi)并行傳輸?shù)臄?shù)據(jù)個數(shù).PV表示數(shù)據(jù)計算的并行度,為一個卷積核在圖像上可同時計算的結(jié)果個數(shù),K為卷積核大小.預處理單元由兩部分組成:移位寄存器與先進先出(first input first output,FIFO)線性緩沖器.根據(jù)式(1),卷積運算要求數(shù)據(jù)按照行對齊輸出,所以首先要對圖像數(shù)據(jù)進行行緩存.由于一個時鐘內(nèi)數(shù)據(jù)傳輸?shù)膫€數(shù)為PD,當圖像邊長不能被數(shù)據(jù)傳輸并行度PD整除,需要對輸入圖像添加無效數(shù)據(jù)以使邊長為PD的整數(shù)倍,保證圖像的每行像素以每個時鐘周期傳輸PD個數(shù)據(jù)的方式經(jīng)過N個時鐘周期傳輸完畢.這樣,圖像數(shù)據(jù)就可以以行對齊的方式存儲在線性FIFO中,不會產(chǎn)生行錯位.其次,行對齊輸出要求對線性緩沖器FIFO進行同時讀取,使不同行的相同位置的數(shù)據(jù)一起輸出(如圖3中的Xp0,Xp6,Xp8同時輸出).最后將讀取到的圖像數(shù)據(jù)組合成卷積矩陣,輸入到計算模塊中與系數(shù)進行卷積運算.

圖3 輸入數(shù)據(jù)對齊并行處理

圖3所示為一個3×3大小的卷積核在6×6輸入圖像上滑動的過程.其中藍色表示原始圖像大小為4×4.由于應用需要,原始圖像進行了像素填充,因此實際輸入圖像變成6×6(這里填充像素層數(shù)設置為1).輸入圖像數(shù)據(jù)將按行依次讀取.數(shù)據(jù)并行傳輸個數(shù)PD設置為4,數(shù)據(jù)計算并行度PV為4,卷積核尺寸K為3,滑動步長為1.由于此時圖像邊長6不為數(shù)據(jù)傳輸并行度4的整數(shù)倍,需要在每行的左側(cè)添加2個無效數(shù)據(jù)(圖中的紅色像素)存入寄存器中補充成8個數(shù)據(jù),以保證每行數(shù)據(jù)正好可以經(jīng)過2個時鐘周期傳完.該例中實現(xiàn)的3×3的卷積核計算需要對3行的數(shù)據(jù)進行行對齊讀取以組成卷積矩陣.因此使用2個FIFO緩存前兩行輸入數(shù)據(jù),在第3個周期時便可與移位寄存器中的第3行數(shù)據(jù)實現(xiàn)行對齊輸出,其結(jié)構(gòu)如圖3(b)所示.由于數(shù)據(jù)傳輸并行度為PD,一個時鐘周期便可得到3×PD個數(shù)據(jù).根據(jù)式(1)可知當卷積核滑動步長為1時,每個卷積操作的輸入矩陣之間有重疊,按照圖3(c)中的方式進行組合可得到PV個卷積矩陣.然后將這PV個矩陣按所標順序分別輸入到PV個K×K卷積核計算單元的中與系數(shù)進行卷積運算,這樣一個周期內(nèi)就可以得到PV個卷積結(jié)果.邊長為6的圖像,經(jīng)過卷積操作后輸出圖像邊長為4.如圖3(d)所示,輸出圖像的一行像素可經(jīng)過一次數(shù)據(jù)并行計算同時得到.

綜上所述,PD、PV的選擇主要受到輸出圖像尺寸的限制. 本文要實現(xiàn)一個完整的網(wǎng)絡模型,因此硬件加速器的PD與PV的大小最終將需要考慮網(wǎng)絡的所有卷積層的尺寸來確定.

2.2 多卷積核并行計算

經(jīng)過對卷積層的分析發(fā)現(xiàn),網(wǎng)絡的每層卷積層都是用不同數(shù)量的卷積核在同一個輸入圖像上不斷滑動進行卷積.因此,可以在硬件上實現(xiàn)PF個卷積核運算單元,使PF個不同的卷積核同時與圖像數(shù)據(jù)進行卷積運算.圖4是一個多卷積核并行計算的硬件結(jié)構(gòu).其中數(shù)據(jù)預處理單元表示數(shù)據(jù)對齊并行處理的移位寄存器與FIFO線性緩沖器組成的預處理單元.權(quán)值系數(shù)緩沖器緩存計算所需的權(quán)值系數(shù).KCU為一個K×K卷積核計算單元.這里假設卷積核的并行度PF為3,即可同時進行3個不同卷積核的卷積運算.依上文所述,每一層卷積層的所有卷積核處理的為同一張圖像,所以其輸入圖像數(shù)據(jù)是同時讀取的,只是被映射到不同的卷積核的卷積單元.假設輸入圖像為RGB三通道圖像,圖像將依照通道順序依次進入預處理單元.一個通道的圖像經(jīng)過數(shù)據(jù)預處理單元處理后得到的PV個卷積矩陣將會被同時輸送到每個卷積核的CCU卷積單元,然后再對應輸入到CCU的PV個K×K卷積核計算單元當中與卷積系數(shù)進行乘累加操作.由于有PF個卷積核,每個卷積核的CCU單元可同時進行一個卷積核的PV個卷積結(jié)果的計算,因此一個周期內(nèi)可以得到PF×PV個卷積運算結(jié)果.每個卷積核的卷積單元計算完輸入圖像的一個通道后,把結(jié)果暫時存放在FIFO當中,等待下一個通道計算結(jié)果的到來再進行累加.最終,輸入圖像的所有通道計算完后,存放在FIFO中的結(jié)果依次輸出.多卷積核并行計算單元的計算速度快于暫存結(jié)果的FIFO的數(shù)據(jù)輸出速度.為了減少計算等待時間,使上一周期的PF個卷積核的結(jié)果計算完后,無需等待FIFO中的數(shù)據(jù)全部取出,即可開始下一周期PF個卷積計算,在最后的通道累加單元中,使用了乒乓結(jié)構(gòu),使兩個FIFO交替存取并行計算單元的卷積結(jié)果.

圖4 多卷積核并行計算單元

2.3 硬件架構(gòu)分析

根據(jù)多卷積核并行計算,加速器的PV大小將由輸出圖像確定,而卷積核并行度PF則主要受到片上資源的限制.卷積模塊中的乘法全部利用FPGA的數(shù)字信號處理資源(digital signal processing,DSP)實現(xiàn).采用圖4所示多卷積核并行策略后,所用的乘法器總數(shù)應該小于總的DSP資源為

PV×PF×Kernelk≤DSPsum.

(2)

式中:Kernelk為計算一個K×K大小卷積所需乘法器個數(shù);DSPsum為FPGA片上DSP資源總數(shù).

除此之外,還需要使用隨機存取存儲器塊(block random access memory, BRAM)存儲卷積計算所需的臨時數(shù)據(jù),因此需要考慮片上的存儲資源.片上存儲主要包括:輸入緩沖區(qū)、線性緩沖區(qū)以及臨時計算結(jié)果存儲區(qū).每層卷積層的輸出圖像大小公式如下:

(3)

(4)

PF×2≤BRAMsum.

(5)

除資源限制之外,為了保證數(shù)據(jù)并行傳輸速度與計算速度匹配,PD應盡量大于等于PV;同時為了減少再對輸出結(jié)果的處理,PV應盡量能被輸出圖像邊長整除,即:

(6)

PD≥PV,

(7)

(8)

Tdata=Hin×Win×Cin×δ×tclk,

(9)

(10)

(11)

(12)

式中:K為卷積核大??;Win、Hin分別為該次卷積計算的輸入圖像尺寸;Wout、Hout分別為輸出圖像尺寸;Cin為輸入圖像通道數(shù);Fout為卷積核個數(shù);δ、θ分別為架構(gòu)所決定的傳輸與計算效率;tclk為時鐘周期.

網(wǎng)絡硬件執(zhí)行時間為所有卷積層的執(zhí)行時間總和.每層卷積層的執(zhí)行時間則為該層所有的分割塊的執(zhí)行時間總和,即

(13)

圖5 卷積層硬件執(zhí)行時間

3 結(jié) 果

本文將根據(jù)上述硬件架構(gòu)分析對設計架構(gòu)進行評估,以確定出最佳的并行方案.

表1為本文所實現(xiàn)的SSD網(wǎng)絡模型所包含的卷積層,加速器需要將每層卷積層的圖像數(shù)據(jù)與權(quán)值系數(shù)從片外DDR讀取到片上進行臨時儲存.當圖像數(shù)據(jù)和系數(shù)的數(shù)量較為龐大時,由于片上資源有限,無法將完整一層的數(shù)據(jù)和參數(shù)全部儲存到片上存儲器中.這時,需要對圖像進行分割,以分塊的方式進行處理.表1中列出了對于較大的卷積層所需進行的分割尺寸.這里相同輸入圖像大小的卷積層只列舉了一個.為了降低加速器的資源與功耗,本文采用16位定點實現(xiàn)SSD網(wǎng)絡模型,相比于單浮點數(shù),其mAP僅下降了0.8%.

表1 SSD網(wǎng)絡模型卷積層

圖6是根據(jù)硬件架構(gòu)分析式(2)~(13)所繪制的資源與性能評估模型圖.在充分利用實驗所用Xilinx Zynq XC7Z045片上DSP資源的情況下,理論執(zhí)行時間與存儲資源都與PV成反比.由于PV需滿足式(6)的限制,因此根據(jù)表1中的輸出尺寸分別對PV=2、4、8、16、32這5種可選方案進行取點.可以看出當PV小于8時,硬件執(zhí)行時間明顯增加,并且需要的存儲資源大于實際片上存儲資源.網(wǎng)絡中最小的輸出圖像大小邊長為8,因此最終根據(jù)式(2)~(7)選擇PD=8、PV=8、PF=12的并行方案.對該方案進行實際綜合,DSP、BRAM、查找表單元(look-up-table, LUT)以及觸發(fā)器(flip-flop, FF)的使用率見表2.

表3列出了將同一SSD網(wǎng)絡分別在CPU、GPU、FPGA32和FPGA16上實現(xiàn)的結(jié)果對比.從表3中可以看出,本文基于16位定點數(shù)實現(xiàn)的SSD網(wǎng)絡模型在175 MHz的時鐘頻率下,可以達到44.59幀/s,比基于32位定點數(shù)的硬件設計快4.99倍,分別是CPU與GPU的1.39倍與0.41倍.動態(tài)功耗為3.72 W,相比CPU與GPU分別降低85.1%與93.9%,是FPGA32的1.04倍.綜上所述,本文所提出的16位卷積神經(jīng)網(wǎng)絡加速器與CPU、GPU相比,具有較低的功耗,與32位的加速器相比,具有較高性能的優(yōu)勢,因此更適用于移動設備上.

圖6 性能與資源評估

表2 硬件實現(xiàn)資源使用情況

表4列出了3種基于Xilinx Zynq XC7Z045實現(xiàn)的卷積神經(jīng)網(wǎng)絡加速器[9,14-15].可以看出,相比于其他設計,本設計采用數(shù)據(jù)對齊并行處理、多卷積核并行計算等方法能夠充分利用片上資源,實現(xiàn)高度并行計算,使加速器的能效達到31.54 GOP/(s·W),比文獻[9,14-15]有較大性能提升.

4 結(jié) 論

1)本文所提出的卷積神經(jīng)網(wǎng)絡加速器采用數(shù)據(jù)對齊并行處理與多卷積核并行計算的方法,實現(xiàn)了數(shù)據(jù)的高速并行傳輸,與多個層面的并行計算,并根據(jù)該設計方法建立了資源與性能模型,找出最佳并行方案,實現(xiàn)了加速器整體硬件架構(gòu)的高能效.

2)實驗結(jié)果表明,加速器在175 MHz時鐘頻率下實現(xiàn)的SSD網(wǎng)絡模型,其速度可以達到44.59 FPS,功耗為9.72 W,整體能效達到31.54 GOP/(s·W).

猜你喜歡
加速器權(quán)值卷積
莫比斯加速器眾創(chuàng)辦公空間
知識快餐店 科學加速器
一種融合時間權(quán)值和用戶行為序列的電影推薦模型
基于3D-Winograd的快速卷積算法設計及FPGA實現(xiàn)
全民小康路上的“加速器”
基于5G MR實現(xiàn)Massive MIMO權(quán)值智能尋優(yōu)的技術(shù)方案研究
卷積神經(jīng)網(wǎng)絡的分析與設計
從濾波器理解卷積
強規(guī)劃的最小期望權(quán)值求解算法?
基于傅里葉域卷積表示的目標跟蹤算法