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

?

改進(jìn)的基于嵌入式SoC卷積神經(jīng)網(wǎng)絡(luò)識(shí)別模型

2020-03-13 10:56:34肖金球顧敏明
關(guān)鍵詞:定點(diǎn)嵌入式卷積

孫 磊 肖金球 夏 禹 顧敏明

(蘇州科技大學(xué)電子與信息工程學(xué)院 江蘇 蘇州 215009) (蘇州科技大學(xué)蘇州市智能測控工程技術(shù)研究中心 江蘇 蘇州 215009)

0 引 言

利用FPGA并行計(jì)算的特點(diǎn)可以加速網(wǎng)絡(luò)的運(yùn)算,但是需要消耗較多的邏輯資源。RTL的設(shè)計(jì)方法即使在資源配置和計(jì)算性能上有一定的優(yōu)勢,但開發(fā)周期長、難度大、門檻高。Venieris等[1]設(shè)計(jì)了一種將卷積神經(jīng)網(wǎng)絡(luò)映射到FPGA平臺(tái)的自動(dòng)化設(shè)計(jì)方法,大大減少了設(shè)計(jì)難度。盧冶等[2]提出一種面向邊緣計(jì)算的嵌入式FPGA平臺(tái)的構(gòu)建方法,與多種平臺(tái)比較顯現(xiàn)出優(yōu)勢和可行性。仇越等[3]提出了基于Zynq加速器的實(shí)現(xiàn)方法,并利用高層次綜合技術(shù)和嵌入式SoC對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化設(shè)計(jì)。Stornaiuolo等[4]提出快速部署Overlay的設(shè)計(jì)方法,以Xilinx公司的Vivado套件和PYNQ(Python Productivity for Zynq)為實(shí)驗(yàn)平臺(tái)進(jìn)行高層次綜合設(shè)計(jì),進(jìn)一步加快了深度學(xué)習(xí)網(wǎng)絡(luò)在嵌入式SoC上的部署速度。

本文以PYNQ為硬件實(shí)現(xiàn)平臺(tái),將卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行離線訓(xùn)練得到權(quán)重、偏置參數(shù)的模型文件,并設(shè)計(jì)定點(diǎn)數(shù)量化的算法;在嵌入式系統(tǒng)下調(diào)用FPGA資源,設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)和加速計(jì)算,對(duì)已有的加速器進(jìn)行改進(jìn)和優(yōu)化,將實(shí)驗(yàn)數(shù)據(jù)與ZynqNet[3]實(shí)驗(yàn)方法比較得出了更佳的效果,與單CPU處理器計(jì)算卷積神經(jīng)網(wǎng)絡(luò)比較具有更快的計(jì)算速度。

1 卷積神經(jīng)網(wǎng)絡(luò)和嵌入式SoC

1.1 卷積神經(jīng)網(wǎng)絡(luò)模型

通常卷積神經(jīng)網(wǎng)絡(luò)包括卷積層、池化層、激活函數(shù)(非線性ReLU)和全連接層。它們依次作用于特征圖,每一層從前一層讀取、執(zhí)行和輸出。圖1所示為經(jīng)典LeNet-5手寫識(shí)別模型。

圖1 LeNet-5手寫識(shí)別模型

卷積層通過輸入特征圖和權(quán)重組成的卷積核進(jìn)行二維卷積操作如式(1),輸出通常直接連接到非線性單元,進(jìn)行非線性激活。式(2)指池化層采用最大值采樣或者均值采樣,可以顯著降低網(wǎng)絡(luò)的計(jì)算復(fù)雜度。式(3)是全連接層在輸入特征圖和權(quán)重之間執(zhí)行點(diǎn)積。全連接層被放置在網(wǎng)絡(luò)的末端,并減小輸出值。ReLU是執(zhí)行線性激活,閾值為0。ReLU在卷積神經(jīng)網(wǎng)絡(luò)中應(yīng)用廣泛,可以顯著加快隨機(jī)梯度下降的收斂速度,減少訓(xùn)練時(shí)間,如式(4)所示。

(1)

(2)

(3)

foutput=MAX(fin,0)

(4)

根據(jù)鏈?zhǔn)椒▌t和反向傳播原理,以損失函數(shù)的方式對(duì)輸入、輸出和準(zhǔn)確值進(jìn)行對(duì)比評(píng)估,從而對(duì)權(quán)重、偏差等參數(shù)進(jìn)行調(diào)整。本文采用先經(jīng)標(biāo)定好的數(shù)據(jù)集進(jìn)行訓(xùn)練,卷積神經(jīng)網(wǎng)絡(luò)模型的權(quán)重和偏置參數(shù)是離線預(yù)訓(xùn)練得到的。因此前向傳播過程是本文設(shè)計(jì)實(shí)現(xiàn)目的。

