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

        ?

        硬件加速CNN實(shí)時(shí)圖像處理方法

        2020-06-12 09:17:40王威廉康立富
        關(guān)鍵詞:模型

        張 強(qiáng),孫 靜+,王威廉,康立富

        (1.云南大學(xué) 信息學(xué)院,云南 昆明 650500;2.云南師范大學(xué)商學(xué)院 數(shù)據(jù)科學(xué)與工程學(xué)院,云南 昆明 651701)

        0 引 言

        一個(gè)完整的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)包括輸入層、隱藏層和輸出層。隱藏層的每個(gè)神經(jīng)元只與前一層的局部神經(jīng)元相連,并提取該局部域的特征,其每一個(gè)計(jì)算層都由多個(gè)特征映射組成,每個(gè)特征映射是一個(gè)平面,平面上所有神經(jīng)元的權(quán)值相等,輸出層接收來自隱藏層的向量,可設(shè)計(jì)為輸出物體的中心坐標(biāo)、大小和分類[1]。在現(xiàn)有的可參考文獻(xiàn)中,CNN圖像處理大多是在PC端進(jìn)行訓(xùn)練和測(cè)試,基于中央處理單元(central processing unit,CPU)的算法只能順序執(zhí)行,在處理大量數(shù)據(jù)的計(jì)算時(shí),會(huì)帶來明顯的時(shí)間延遲,即使是高性能計(jì)算機(jī)也不能完全保證低延時(shí)的實(shí)時(shí)圖像處理。

        現(xiàn)場(chǎng)可編程門陣列(field programmable gate arrary,F(xiàn)PGA)具備并行結(jié)構(gòu),可同時(shí)高速并行處理數(shù)據(jù),提高圖像處理的實(shí)時(shí)性,廣泛應(yīng)用于邊沿檢測(cè)、灰度轉(zhuǎn)換、閾值檢測(cè)等實(shí)時(shí)圖像處理算法中?;贑NN隱藏層參數(shù)可共享的特點(diǎn),利用FPGA進(jìn)行CNN實(shí)時(shí)圖像處理的硬件加速,即可解決CNN對(duì)PC資源的高依賴、高延時(shí)等缺陷[2,3]。本文對(duì)CNN圖像處理算法的并行執(zhí)行能力進(jìn)行了研究,采用Vivado高層次綜合(high-level synthesis,HLS)實(shí)現(xiàn)了將訓(xùn)練好的CNN模型隱藏層參數(shù)共享,并用FPGA加速CNN實(shí)時(shí)圖像處理。實(shí)驗(yàn)結(jié)果表明,本文提出的方法達(dá)到了預(yù)期目的,該方法識(shí)別國(guó)家標(biāo)注技術(shù)研究所(mixed national institute of standards and technology,MNIST)庫(kù)中10 000例手寫體樣本僅需8.69 s,而傳統(tǒng)PC端識(shí)別相同樣本的時(shí)間為30 s。此方法具有設(shè)計(jì)周期短、設(shè)計(jì)封裝為IP(intellectual property,IP)核后,易跨平臺(tái)移植等優(yōu)勢(shì)。

        1 CNN算法設(shè)計(jì)

        為便于CNN算法的硬件加速實(shí)現(xiàn)圖像實(shí)時(shí)處理的目的,將CNN算法的隱藏層進(jìn)行了自定義設(shè)計(jì),包括兩個(gè)卷積層、兩個(gè)池化層及一個(gè)全連接層,三者在隱藏層中的執(zhí)行順序如圖1所示[4]。

        圖1 CNN隱藏層流程

        本方法設(shè)計(jì)的CNN一共有兩個(gè)卷積層,目的是將局部特征提取出來,leraning-rate_param包含權(quán)重值與偏置值的學(xué)習(xí)率,前者決定分割平面的方向所在,后者決定豎直平面沿著垂直于直線方向移動(dòng)的距離,二者共同決定訓(xùn)練出的特征值與真實(shí)值之間的差距;激活函數(shù)負(fù)責(zé)將上一層網(wǎng)絡(luò)上的輸入映射到輸出端,提供下一層網(wǎng)絡(luò)的輸入向量。在卷積層之間、卷積層與全連接層之間都需要激活函數(shù)實(shí)現(xiàn)向量映射;在兩個(gè)激活函數(shù)之后皆有分別對(duì)應(yīng)的池化層,目的是對(duì)提取的特征值做一次濾波,簡(jiǎn)化網(wǎng)絡(luò)計(jì)算復(fù)雜度,提取主要特征;全連接層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用,將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間,使得輸出層能有更好的圖像視覺效果。

        整個(gè)實(shí)驗(yàn)過程中可以根據(jù)自己的需要調(diào)整CNN隱藏層參數(shù),如圖1花括號(hào)內(nèi)英文變量所表示,根據(jù)識(shí)別效果的收斂性,反饋到卷積層與全連接層中,修改leraning-rate_param、weight_filler、bias_filler等參數(shù)來調(diào)整CNN的訓(xùn)練模型以達(dá)到更好的訓(xùn)練與識(shí)別效果[5]。

        2 CNN算法實(shí)現(xiàn)

        2.1 數(shù)據(jù)集準(zhǔn)備

        卷積神經(jīng)網(wǎng)絡(luò)框架Caffe(convolutional architecture for fast feature embedding)是一種常見的深度學(xué)習(xí)框架,主要應(yīng)用在視頻、圖像處理方面的應(yīng)用上。目前深度學(xué)習(xí)的框架大多運(yùn)行在高性能計(jì)算機(jī)上,以達(dá)到更快的訓(xùn)練與識(shí)別速度,在PC端搭建和配置Caffe是訓(xùn)練CNN模型的基礎(chǔ),得到訓(xùn)練好的CNN模型caffemodel.h5即可進(jìn)行硬件加速CNN實(shí)時(shí)圖像處理[6]。

        在Caffe框架下,可以直接運(yùn)行MNIST數(shù)據(jù)庫(kù)中手寫體數(shù)字?jǐn)?shù)據(jù)集的下載腳本get_mnist.sh即可得到如圖2所示的4個(gè)壓縮文件,且解壓后皆是以向量與多維度矩陣文件格式存儲(chǔ)的文件。

        圖2 MNIST手寫體數(shù)據(jù)集壓縮包

        前兩個(gè)壓縮文件分別是CNN訓(xùn)練時(shí)使用的60 000例圖像文件與對(duì)應(yīng)的標(biāo)簽文件;后兩個(gè)壓縮文件分別是測(cè)試CNN模型caffemodel.h5時(shí)使用的10 000例圖像文件與對(duì)應(yīng)的標(biāo)簽文件,圖像文件共由5個(gè)部分組成,見表1,標(biāo)簽文件由3個(gè)部分組成,見表2。

        表1 數(shù)據(jù)集圖像文件的組成

        表2 數(shù)據(jù)集標(biāo)簽文件的組成

        由于上述4個(gè)文件為二進(jìn)制原始數(shù)據(jù)文件,不能在Caffe中直接使用,可以直接運(yùn)行Caffe環(huán)境下自帶的create_mnist.sh腳本文件,將原始數(shù)據(jù)制作成為Caffe可以識(shí)別的lmdb格式文件,即可在Caffe中直接使用。

        2.2 多分類模型實(shí)現(xiàn)

        Caffe環(huán)境下新建兩個(gè)腳本,一個(gè)是訓(xùn)練用的CNN網(wǎng)絡(luò)結(jié)構(gòu)腳本two_conv_train.prototxt,另一個(gè)是訓(xùn)練用的CNN參數(shù)腳本two_conv_train_solver.prototxt,前者按照?qǐng)D1所示流程編寫,后者主要設(shè)置訓(xùn)練次數(shù)、模型參數(shù)、最大迭代次數(shù)及模型輸出參數(shù)等,具體參數(shù)設(shè)置參照表3[7]。

        表3 CNN網(wǎng)絡(luò)訓(xùn)練參數(shù)

        設(shè)置完成后,可直接運(yùn)行two_conv_train_ex_solver.prototxt腳本,經(jīng)過多次調(diào)參并訓(xùn)練完成后,可得到two_conv_train_iter_70000.caffemodel.h5。在PC端利用Intel i7-8700 CPU測(cè)試訓(xùn)練好的CNN網(wǎng)絡(luò)模型,可達(dá)到0.99的準(zhǔn)確率,耗時(shí)30 s。如圖3所示,此caffemodel.h5模型即為優(yōu)化后的CNN模型文件,可以在硬件加速CNN實(shí)時(shí)圖像處理中得以應(yīng)用[8]。

        圖3 PC端CNN識(shí)別手寫體結(jié)果

        2.3 模型參數(shù)提取

        根據(jù)上述得到的caffemodel.h5模型,編寫提參腳本直接提取模型參數(shù)的權(quán)重值和偏置值,并與卷積核數(shù)保持對(duì)應(yīng)一致,各卷積層與全連接層的權(quán)重值與偏置值的個(gè)數(shù)見表4。

        表4 隱藏層內(nèi)各子分類的權(quán)重值

        將caffemodel.h5模型讀取出的權(quán)重值和偏置值參數(shù)保存為conv1p.txt、conv2p.txt、FC.txt3個(gè)文檔,分別對(duì)應(yīng)卷積層1、卷積層2、全連接層的模型參數(shù),在Vivado HLS中以C++語言讀取模型參數(shù)的文本文檔,供硬件加速CNN實(shí)時(shí)圖像處理使用。

        3 硬件加速實(shí)現(xiàn)

        3.1 卷積層的硬件化

        本方法設(shè)計(jì)的CNN網(wǎng)絡(luò)具有兩個(gè)卷積層、兩個(gè)池化層、一個(gè)全連接層、兩次激活函數(shù),包含6個(gè)5*5的卷積核,所以在每一個(gè)卷積層內(nèi)采用6個(gè)循環(huán)遍歷卷積核行、卷積核列、圖像通道、圖像高度、圖像寬度、卷積核的點(diǎn),可用圖4所示代碼表示[9]。

        圖4 硬件化的CNN模型設(shè)計(jì)

        每一層卷積層內(nèi)一共使用了5個(gè)乘法器并行實(shí)現(xiàn),在CNN的硬件加速中,將乘法器固化成硬件的核,以方便后續(xù)調(diào)用,每一個(gè)乘法器的核心代碼如圖5所示[10]。乘法器可固化為硬件核,本質(zhì)上是將輸入的數(shù)據(jù)直接以寄存器的方式賦值,從上至下使用了4個(gè)for循環(huán)進(jìn)行矩陣的轉(zhuǎn)換,且添加了兩個(gè)#pragmaHLSPIPELINE一級(jí)流水的約束關(guān)鍵字,通過允許并發(fā)執(zhí)行操作來減少函數(shù)或循環(huán)的啟動(dòng)間隔。整個(gè)卷積層使用6個(gè)for循環(huán)實(shí)現(xiàn)卷積核與圖像的卷積運(yùn)算,再使用5個(gè)乘法器核并行實(shí)現(xiàn)累加得到該卷積層的結(jié)果,并輸出到激活函數(shù)[11]。

        圖5 基于Vivado HLS的乘法器原型設(shè)計(jì)

        3.2 CNN的硬件加速實(shí)現(xiàn)

        在Vivado HLS中用C++編寫讀取caffemodel.h5模型參數(shù)文檔,用于輸入圖像在卷積層中的調(diào)用,從輸入層導(dǎo)入MNIST手寫體數(shù)據(jù)集之后,各層間的流程如圖6所示。

        將28*28大小的輸入數(shù)據(jù)用卷積層1的參數(shù)進(jìn)行卷積,并作為結(jié)構(gòu)體c1輸出;將結(jié)構(gòu)體c1的輸入向量經(jīng)過Relu函數(shù)處理,得到大于0的數(shù)據(jù)再通過池化層1處理得到結(jié)構(gòu)體s2。

        同理再一次將結(jié)構(gòu)體s2輸入到第二層卷積層卷積、激活函數(shù)Relu處理及池化層2處理,得到的結(jié)果數(shù)據(jù)保存為結(jié)構(gòu)體s4;將s4輸入到全連接層進(jìn)行全局變量提取,再經(jīng)過輸出層處理即可得到識(shí)別出的手寫體數(shù)字[12]。

        圖6 硬件加速CNN的模型設(shè)計(jì)

        3.3 基于Vivado HLS測(cè)試CNN的硬件加速

        硬件加速CNN的TestBench文件的編寫,遵從Vivado HLS格式規(guī)范,按照如圖7所示的流程進(jìn)行編寫。

        圖7中,輸入層的數(shù)據(jù)集是來自MNIST的手寫體測(cè)試數(shù)據(jù)集,分別是t10k-images-idx3-ubyte與t10k-label-idx1-ubyte兩個(gè)二進(jìn)制數(shù)據(jù)文件,讀取的數(shù)據(jù)集參數(shù)即可直接進(jìn)入硬件加速CNN算法中運(yùn)算[13]。測(cè)試數(shù)據(jù)集在硬件加速CNN算法中的運(yùn)算,是將卷積層的各個(gè)卷積核利用FPGA并行實(shí)現(xiàn)的方式,在相同時(shí)鐘周期到來時(shí),全部卷積核同時(shí)與測(cè)試數(shù)據(jù)集參數(shù)執(zhí)行完卷積運(yùn)算,得到的卷積結(jié)果也可以在相同時(shí)鐘周期內(nèi)完成激活函數(shù)、池化層的運(yùn)算,進(jìn)而在下一個(gè)時(shí)鐘周期來臨時(shí),可繼續(xù)進(jìn)行再一次的卷積、激活函數(shù)、池化的循環(huán)運(yùn)算,直到輸出結(jié)果并結(jié)束運(yùn)算。將經(jīng)FPGA并行實(shí)現(xiàn)CNN圖像處理得到的輸出結(jié)果進(jìn)行標(biāo)簽判斷,將正確的識(shí)別結(jié)果與錯(cuò)誤的識(shí)別結(jié)果及數(shù)量輸出,完成整個(gè)硬件加速CNN的圖像處理。

        圖7 硬件加速CNN仿真文件編寫流程

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

        在Vivado HLS中編譯C++編寫的硬件加速CNN圖像處理的算法,可以直接轉(zhuǎn)換成RTL級(jí)硬件電路,同時(shí)封裝為可以在Vivado中直接調(diào)用的Verilog IP核,方便日后硬件加速CNN圖像處理算法移植到高性能處理平臺(tái)Zynq片上系統(tǒng)(system on chip,SOC)中。

        4.1 結(jié) 果

        在Vivado HLS中利用C++語言編寫硬件加速CNN圖像處理算法,通過運(yùn)行硬件加速CNN算法識(shí)別MNIST數(shù)據(jù)庫(kù)中的手寫體數(shù)字,得出如圖8所示的結(jié)果,同時(shí)Vivado HLS串口打印出實(shí)現(xiàn)本方法的時(shí)間消耗見表5,F(xiàn)PGA模塊資源消耗見表6。

        從識(shí)別結(jié)果中可以看出,標(biāo)簽數(shù)一共有7種,識(shí)別正確的也是7種,錯(cuò)誤識(shí)別的標(biāo)簽是0個(gè),與CNN在PC端的測(cè)試準(zhǔn)確率0.99基本吻合,可見本方法在識(shí)別效果上與PC端的效果幾乎一致。

        圖8 硬件加速CNN識(shí)別手寫體數(shù)字結(jié)果

        4.2 結(jié)果分析

        從本方法識(shí)別MNIST數(shù)據(jù)庫(kù)中10 000例手寫體數(shù)據(jù)樣本所消耗的時(shí)間來看,PC端利用Intel i7-8700 CPU測(cè)試訓(xùn)練好的網(wǎng)絡(luò)耗時(shí)30 s,本次實(shí)驗(yàn)結(jié)果產(chǎn)生的8.69 s耗時(shí)降低了77.7%的時(shí)長(zhǎng),單例樣本的識(shí)別時(shí)長(zhǎng)為0.87 ms,低于人眼舒適放松時(shí)長(zhǎng)1/24 s[14]。此外,表6所示塊狀RAM和FF模塊占用率達(dá)到20%左右,數(shù)字信號(hào)處理器模塊、顯示查找表占用率達(dá)到了67%左右,而本方法在Vivado HLS中選擇的芯片是Zynq 7020,所以均在Zynq 7020可編程邏輯(progarmmable logic,PL)承受范圍內(nèi),較好的實(shí)現(xiàn)了硬件加速CNN實(shí)時(shí)圖像處理。

        表5 硬件加速CNN圖像處理所消耗的時(shí)間

        表6 硬件加速CNN圖像處理的各模塊資源消耗情況

        5 結(jié)束語

        本方法實(shí)現(xiàn)了CNN圖像處理的硬件加速,8.69 s的耗時(shí)、Zynq 7020芯片硬件模塊占用率在20%至68%之間,相比PC端30 s的時(shí)間消耗、PC端資源的高依賴,硬件加速CNN圖像處理具有高實(shí)時(shí)性、低成本的優(yōu)點(diǎn)。同時(shí)將硬件加速CNN圖像處理的C++程序封裝打包為Verilog IP,方便以后移植到Zynq SOC中去,應(yīng)用到更多的領(lǐng)域。

        本文在Vivado HLS中,設(shè)計(jì)實(shí)現(xiàn)了硬件加速CNN圖像處理,通過測(cè)試驗(yàn)證得到與PC端相似的識(shí)別效果,彌補(bǔ)了CNN圖像處理對(duì)PC資源高依賴、高延時(shí)的缺陷,為CNN圖像處理的硬件加速推廣應(yīng)用提供了可參考的方法。

        猜你喜歡
        模型
        一半模型
        一種去中心化的域名服務(wù)本地化模型
        適用于BDS-3 PPP的隨機(jī)模型
        提煉模型 突破難點(diǎn)
        函數(shù)模型及應(yīng)用
        p150Glued在帕金森病模型中的表達(dá)及分布
        函數(shù)模型及應(yīng)用
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        3D打印中的模型分割與打包
        亚洲码无人客一区二区三区| 狼色精品人妻在线视频| 欧美中文在线观看| 国产亚洲三级在线视频| 色播视频在线观看麻豆| 国产综合精品| 粗一硬一长一进一爽一a级| 3亚洲日韩在线精品区| 成人av资源在线观看| 爱情岛论坛亚洲永久入口口| 男女性高爱潮免费观看| 中文字幕亚洲无线码a| 国产色第一区不卡高清| 成人免费无码大片a毛片抽搐色欲 日本动漫瀑乳h动漫啪啪免费 | 男人扒开女人双腿猛进女人机机里| 亚洲熟妇中文字幕日产无码| 一区二区三区亚洲视频| 无码区a∨视频体验区30秒| 欧美人与物videos另类xxxxx| 一区二区三区四区亚洲综合| 亚洲午夜久久久久中文字幕久 | 国产无套粉嫩白浆在线| 欧美成人一区二区三区在线观看 | WWW拍拍拍| 国产精品一区二区久久久av| 麻豆tv入口在线看| 在线高清精品第一区二区三区| 日本少妇比比中文字幕| 99e99精选视频在线观看| 午夜成人精品福利网站在线观看 | 日本成本人三级在线观看| 久久尤物av天堂日日综合| 中文字幕有码在线人妻| 欧美成人aaa片一区国产精品| 福利网址在线观看| 国产av一区二区内射| 国产乱子伦精品无码专区| 无码人妻精品一区二区三区在线| 亚洲精品国产福利在线观看| 风韵丰满熟妇啪啪区99杏| 撕开奶罩揉吮奶头视频|