• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于FPGA和CNN的漢字識(shí)別系統(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ù),包括圖像識(shí)別、音頻和視頻處理與分析等。用于計(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ò)對(duì)計(jì)算要求更高。在移動(dòng)設(shè)備和嵌入式系統(tǒng)[1]中同樣需要使用深度卷積神經(jīng)網(wǎng)絡(luò),如自動(dòng)駕駛汽車[2]、醫(yī)療設(shè)備中的視頻處理[3]等。這就需要高精度和實(shí)時(shí)物體識(shí)別的能力。然而CPU通常不夠快,F(xiàn)PGA相較CPU有更快的處理速度,是用硬件加速CNN的最佳選擇。目前在FPGA上搭建的文字識(shí)別的系統(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)練出成熟漢字識(shí)別CNN網(wǎng)絡(luò),其準(zhǔn)確率高達(dá)98.36%。同時(shí),通過卷積核復(fù)用、浮點(diǎn)數(shù)定點(diǎn)化等硬件化方法,將CNN前向通道搭建到FPGA上。最后,在FPGA上輸入待識(shí)別的漢字得到判斷結(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ù)集是由模式識(shí)別國家重點(diǎn)實(shí)驗(yàn)室分享,來源于300余人書寫的用于評(píng)估標(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個(gè)漢字,分別為:一,二,三,四,五,六,七,八,九,十,東,南,西,北,上,下,左,右,萬,丈。

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

      為了使該網(wǎng)絡(luò)對(duì)真實(shí)的攝像頭圖片更加友好,這里將ov5640采集的圖片也加入到數(shù)據(jù)集進(jìn)行該網(wǎng)絡(luò)訓(xùn)練。每個(gè)漢字一共拍攝了50張,并對(duì)圖片進(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ù)集圖片對(duì)比如圖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)共有一個(gè)輸入層、六個(gè)卷積層、一個(gè)全連接以及一個(gè)輸出識(shí)別結(jié)果的softmax分類層。網(wǎng)絡(luò)全部采用3×3的卷積核。最后一層采用全局池化,其余層均采用2×2最大池化核。由于卷積核可以擴(kuò)大通道數(shù),池化可以縮小特征圖的大小,可以在模型架構(gòu)搭建得更深的同時(shí),放緩計(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)時(shí),由于難以控制浮點(diǎn)數(shù)的尾數(shù)和各種操作的指數(shù),通常采用定點(diǎn)數(shù)進(jìn)行計(jì)算。

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

      (1)

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

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

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

      (2)

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

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

      (3)

      乘法可以被表示為:

      (4)

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

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

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

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

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

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

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

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

      圖6 不同權(quán)重精度對(duì)應(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ī)拍攝的照片由圖像采集模塊采集,并將圖像信息存儲(chǔ)到DDR3中。從320×240的圖像中裁剪出224×224像素的中心部分,進(jìn)而得到需要的圖像尺寸32×32。224×224的圖像被分成7×7塊,計(jì)算這些塊中的每一個(gè)平均值,并在32×32圖像中形成對(duì)應(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ù)用。最后通過一個(gè)ReLU函數(shù)實(shí)現(xiàn)該卷積層的輸出。

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

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

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

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

      2.3 硬件優(yōu)化

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

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

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

      (2)移位寄存器

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

      圖11 移位寄存器操作

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

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

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

      Modelsim仿真的波形如圖13所示,w11~w19表示權(quán)重?cái)?shù)據(jù),p11~p19表示圖像數(shù)據(jù)。從圖中可以看出,在一段時(shí)間內(nèi)權(quán)重?cái)?shù)據(jù)沒有變化而特征數(shù)據(jù)不斷改變。說明網(wǎng)絡(luò)在執(zhí)行時(shí)采用權(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),可用于存儲(chǔ)輸入圖像信息。電路板本身具有2.09 MB的RAM,可用于存儲(chǔ)神經(jīng)網(wǎng)絡(luò)的權(quán)重。

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

      圖14 硬件平臺(tái)

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

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

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

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

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

      表5 FPGA資源使用情況

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

      表6 速度及功耗對(duì)比

      4 結(jié)論

      本文提出了基于FPGA的CNN漢字識(shí)別系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),其采用定點(diǎn)計(jì)算、卷積核分時(shí)復(fù)用等硬件優(yōu)化方法,在結(jié)構(gòu)簡化、速度相較CPU提升近7倍的同時(shí),達(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)跟蹤算法
      “整式的乘法與因式分解”知識(shí)歸納
      大足县| 射阳县| 太仓市| 石城县| 闵行区| 彰武县| 舞钢市| 延安市| 定陶县| 宝坻区| 丹凤县| 达孜县| 东源县| 阜城县| 嫩江县| 枣庄市| 自贡市| 宁强县| 舟山市| 镇巴县| 达拉特旗| 灵山县| 嘉祥县| 长汀县| 阳信县| 通许县| 万年县| 文山县| 察隅县| 普安县| 六枝特区| 博湖县| 丰原市| 紫阳县| 关岭| 马龙县| 廉江市| 呼和浩特市| 都兰县| 长沙市| 苏州市|