1.2 嵌入式SoC的設(shè)計(jì)方法

基于FPGA的傳統(tǒng)RTL設(shè)計(jì)方法,有難度大、周期長等缺點(diǎn)。藉此提出的高層次綜合技術(shù)是以C、C++等語言編寫高級(jí)接口程序,并將其轉(zhuǎn)換成HDL代碼進(jìn)行FPGA部署的一種設(shè)計(jì)方法。在此技術(shù)上,為了提高效率和簡化難度,利用嵌入式系統(tǒng)的優(yōu)勢引入具有高度可讀性的Python解釋器語言,并且利用Web服務(wù)器基于瀏覽器的工具包進(jìn)行訪問,其中就包含了結(jié)合開源框架Jupyter-notebook在ARM處理器上運(yùn)行交互式Python內(nèi)核實(shí)現(xiàn)SoC編程操作的設(shè)計(jì)方法。

本文根據(jù)卷積神經(jīng)網(wǎng)絡(luò)層與層之間的數(shù)據(jù)依賴關(guān)系,對(duì)前向傳播的卷積神經(jīng)網(wǎng)絡(luò)以同步數(shù)據(jù)流方式進(jìn)行設(shè)計(jì);對(duì)32位浮點(diǎn)數(shù)進(jìn)行量化壓縮,在精確率可接受的情況下實(shí)現(xiàn)16位定點(diǎn)數(shù)轉(zhuǎn)換;最后利用Overlay的設(shè)計(jì)方法部署FPGA部分,協(xié)調(diào)使用嵌入式SoC的邏輯資源。

2 模型設(shè)計(jì)

2.1 系統(tǒng)設(shè)計(jì)

本文設(shè)計(jì)的整體架構(gòu)為ARM處理器部分和FPGA邏輯資源部分。帶有Python解釋器以及Jupyter-notebook工具包的Linux系統(tǒng),可以調(diào)用高級(jí)接口來控制特征圖加載到DDR內(nèi)存上,經(jīng)過卷積神經(jīng)網(wǎng)絡(luò)模型計(jì)算后的數(shù)據(jù)交換由AXI_DMA模塊負(fù)責(zé),并將輸出結(jié)果顯示在電腦上。

圖2 系統(tǒng)整體結(jié)構(gòu)框圖

2.2 定點(diǎn)數(shù)量化

Han等[5]提出的深度壓縮即通過裁剪訓(xùn)練量化和霍夫曼編碼實(shí)現(xiàn)方法,實(shí)現(xiàn)難度大,不適合小規(guī)模計(jì)算樣本。蔡瑞初等[6]設(shè)計(jì)了動(dòng)態(tài)定點(diǎn)量化小數(shù)位數(shù)和精確率之間的平衡的方法,即反向傳播時(shí)對(duì)網(wǎng)絡(luò)進(jìn)行微調(diào),計(jì)算量有一定減少,但對(duì)于識(shí)別網(wǎng)絡(luò)的計(jì)算模型研究缺乏。以上量化方法對(duì)于嵌入式SoC下的卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算沒有較好的解決方法。本文分析了文獻(xiàn)[7]在嵌入式SoC平臺(tái)下實(shí)現(xiàn)一個(gè)卷積層時(shí)消耗資源情況,如表1所示,可以看出這樣的設(shè)計(jì)在目前的硬件平臺(tái)上不可能實(shí)現(xiàn)整個(gè)卷積神經(jīng)網(wǎng)絡(luò)。

表1 浮點(diǎn)數(shù)卷積層消耗資源展示

本文繼續(xù)研究發(fā)現(xiàn),通常用位寬、步長和動(dòng)態(tài)范圍3個(gè)參數(shù)來表示浮點(diǎn)轉(zhuǎn)定點(diǎn)的依賴關(guān)系:

Range≈Stepsize·2Bitwidth

(5)

于是提出當(dāng)給出定點(diǎn)的位寬后,在大的動(dòng)態(tài)范圍下和小的分辨率之間權(quán)衡量化誤差關(guān)系是解決問題的關(guān)鍵的想法。文獻(xiàn)[8-9]給出了各種輸入分布的最優(yōu)對(duì)稱均勻量化器的步長表,分析表中內(nèi)容可知隨著輸入分布的峰值增加量化效率降低,和高斯分布具有相似性。所以在對(duì)預(yù)訓(xùn)練的浮點(diǎn)數(shù)據(jù)分析后,確定每層的權(quán)重、偏置和激活函數(shù),本文提出一種浮點(diǎn)數(shù)量化為定點(diǎn)數(shù)的方法:

s=ξ·Stepsize(β)

(6)

n=-og2s

