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

        ?

        基于FPGA和CNN的漢字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2019-09-13 02:59:12潘思園
        關(guān)鍵詞:定點(diǎn)運(yùn)算卷積

        潘思園,王 永,黃 魯

        (中國科學(xué)技術(shù)大學(xué) 微電子學(xué)院,安徽 合肥 230026)

        0 引 言

        近年來根據(jù)研究表明,神經(jīng)網(wǎng)絡(luò)能夠在許多領(lǐng)域中執(zhí)行各種任務(wù),包括圖像識別、音頻和視頻處理與分析等。用于計(jì)算機(jī)視覺的大多數(shù)現(xiàn)代神經(jīng)網(wǎng)絡(luò)架構(gòu)都包括卷積層,因此其被稱為卷積神經(jīng)網(wǎng)絡(luò)(CNN)。CNN具有高計(jì)算要求,深度神經(jīng)網(wǎng)絡(luò)對計(jì)算要求更高。在移動設(shè)備和嵌入式系統(tǒng)[1]中同樣需要使用深度卷積神經(jīng)網(wǎng)絡(luò),如自動駕駛汽車[2]、醫(yī)療設(shè)備中的視頻處理[3]等。這就需要高精度和實(shí)時物體識別的能力。然而CPU通常不夠快,F(xiàn)PGA相較CPU有更快的處理速度,是用硬件加速CNN的最佳選擇。目前在FPGA上搭建的文字識別的系統(tǒng)有:基于BP神經(jīng)網(wǎng)絡(luò)的FPGA實(shí)現(xiàn)[4]和基于循環(huán)切分法的FPGA實(shí)現(xiàn)[5],但前者的參數(shù)量過多,速度較慢,后者的準(zhǔn)確度不高。

        本文基于高性能CNN-VGG16[6]進(jìn)行較大調(diào)整和改進(jìn),在TensorFlow框架下訓(xùn)練出成熟漢字識別CNN網(wǎng)絡(luò),其準(zhǔn)確率高達(dá)98.36%。同時,通過卷積核復(fù)用、浮點(diǎn)數(shù)定點(diǎn)化等硬件化方法,將CNN前向通道搭建到FPGA上。最后,在FPGA上輸入待識別的漢字得到判斷結(jié)果。該網(wǎng)絡(luò)速度相較于CPU提高了6.76倍,并取得了幾乎無損的97.58%的正確率。

        1 CNN的搭建和訓(xùn)練

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

        選取casia中文手寫數(shù)據(jù)庫[7]用于文中的訓(xùn)練和測試。如表1所示,casia數(shù)據(jù)集是由模式識別國家重點(diǎn)實(shí)驗(yàn)室分享,來源于300余人書寫的用于評估標(biāo)準(zhǔn)特征的機(jī)器學(xué)習(xí)和分類算法的中文手寫數(shù)據(jù)集。其中離線手寫數(shù)據(jù)集為HWDB1.0和HWDB1.1,在線手寫數(shù)據(jù)集為OLHWDB1.0和OLHWDB1.1。選取離線手寫數(shù)據(jù)HWDB1.1中的20個漢字,分別為:一,二,三,四,五,六,七,八,九,十,東,南,西,北,上,下,左,右,萬,丈。

        表1 casia數(shù)據(jù)集

        為了使該網(wǎng)絡(luò)對真實(shí)的攝像頭圖片更加友好,這里將ov5640采集的圖片也加入到數(shù)據(jù)集進(jìn)行該網(wǎng)絡(luò)訓(xùn)練。每個漢字一共拍攝了50張,并對圖片進(jìn)行顏色反轉(zhuǎn)、旋轉(zhuǎn)、隨機(jī)添加0%~10%的噪音等方法進(jìn)行數(shù)據(jù)增強(qiáng)。把320×240的圖片縮放為32×32再放進(jìn)神經(jīng)網(wǎng)絡(luò)一起訓(xùn)練,使得訓(xùn)練出的網(wǎng)絡(luò)更加適應(yīng)真實(shí)環(huán)境。采集圖片與數(shù)據(jù)集圖片對比如圖1、圖2所示。

        圖1 ov5640采集圖片

        圖2 數(shù)據(jù)集圖片

        1.2 模型搭建訓(xùn)練結(jié)果

        經(jīng)過反復(fù)訓(xùn)練與結(jié)構(gòu)改進(jìn),最終確定的CNN模型如圖3所示。此CNN結(jié)構(gòu)共有一個輸入層、六個卷積層、一個全連接以及一個輸出識別結(jié)果的softmax分類層。網(wǎng)絡(luò)全部采用3×3的卷積核。最后一層采用全局池化,其余層均采用2×2最大池化核。由于卷積核可以擴(kuò)大通道數(shù),池化可以縮小特征圖的大小,可以在模型架構(gòu)搭建得更深的同時,放緩計(jì)算量的增加,并且獲得更大的感受野。每一層的尺寸和計(jì)算參數(shù)如表2所示,可以看出90%以上的計(jì)算量都集中在卷積層。由于在最后一層的卷積層后面加入全局池化,所以大大降低了全連接層的參數(shù)。

        圖3 CNN網(wǎng)絡(luò)模型結(jié)構(gòu)

        網(wǎng)絡(luò)層輸出尺寸參數(shù)數(shù)量權(quán)重/bias各層計(jì)算量/FLOPSinput32×32×1——conv132×32×872/873 728conv232×32×8576/8589 824pool116×16×8——conv316×16×161 152/16294 912conv416×16×162 304/16589 824pool28×8×16——conv58×8×324 608/32294 912conv68×8×329 216/3258 824global_max_pooling1×1×32——dense21672/21672Softmax21——總計(jì)—18 600/1332 433 696

        通過使用TensorFlow來進(jìn)行網(wǎng)絡(luò)訓(xùn)練,設(shè)置學(xué)習(xí)率learning rate為0.001,并且選擇SGD優(yōu)化器算法。經(jīng)過200次迭代訓(xùn)練后,最終可以實(shí)現(xiàn)98.36%測試集準(zhǔn)確率,模型的準(zhǔn)確率如圖4所示。

        圖4 模型準(zhǔn)確率

        1.3 定點(diǎn)計(jì)算實(shí)施

        通常,在CPU上搭建的神經(jīng)網(wǎng)絡(luò)均采用浮點(diǎn)數(shù)進(jìn)行計(jì)算。當(dāng)在硬件上實(shí)現(xiàn)時,由于難以控制浮點(diǎn)數(shù)的尾數(shù)和各種操作的指數(shù),通常采用定點(diǎn)數(shù)進(jìn)行計(jì)算。

        考慮到本網(wǎng)絡(luò)第一層卷積,輸入是二維矩陣32×32,其值為[0;1)(對原始圖片進(jìn)行歸一化處理后)。對于3×3卷積,第二層中某個特征值(i,j)可以如下計(jì)算:

        (1)

        由于權(quán)重ωi,j和偏差b已知,可以得到第二層輸入的最小值(mn)和最大值(mx)。設(shè)M=max(|mn|,|mx|)。將ωi,j和b除以M,則對于任意輸入數(shù)據(jù),可保證第二層上的值不超過1,稱M為卷積層的縮減系數(shù)。對于后面的每一層,都使用相同的方法,即可保證神經(jīng)網(wǎng)絡(luò)每一層輸入的值始終∈[-1;1],每一層的衰減系數(shù)見表3。

        表3:每一層最大值和最小值及衰減系數(shù)

        最后一層加入的是Softmax[8]函數(shù),公式如下:

        (2)

        雖然在過程中對權(quán)值的大小進(jìn)行了改變,進(jìn)而改變了最后的輸出,但由于最后的分類函數(shù)是Softmax,因而最后一層神經(jīng)元大小的相對位置沒有改變,所以不影響最終的輸出結(jié)果。

        在對每一層執(zhí)行以上縮減方法之后,可以確切地知道每一層值的范圍,即可以從浮點(diǎn)運(yùn)算轉(zhuǎn)移到定點(diǎn)運(yùn)算,可以用xb=[x×2N],來表示每一位對應(yīng)的值。設(shè)z=x+y,那么加法可以表示為:

        (3)

        乘法可以被表示為:

        (4)

        將乘法結(jié)果除以2N,可以得到實(shí)際的值,硬件實(shí)現(xiàn)為將它移動N位(取高N位),對應(yīng)的硬件電路如圖5所示。

        圖5 定點(diǎn)化硬件電路

        N為數(shù)據(jù)位寬,M為最大卷積核的尺寸,這里為9(3×3)。

        使用帶卷積塊的定點(diǎn)計(jì)算時,有兩種不同的方法:

        (1)在每次加法和乘法的基本運(yùn)算后舍入;

        (2)在每層卷積運(yùn)算后進(jìn)行全精度計(jì)算和舍入。

        實(shí)驗(yàn)對比后發(fā)現(xiàn),在每層卷積運(yùn)算后舍入會取得更高的準(zhǔn)確度和更低的功耗。因此,本文最終選擇在卷積運(yùn)算最后進(jìn)行全精度的計(jì)算和舍入。

        不同權(quán)重位寬[9-10]對應(yīng)的準(zhǔn)確率如圖6所示,在充分考慮識別精度和定點(diǎn)位寬資源消耗之后,文中最終確定11 bit的數(shù)據(jù)。相對于32 bit的浮點(diǎn)數(shù),模型參數(shù)的儲存量可以下降到原來的0.34。

        圖6 不同權(quán)重精度對應(yīng)的準(zhǔn)確率

        即該定點(diǎn)化方法處理后的網(wǎng)絡(luò)與浮點(diǎn)數(shù)的網(wǎng)絡(luò)等效工作,但定點(diǎn)化后的網(wǎng)絡(luò)參數(shù)量和計(jì)算量均大大減少,數(shù)據(jù)帶寬和計(jì)算效率顯著提高,更利于硬件實(shí)現(xiàn)。

        2 CNN硬件設(shè)計(jì)及實(shí)現(xiàn)

        2.1 系統(tǒng)框圖

        CNN前向通道在FPGA上搭建的整體流程如圖7所示,相機(jī)拍攝的照片由圖像采集模塊采集,并將圖像信息存儲到DDR3中。從320×240的圖像中裁剪出224×224像素的中心部分,進(jìn)而得到需要的圖像尺寸32×32。224×224的圖像被分成7×7塊,計(jì)算這些塊中的每一個平均值,并在32×32圖像中形成對應(yīng)的像素。圖像降采樣算法簡單,降采樣后精度并無損失,并能將圖像裁剪到合適尺寸。

        圖7 數(shù)據(jù)流程圖

        2.2 卷積神經(jīng)網(wǎng)絡(luò)加速器硬件實(shí)現(xiàn)

        卷積神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)如圖8所示,主要包括處理單元(CU)、片上緩沖(database)、卷積層、池化層、全連接層、激活函數(shù)(ReLU)和控制數(shù)據(jù)流的狀態(tài)機(jī)(FSM)。CU是加速器的基本單元。圖像數(shù)據(jù)存放在外部DDR中,經(jīng)過預(yù)處理縮放到32×32再送進(jìn)加速器計(jì)算。由于FPGA片上資源有限,卷積計(jì)算中間的特征圖需要先緩存于片上Buffer中,再送進(jìn)CU。這里使用雙Buffer來實(shí)現(xiàn)流水線操作,提高數(shù)據(jù)計(jì)算效率。

        由Memorycontrol模塊控制卷積計(jì)算的輸入數(shù)據(jù)和輸出數(shù)據(jù)的緩存。狀態(tài)機(jī)(FSM)控制不同模塊的調(diào)用,來保證卷積核的復(fù)用。最后通過一個ReLU函數(shù)實(shí)現(xiàn)該卷積層的輸出。

        圖8 神經(jīng)網(wǎng)絡(luò)加速器框圖

        卷積單元(CU)的硬件實(shí)現(xiàn)如圖9所示。其中包含9個PE,PE的功能是把輸入一個特征值和權(quán)重系數(shù)相乘同時通過D觸發(fā)器將該特征值傳遞給下一個PE單元。在不使用乘法時通過EN_ctrl信號把乘法器關(guān)掉從而節(jié)約功耗。

        在3×3的卷積運(yùn)算中權(quán)重數(shù)據(jù)解碼后輸入到CU,特征數(shù)據(jù)通過FIFO輸入到卷積單元中,對應(yīng)執(zhí)行9次乘法運(yùn)算后,將得到的9個值進(jìn)行加法運(yùn)算求得這一部分的和,作為輸出。

        圖9 CU模塊硬件實(shí)現(xiàn)

        2.3 硬件優(yōu)化

        (1)權(quán)重復(fù)用

        在執(zhí)行卷積運(yùn)算時要用到乘法器和加法器,并不停地讀寫特征數(shù)據(jù),過程中將消耗大量的資源。為了提高整體速度,降低資源消耗,本文提出如圖10所示的卷積核復(fù)用。由于網(wǎng)絡(luò)中卷積核大小均為3×3且結(jié)構(gòu)不算復(fù)雜,會提升網(wǎng)絡(luò)整體速度。同時,采用卷積核復(fù)用,降低資源消耗。

        圖10 卷積數(shù)據(jù)流

        (2)移位寄存器

        為執(zhí)行卷積運(yùn)算,需要從輸入圖像獲得9個相鄰像素的值,在下一次獲得的9個像素中,有6個像素已經(jīng)在前一步驟中被接收(參見圖11)。為了縮短數(shù)據(jù)調(diào)用的時間,本文開發(fā)移位寄存器以將新數(shù)據(jù)保持在其輸入端并同時讓舊數(shù)據(jù)退出。因此,每個步驟只需要3個新值而不是9個。

        圖11 移位寄存器操作

        (3)卷積核權(quán)重拼接

        當(dāng)調(diào)用計(jì)算所需的數(shù)據(jù)時,每個值在調(diào)用時都會占據(jù)一個時鐘周期。為了提高數(shù)據(jù)訪問的便利性,在放入RAM之前,數(shù)據(jù)以9個塊的形式堆疊,之后可以在一個同地址訪問它們。利用這種存儲方式,可以在一個時鐘周期內(nèi)執(zhí)行9個權(quán)重數(shù)據(jù)的讀取,從而加速卷積和全連接層的計(jì)算(參見圖12)。

        圖12 卷積核權(quán)重拼接

        Modelsim仿真的波形如圖13所示,w11~w19表示權(quán)重數(shù)據(jù),p11~p19表示圖像數(shù)據(jù)。從圖中可以看出,在一段時間內(nèi)權(quán)重數(shù)據(jù)沒有變化而特征數(shù)據(jù)不斷改變。說明網(wǎng)絡(luò)在執(zhí)行時采用權(quán)重復(fù)用,提高了數(shù)據(jù)帶寬,降低了數(shù)據(jù)頻繁讀寫所帶來的額外功耗。

        圖13 Modelsim仿真圖

        3 系統(tǒng)測試與分析

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

        本實(shí)驗(yàn)使用黑金Sparten6開發(fā)板AX545,AX545采用的是Xilinx的Spartan6系列XC6SLX45-2CSG324的FPGA作為核心處理器,具有豐富的硬件資源和外圍接口。它使連接外圍設(shè)備更容易;開發(fā)板板載了一片高速DDR3 DRAM,256 MB(128 M×16 bit),可用于存儲輸入圖像信息。電路板本身具有2.09 MB的RAM,可用于存儲神經(jīng)網(wǎng)絡(luò)的權(quán)重。

        本文通過攝像頭采集實(shí)際手寫漢字來進(jìn)行檢測,并將實(shí)驗(yàn)結(jié)果與CPU實(shí)現(xiàn)進(jìn)行對比。漢字識別的最小速度應(yīng)該超過30 FPS,即神經(jīng)網(wǎng)絡(luò)應(yīng)在33 ms內(nèi)處理單個圖像。硬件開發(fā)平臺如圖14所示。

        圖14 硬件平臺

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

        實(shí)驗(yàn)結(jié)果展示在圖15中,成功識別出的漢字對應(yīng)的標(biāo)簽顯示在LCD右下角。每個漢字選取50個樣本,測試結(jié)果如表4所示,識別率均在94%以上。

        圖15 實(shí)驗(yàn)結(jié)果展示

        漢字樣本正確識別率/%漢字樣本正確識別率/%東504896一5050100南504794二504998西504998三504896北504794四504896上504998五504896下504896六504998左504794七504794右504794八504794萬504896九504896丈504896十504998

        整個電路工作在100 MHz的時鐘頻率下,項(xiàng)目的資源消耗見表5。從表中可以看出在滿足實(shí)時性要求的同時,DSP資源消耗93.1%,RAM使用率為84.5%。在計(jì)算中所需的乘法器和特征圖存儲空間,是二者消耗較大的主因。

        表5 FPGA資源使用情況

        表6是FPGA實(shí)現(xiàn)與CPU實(shí)現(xiàn)的速度和功耗對比。功耗由Xilinx Power Estimator(XPE)工具獲取。從中可以看出,識別1 000幅圖片,F(xiàn)PGA耗時為9.33 s,CPU耗時為72.43 s,速度提高6.76倍;FPGA功耗為 76.32 W,僅為CPU的26.28%。

        表6 速度及功耗對比

        4 結(jié)論

        本文提出了基于FPGA的CNN漢字識別系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),其采用定點(diǎn)計(jì)算、卷積核分時復(fù)用等硬件優(yōu)化方法,在結(jié)構(gòu)簡化、速度相較CPU提升近7倍的同時,達(dá)到幾乎無損的97.58%的正確率。由于參數(shù)數(shù)量較少,本文避免了內(nèi)存帶寬的常見問題,在FPGA資源允許的情況下,將在今后的工作中搭建更為復(fù)雜的神經(jīng)網(wǎng)絡(luò)。

        猜你喜歡
        定點(diǎn)運(yùn)算卷積
        例談圓錐曲線中的定點(diǎn)定值問題
        重視運(yùn)算與推理,解決數(shù)列求和題
        定點(diǎn)幫扶讓村民過上美好生活
        解析幾何中定點(diǎn)問題的處理策略
        基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
        直線過定點(diǎn)的5種特優(yōu)解法
        有趣的運(yùn)算
        從濾波器理解卷積
        電子制作(2019年11期)2019-07-04 00:34:38
        基于傅里葉域卷積表示的目標(biāo)跟蹤算法
        “整式的乘法與因式分解”知識歸納
        丰满女人又爽又紧又丰满| 精品国产一区二区三区av天堂| 日本久久久久亚洲中字幕| 日韩亚洲av无码一区二区不卡| 亚洲欧洲日产国码无码AV一| 二区三区视频在线观看| 黄片小视频免费观看完整版| 久久天天躁狠狠躁夜夜2020一| 亚洲一区二区三区偷拍女厕| www.尤物视频.com| 亚洲综合视频一区二区| 亚洲中文字幕久久精品无码a| 国产一区二区三区av在线无码观看| 尤物yw午夜国产精品视频| 午夜精品男人天堂av| 国产精品毛片va一区二区三区| 在线亚洲人成电影网站色www | 亚洲人成人网毛片在线播放| 在线观看黄片在线播放视频| 自拍偷自拍亚洲一区二区| 女人被狂躁高潮啊的视频在线看 | 丝袜美腿在线观看视频| 亚洲av香蕉一区区二区三区| 成人欧美一区二区三区a片| 欧洲国产精品无码专区影院| 日韩精品中文字幕第二页| 久久久久成人精品无码中文字幕 | 久久精品免费视频亚洲| 黑人巨茎大战俄罗斯美女| 亚洲综合色丁香婷婷六月图片| 中文字幕一区二区网站| 日本a级免费大片网站| 99久久久国产精品免费蜜臀| 免费毛片视频网站| 亚洲一区亚洲二区中文字幕| 亚洲av色香蕉一区二区三区| 制服丝袜人妻中文字幕在线| 亚洲av永久无码精品成人| 中文字幕亚洲综合久久综合| 成人免费无码大片a毛片软件| 久久无码高潮喷水免费看|