亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2020-03-13 10:56:34肖金球顧敏明
        計算機應(yīng)用與軟件 2020年3期
        關(guān)鍵詞:嵌入式資源實驗

        孫 磊 肖金球 夏 禹 顧敏明

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

        0 引 言

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

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

        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手寫識別模型。

        圖1 LeNet-5手寫識別模型

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

        (1)

        (2)

        (3)

        foutput=MAX(fin,0)

        (4)

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

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

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

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

        2 模型設(shè)計

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

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

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

        2.2 定點數(shù)量化

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

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

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

        Range≈Stepsize·2Bitwidth

        (5)

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

        s=ξ·Stepsize(β)

        (6)

        n=-og2s

        (7)

        式中:Stepsize(β)對應(yīng)量化位寬的最佳步長,ξ是量化有效標準差(因為在理想零均值高斯分布下量化值的標準偏差為σ,并且ξ≥σ,本文采用ξ=3σ的準確率數(shù)值),s是計算所得的步長,n表示小數(shù)位數(shù)。式(7)以2為底計算對數(shù),應(yīng)用舍入函數(shù)取舍,計算小數(shù)位數(shù),對最終結(jié)果進行移位操作將32位轉(zhuǎn)換成16位。

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

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

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

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

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

        考慮到把所有數(shù)值都提取到BRAM上進行計算是不實際的,但將數(shù)據(jù)從外部存儲提取再計算會影響計算速度,所以本文提出在設(shè)計當中將輸入的特征圖值存儲在基于LUT的存儲模塊中,權(quán)重值存儲在BRAM的存儲單元里,如此可以加速計算和節(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)成一個有向無環(huán)圖模型,這些層的連接是通過高級描述方案完成。所以本文研究了將有向無環(huán)圖模型映射到硬件的模型即同步數(shù)據(jù)流模型。類似于搭積木將每個層例化成模塊后相互連接。實驗表明計算過程實現(xiàn)了不間斷流水操作,并且輸入即輸出的節(jié)點運算方法一定程度上提高了系統(tǒng)的魯棒性,因為每個層的設(shè)計都是獨立地驅(qū)動數(shù)據(jù)流,從而形成異構(gòu)流模式,這種輸入輸出模式,輸出數(shù)據(jù)立即流出,而不是緩沖在片上存儲器上,節(jié)省整個網(wǎng)絡(luò)的內(nèi)存占用。

        3 實驗與結(jié)果分析

        3.1 實驗環(huán)境

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

        3.2 實驗結(jié)果

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

        表2 資源消耗以及對比分析

        在3個計算平臺下,對500幅32×32×3大小的圖片進行識別,計算速度如表3所示??梢钥闯?,相同工作頻率下ARM處理器的識別速度提高了42倍,本文方法的準確率可達73.7%,對比使用CPU計算浮點數(shù)的準確率75.2%,這是可以接受的。

        表3 不同平臺的實驗數(shù)據(jù)對比

        4 結(jié) 語

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

        猜你喜歡
        嵌入式資源實驗
        記一次有趣的實驗
        基礎(chǔ)教育資源展示
        一樣的資源,不一樣的收獲
        做個怪怪長實驗
        資源回收
        搭建基于Qt的嵌入式開發(fā)平臺
        資源再生 歡迎訂閱
        資源再生(2017年3期)2017-06-01 12:20:59
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        NO與NO2相互轉(zhuǎn)化實驗的改進
        實踐十號上的19項實驗
        太空探索(2016年5期)2016-07-12 15:17:55
        免费av在线国模| 亚洲狠狠婷婷综合久久久久| 亚洲日韩精品一区二区三区| 中文字幕日本最新乱码视频| 国产乱人伦真实精品视频| 精品奇米国产一区二区三区| 亚洲偷自拍国综合第一页| 国产午夜福利片| 久久这里只精品国产99热| 亚洲av一二三又爽又爽又色| 国产乱码精品一区二区三区久久 | 国产白浆流出一区二区| 国产农村妇女精品一区| 欧美最大胆的西西人体44| 欧美在线播放一区二区| 午夜精品一区二区三区视频免费看| 日韩一区av二区三区| 国产精品第一国产精品| 国产欧美精品一区二区三区,| 日韩精品高清不卡一区二区三区| 青青手机在线观看视频| 欧美交换配乱吟粗大25p| 中文字幕亚洲精品第1页| 亚洲av日韩精品一区二区| 国产精品区一区二区三在线播放 | 人妻少妇久久久久久97人妻| 国产精品成人av在线观看| 国产精品麻豆A在线播放| 亚洲精品一区三区三区在线| 久久香蕉国产线熟妇人妻| 久久91综合国产91久久精品| 久久精品女人天堂av麻| av无码电影一区二区三区| 欧美亚洲国产精品久久高清| 蜜桃av噜噜一区二区三区香| 男女交射视频免费观看网站| 欧洲freexxxx性少妇播放| 亚洲一区二区三区av在线免费| 国产精品一区二区久久蜜桃| 吃奶呻吟打开双腿做受视频| 欧美成人久久久免费播放|