(7)

式中:Stepsize(β)對(duì)應(yīng)量化位寬的最佳步長,ξ是量化有效標(biāo)準(zhǔn)差(因?yàn)樵诶硐肓憔蹈咚狗植枷铝炕档臉?biāo)準(zhǔn)偏差為σ,并且ξ≥σ,本文采用ξ=3σ的準(zhǔn)確率數(shù)值),s是計(jì)算所得的步長,n表示小數(shù)位數(shù)。式(7)以2為底計(jì)算對(duì)數(shù),應(yīng)用舍入函數(shù)取舍,計(jì)算小數(shù)位數(shù),對(duì)最終結(jié)果進(jìn)行移位操作將32位轉(zhuǎn)換成16位。

在實(shí)驗(yàn)中得出與32位浮點(diǎn)算法相比,F(xiàn)PGA上的定點(diǎn)算法需要較少的DSP和LUT,并且簡單的定點(diǎn)算法操作可以在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行完成。

2.3 卷積層設(shè)計(jì)和數(shù)據(jù)流優(yōu)化

將復(fù)雜的卷積運(yùn)算轉(zhuǎn)換成乘加法運(yùn)算,可以在FPGA中有效執(zhí)行。為了減少緩沖區(qū)的使用和提高計(jì)算的吞吐量,本文提出一種交錯(cuò)計(jì)算的方法,如圖3所示。

圖3 FPGA實(shí)現(xiàn)矩陣乘法原理圖

在3×3的劃窗操作后,本文設(shè)計(jì)將特征圖提取在存儲(chǔ)單元奇數(shù)模塊,權(quán)重值提取到存儲(chǔ)單元偶數(shù)模塊。在每個(gè)時(shí)鐘周期的激勵(lì)下,將運(yùn)算數(shù)串行輸出到寄存器Ai和Bi中。普通單個(gè)矩陣乘法器負(fù)責(zé)9個(gè)卷積數(shù)和9個(gè)權(quán)重?cái)?shù)的乘加樹計(jì)算,因此計(jì)算會(huì)消耗較多的DSP資源。本文提出不改變滑窗計(jì)算過程并且減少DSP使用個(gè)數(shù)的乘加樹計(jì)算方法。圖3可理解為單個(gè)計(jì)算單元設(shè)計(jì)了6個(gè)DSP組成的3層乘加樹。第1層是3個(gè)乘法器將權(quán)值和卷積數(shù)進(jìn)行乘法計(jì)算。第2層則是級(jí)聯(lián)第一層的計(jì)算結(jié)果,并且共享中間的計(jì)算值進(jìn)行累加計(jì)算。第3層單一的加法器負(fù)責(zé)將上一層輸出的兩個(gè)值求和。最終結(jié)果由ReLU函數(shù)激活送至特征圖緩沖區(qū)。如此在有限的類似設(shè)計(jì)單元中完成卷積計(jì)算。而且在FPGA中每個(gè)階段都是由寄存器組成,不需要等待當(dāng)前計(jì)算完成后將內(nèi)存的數(shù)據(jù)提取到通道A或B,所以在每個(gè)時(shí)鐘周期同時(shí)進(jìn)行輸入和輸出操作大大加速了運(yùn)算過程。

考慮到把所有數(shù)值都提取到BRAM上進(jìn)行計(jì)算是不實(shí)際的,但將數(shù)據(jù)從外部存儲(chǔ)提取再計(jì)算會(huì)影響計(jì)算速度,所以本文提出在設(shè)計(jì)當(dāng)中將輸入的特征圖值存儲(chǔ)在基于LUT的存儲(chǔ)模塊中,權(quán)重值存儲(chǔ)在BRAM的存儲(chǔ)單元里,如此可以加速計(jì)算和節(jié)省資源。偽代碼如下:

staticap_int A[A_COL_MAX][A_ROW_MAX] B[B_COL_MAX][B_ROW_MAX];

#pragmaHLS RESOURCE variable=A

core=RAM_S2P_LUTRAM

#pragmaHLS RESOURCE variable=B core=RAM_S2P_BRAM

for(int ia=0;ia

for(int ib=0;ib

for(int ic=0;ic

for(int id=0;id

sum +=

A[ia][id*B_ROW_MAX/FACTOR+ic]*

B[ib][id*B_ROW_MAX/FACTOR+ic].

通常卷積神經(jīng)網(wǎng)絡(luò)表示為一系列的層,這些層構(gòu)成一個(gè)有向無環(huán)圖模型,這些層的連接是通過高級(jí)描述方案完成。所以本文研究了將有向無環(huán)圖模型映射到硬件的模型即同步數(shù)據(jù)流模型。類似于搭積木將每個(gè)層例化成模塊后相互連接。實(shí)驗(yàn)表明計(jì)算過程實(shí)現(xiàn)了不間斷流水操作,并且輸入即輸出的節(jié)點(diǎn)運(yùn)算方法一定程度上提高了系統(tǒng)的魯棒性,因?yàn)槊總€(gè)層的設(shè)計(jì)都是獨(dú)立地驅(qū)動(dòng)數(shù)據(jù)流,從而形成異構(gòu)流模式,這種輸入輸出模式,輸出數(shù)據(jù)立即流出,而不是緩沖在片上存儲(chǔ)器上,節(jié)省整個(gè)網(wǎng)絡(luò)的內(nèi)存占用。

3 實(shí)驗(yàn)與結(jié)果分析

3.1 實(shí)驗(yàn)環(huán)境

實(shí)驗(yàn)采用Xilinx PYNQ-Z2嵌入式SoC實(shí)驗(yàn)平臺(tái),該平臺(tái)搭載的是xc7z020clg400SoC FPGA芯片,片上有雙核Cortex-A9處理器。FPGA部分主要有BRAM、DSP以及LUT可編程陣列[10]。實(shí)驗(yàn)中的硬件編程環(huán)境為Vivado 2017.4,高層次綜合系統(tǒng)Vivado高層次綜合技術(shù)2017.4;卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和執(zhí)行采用Theano框架。實(shí)驗(yàn)的測試數(shù)據(jù)集是CIFAR-10中的500幅圖片,每幅圖片大小為32×32×3。對(duì)比實(shí)驗(yàn)中,采用Intel i5-4200U低功耗的CPU。在Windows 10操作系統(tǒng)下,以Google Chrome瀏覽器執(zhí)行與嵌入式系統(tǒng)的可視化交互編程。

3.2 實(shí)驗(yàn)結(jié)果

在主頻為100 MHz的工作頻率下,該方法優(yōu)化了對(duì)片上資源的使用,設(shè)計(jì)實(shí)現(xiàn)了16位定點(diǎn)量化,雖然有一些分類精度的損失,但是比Zynqnet的設(shè)計(jì)節(jié)約了88%BRAM、75%的DSP和73%LUT。本文設(shè)計(jì)對(duì)比ZynqNet中對(duì)資源使用如表2所示。

表2 資源消耗以及對(duì)比分析

在3個(gè)計(jì)算平臺(tái)下,對(duì)500幅32×32×3大小的圖片進(jìn)行識(shí)別,計(jì)算速度如表3所示??梢钥闯觯嗤ぷ黝l率下ARM處理器的識(shí)別速度提高了42倍,本文方法的準(zhǔn)確率可達(dá)73.7%,對(duì)比使用CPU計(jì)算浮點(diǎn)數(shù)的準(zhǔn)確率75.2%,這是可以接受的。

表3 不同平臺(tái)的實(shí)驗(yàn)數(shù)據(jù)對(duì)比

4 結(jié) 語

本文提出一種改進(jìn)的基于嵌入式SoC卷積神經(jīng)網(wǎng)絡(luò)CIFAR-10的識(shí)別模型。該模型使用的資源少,功耗低。為了提高FPGA加速方案的準(zhǔn)確率和性能,未來將優(yōu)化FPGA的部署和訓(xùn)練更精確的網(wǎng)絡(luò)模型,以及研究卷積神經(jīng)網(wǎng)絡(luò)針對(duì)層的優(yōu)化設(shè)計(jì)。

猜你喜歡
定點(diǎn)嵌入式卷積
例談圓錐曲線中的定點(diǎn)定值問題
定點(diǎn)幫扶讓村民過上美好生活
解析幾何中定點(diǎn)問題的處理策略
基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
直線過定點(diǎn)的5種特優(yōu)解法
從濾波器理解卷積
電子制作(2019年11期)2019-07-04 00:34:38
基于傅里葉域卷積表示的目標(biāo)跟蹤算法
搭建基于Qt的嵌入式開發(fā)平臺(tái)
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
一種基于卷積神經(jīng)網(wǎng)絡(luò)的性別識(shí)別方法
三江| 汉中市| 郸城县| 雅安市| 习水县| 抚远县| 吉水县| 微博| 临沂市| 尼玛县| 沧州市| 阿城市| 阳东县| 巴塘县| 新民市| 三明市| 内乡县| 临颍县| 开平市| 延安市| 临夏县| 阳泉市| 道真| 洱源县| 泸溪县| 栾川县| 陈巴尔虎旗| 哈尔滨市| 东乌珠穆沁旗| 滦平县| 普宁市| 米泉市| 射洪县| 昌图县| 白水县| 尚志市| 八宿县| 客服| 海安县| 济阳县| 东乡县|