999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

卷積神經網絡數字識別系統的FPGA實現

2020-07-06 13:35:18孫敬成王正彥李增剛
計算機工程與應用 2020年13期

孫敬成,王正彥,李增剛

青島大學 電子信息學院,山東 青島 266071

1 引言

卷積神經網絡(Convolutional Neural Networks,CNN)是一類包含卷積計算且具有深度結構的前饋神經網絡,是深度學習的代表算法之一[1]。近年來,卷積神經網絡在多方向持續發力,已成為圖像識別和語音分析領域中的研究熱點[2]。相較BP神經網絡結構,引入卷積層與混合層,降低了運算量。

手寫數字識別是模式識別領域中熱點問題,有著重要的理論價值[3]。識別過程首先通過網絡反向傳播訓練樣本數據,提取識別率較高的權重與偏置用于前向傳播,通過計算帶權輸入與激活值,以輸出層中激活值最大值所對應的位置表示識別值。訓練樣本數據來源于MNIST 數據庫,數據庫中為人工手寫的0~9 的數字圖片,包括50 000 訓練樣本和10 000 驗證樣本,灰度值于0~255之間,像素大小均為28×28[4]。盡管數字識別類別較小,但卻有利于深入分析以及驗證新結論,能夠推廣其他相關問題,一個直接應用即英文字母的識別。

2 卷積神經網絡

神經網絡的組成單位為神經元,神經元規則的連接形成網絡[5]。BP神經網絡連接方式為全連接,即相鄰層神經元相互連接,使權重偏置數量大。而卷積神經網絡則憑借卷積層的區域連接以及混合層的壓縮,減少了參數數量,簡化了網絡結構[6],使訓練變的簡單。但作為BP神經網絡研究的產物,也保留部分特性,仍離不開帶權輸入(z)與激活值(a)的計算。公式如式(1)、(2):

其中w為權重,b為偏置,l為當前層,j、k為神經元位置順序,x表示輸入神經元數據,σ為激活函數,激活函數選擇Sigmoid 函數,其特性可將激活值壓縮到(0,1)中[7]。

卷積神經網絡結構主要由輸入層、卷積層、混合層、全連接層、輸出層五部分構成。采用了3 種基本概念:卷積核、局部感受野、混合層。卷積核由共享權重與偏置組成,對應不同的特征映射,用于卷積運算,考慮到FPGA資源,該系統選擇一個卷積核。局部感受野與卷積核大小對應,表示區域性連接,區別于BP 的全連接。混合層,又稱池化層[8],可壓縮數據內容,減小計算量。

傳統網絡結構如圖1 所示。輸入層輸入圖片像素數據;卷積層,令卷積核數目為3,分別與像素數據作卷積,得到3組數據;混合層壓縮卷積層的輸出,每2×2矩陣可用平均數或最大值表示。上述對于3 個卷積核的卷積、混合運算,利用硬件實現可同時完成,軟件則需分3次計算,體現了硬件實現并行性的優點。之后兩層均為全連接,全連接層需將3 組神經元矩陣轉換為1 組列矩陣,以便于綜合所有特征;最終計算輸出層的激活值,最大值所在的位置即判別結果[9]。

圖1 卷積神經網絡結構圖

參數設置如下所示。

輸入層神經元數量:28×28

卷積核大小:5×5

卷積層輸出:24×24(28?5+1)

混合層輸出:12×12

全連接層神經元數量:100×1

輸出層神經元數量:10×1

卷積神經網絡一次完整的訓練包括前向和反向傳播。前向傳播依靠權重與偏置計算帶權輸入和激活值,求得識別結果;反向傳播推導和優化權重與偏置,以求高識別率。為使網絡的輸出能夠擬合所有的訓練輸入,定義代價函數[10],公式如式(3):

式中,n為訓練輸入個數;y為標簽值,a為輸出層的激活值。反向傳播的目的找到一系列讓代價函數C盡可能小的權重與偏置,采取梯度下降法來達到目的[11]。梯度下降需要引入神經元誤差,公式可表示為代價函數對帶權輸入的偏導,該過程存在激活函數導數。公式如式(4):

權重與偏置的更新梯度可表示為神經元誤差對該層w、b的偏導,公式如式(5)、(6)所示,由公式可得權重梯度可在偏置梯度基礎上求得。以梯度下降法計算更新梯度,原數據與梯度對應相減,得到更新權重與偏置,反復訓練,以求最高識別率:

3 前向傳播實現方案

3.1 樣本讀取

網絡前向傳播輸入層需讀取圖片像素,網絡計算需讀取權重與偏置。初始化均值為0,方差為1 的高斯分布網絡權重與偏置。反向傳播需讀取標簽值,標簽值對應輸入圖像的值。訓練過程小批量處理,即輸入層一次訓練輸入MNIST 數據庫中10 個樣本,將樣本像素數據輸入到輸入層神經元矩陣。

由于FPGA 不能夠識別小數,所以,要經過浮點轉定點處理,規定定點數位寬16 位,選擇S3.12 進行轉換。其中S表示符號位,3為整數位個數,12為小數位個數[12]。權重、偏置及標簽值都應擴大4 095(位寬12 位)倍。以上均為有符號數。轉換定點數后進行計算時,注意位寬的匹配。

3.2 激活函數的實現

Verilog 語言存在數學運算上的弊端,例如不能進行矩陣運算、不能夠識別對數、更不能夠計算導數等。為了設計的進行,對曲線函數采用分段擬合近似表示。通過分割將每段曲線近似為直線,將曲線線性化[13]。卷積神經網絡用到激活函數及其導數,均可采用該方法處理。圖2 為Sigmoid 激活函數在區間(?6,6)的圖像,值域為(0,1),且單調遞增。求解每段函數時,可以借助Matlab 基本擬合功能。激活函數求導過程類似,不作講解。

圖2 Sigmoid函數

令分割區間為0.5,并進行定點化,曲線代碼如下:

上述代碼將線性化函數的斜率、截距進行浮點轉定點出理并以二進制數表示,因此橫坐標也要做出相應調整。在(?6,6)兩端,因變量結果趨近于0、1。代碼中不再細分區間,直接令其值固定。將Sigmoid 函數及其導數作為底層,直接調用。

3.3 卷積層計算

如圖3所示,輸入層排列為28×28的神經元矩陣,卷積核大小為5×5,令跨度為1,卷積核與局部感受野對應乘加,最終與共享偏置求和得到帶權輸入z,經過激活函數得到激活值a,卷積后可得576 個神經元,維數轉換后得下一層24×24的神經元矩陣。

圖3 卷積計算結構

卷積過程重點即提取矩陣中局部感受野。提取方法可對矩陣首個元素進行控制,局部感受野其余元素均可導出。首元素移動,帶動局部感受野移動。因此,僅控制a、b即可。由時鐘控制a、b變化,直至掃描結束。

代碼如下:

因此,一個時鐘可得一組局部感受野,進而與卷積核進行卷積,最終求得帶權輸入與激活值,總耗時576個時鐘周期,得到卷積層輸出神經元。

3.4 混合計算

將卷積計算所得24×24 激活值矩陣劃分2×2 小矩陣,并將矩陣中四個數據用平均值一個數據表示[14],跨度為2,如圖4 所示。提取2×2 矩陣與局部感受野方式相同,每一個時鐘計算一組矩陣的平均值,耗時144 個時鐘周期,得到下一層12×12神經元矩陣。該層不涉及權重與偏置,僅求激活值的平均數。

圖4 混合運算結構

3.5 輸出值計算

卷積神經網絡混合層之后連接方式均為全連接,神經元排列由二維矩陣轉為一維矩陣。如圖5 所示,al-1表示混合層144 個神經元,與下一層的100 個神經元兩兩連接,求得帶權輸入與激活值;再與輸出層10個神經元兩兩連接,計算求得輸出值。每個連接對應一個權重,每個被連接神經元對應一個偏置,可見fully層權重、偏置個數為144×100、100;soft 層權重、偏置個數為100×10、10。

圖5 全連接輸出

該過程中,兩層計算方式相同,以計算fully 層帶權輸入為例。Verilog 不能進行矩陣運算,根據矩陣定義,在for 循環中需對應好計算變量的位置。如圖6 所示,x_pool表示混合層神經元,fully_w、fully_b表示該層權重、偏置,最終求得帶權輸afullyresult和激活值afullyresult,即圖5中

圖6 fully層仿真

帶權輸入代碼實現(fully層):

輸出層計算方式類似,100個激活值與10個神經元全連接,最終獲得10個神經元激活值。加入比較器,比較激活值的大小,大小所對應的位置即檢測樣本數據。由于線性分割不夠精確,激活值存在相等的情況,可根據激活函數單調遞增特性,比較帶權輸入值即可。

3.6 小結

前向傳播主要識別輸入樣本的值,即便采用一個卷積核,計算量仍較大,尤其在矩陣運算時,必須對應好相乘的量。Verilog語言實現特點就是加入了時序,例如卷積層計算應用576 時鐘周期、混合層144 時鐘周期等。總結前向傳播電路結構,如圖7所示,其中Sconv對應卷積層、fully對應全連接層、Soft對應輸出層,給出每層的數據結構。由權重、偏置計算帶權輸入,并求得激活值(池化層除外),激活值作為為下一層的輸入,經過混合層、輸出層的計算,最終求得判別結果。

圖7 前向傳播電路結構圖

4 反向傳播實現方案

4.1 標簽值讀取

反向傳播需讀取標簽值y,與輸入樣本類似,每個訓練周期讀取10個標簽值。同樣標簽值需進行浮點轉定點,因此列矩陣由0與4 095組成,標簽值所在位置對應4 095。仿真結果如圖8。

圖8 標簽值讀取

4.2 權重與偏置的更新

權重與偏置共3 組,代碼中分別表示為:con_w、core_b(輸入層→卷積層),fully_w、fully_b(混合層→全連接層),soft_w、soft_b(全連接層→輸出層)。更新梯度主要依靠公式計算,以下根據代價函數及神經元誤差定義所做出的公式推導、實現方案。

公式如式(7),(a-y) 對應輸出激活值與標簽值的差,為 10×1 列矩陣;asoftresult'表示asoftresult對softresult的導數(激活函數的導數),得10×1列矩陣;兩者點乘得到soft_b的更新梯度。

公式如式(8),包含soft_grad_b,為10×1 列矩陣,afullyresult激活值存于100×1列矩陣,兩個矩陣相乘不能得到soft_grad_w的100×10 矩陣。因此根據公式進行計算不可行,需根據網絡結構設定。令afullyresult的100×1 矩陣與soft_grad_b轉置后得到的 1×10 矩陣相乘。因前向過程中,afullyresult中100個神經元與下一層10 個神經元連接;反向過程10 個神經元對應值為soft_grad_b。因此,afullyresult中每一個仍與soft_grad_b中10個計算,滿足梯度對應關系。

代碼實現的關鍵即處理矩陣運算,必須要對應好因數位置[15]。全連接層梯度的推導方式大同小異,以權重更新梯度計算為例。

代碼如下:

卷積神經網絡一次訓練十幅圖片,目的是在更新梯度時,取平均得到較為準確的更新梯度[16]。以上代碼即求得十組更新梯度。仿真結果如圖9。all表示梯度和,ave表示平均值,即真正更新梯度。與原始數據求差,得到更新值。

圖9 soft_w更新仿真

公式如式(9),soft_w為100 行10 列,此處不用更新值,矩陣乘積后得100×1矩陣,與afullyresult′(導數)作點乘。計算結束后求平均值得到100個fully_b的更新梯度。

公式如式(10),結果是在fully_grad_b的100×1矩陣基礎上與混合層x_pool的144×1矩陣進行乘積。同樣矩陣要進行轉置,換序,與計算soft_grad_w原理相同,最終得到144×100矩陣。

以上為以全連接方式連接的權重與偏置梯度的推導。卷積層計算方式與以上不同,但也離不開前一層神經元誤差。

卷積層誤差前向傳播時,混合層將卷積層24×24神經元矩陣壓縮為12×12。若要求得卷積層的誤差,首先求得混合層誤差,將混合層12×12 誤差矩陣恢復至24×24神經元矩陣,處理稱為Unsample[17]。混合計算利用平均值,展開過程將混合層的誤差除以4,分布到每一個2×2的矩陣中。舉例如圖10所示。

圖10 Unsample示例

卷積層與混合層之間不存在激活函數,x_pool即帶權輸入z,所以fullyresult對x_pool求導時結果為1,如公式(11):

fully_grad_b為 100 行 1 列矩陣,fully_w為 144 行 100列,相乘得144 個神經元誤差。進行unsample 處理,為了計算方便,將誤差存入二維矩陣進行擴展,擴展結果即卷積層神經元誤差。

共享權重與偏置數目較少,梯度推導方式也有所不同。25個權重梯度依靠輸入圖片像素與卷積層誤差的卷積,即28×28矩陣卷積24×24矩陣,最終得到5×5的矩陣,對應共享權重的梯度,公式如式(12);偏置梯度更為特殊,由于δ是高維張量,而core_b只是一個向量,通常的做法是將δ的各項分別求和,得到一個誤差向量[18],即為偏置更新梯度,公式如式(13):

4.3 小結

反向傳播通過更新權重與偏置,使代價函數降到最低,以求最大識別率。主要工作為公式計算,難點在于對梯度下降法的原理、公式推導的理解;利用Verilog代碼實現,難點在于解決矩陣的運算、激活函數求導。該過程同樣以時序控制,總結反向傳播電路結構,如圖11所示,權重、偏置梯度倒序計算,各層數據結構如圖。矩陣相乘、轉置對應4.2節中的公式計算,可以看出前兩層的計算方式相同,計算輸入為帶權輸入、激活值以及原始權重,輸出為更新梯度。卷積層則依靠卷積、疊加計算方式求得更新梯度。提取全部更新梯度與原數據作差,求得更新值。該結構可由一條總線連接,是因為后一層的梯度由前一層梯度求得,公式中可以體現。

圖11 反向傳播電路結構圖

5 網絡的循環與實現

卷積神經網絡一次完整的訓練為10 幅圖片,實際應用中需要訓練MNIST 數據庫中所有圖片,因此在時鐘控制下,網絡的訓練持續進行。一次訓練的周期約為850個時鐘周期,以時鐘控制,每850個時鐘周期輸入新的訓練樣本,并更新權重與偏置。如圖12所示,每個周期的訓練,僅需要上次更新的權重與偏置,因此,在提取出新的權重與偏置后,可認為周期訓練單獨運行,互不影響。以計算fullyresult為例,如圖13所示,每850周期計算一組。

圖12 網絡時序結構圖

圖13 fullyresult運算仿真結果

6 RTL級電路設計

在行為級描述及仿真正確的基礎上,進一步進行RTL 級設計,以便進行硬件測試,該設計針對Altera 芯片Cyclone?IV 4CE115 及友晶開發板DE2-115。考慮到芯片資源有限,將卷積神經網絡結構進行修改,卷積核由5×5 修改為3×3,全連接層由100 個神經元修改為30個神經元,小批量數據選擇3個樣本。訓練系統框圖如圖14所示。

圖14 卷積神經網絡訓練系統框圖

樣本數據經前向運算、后向運算后獲得權重梯度和偏置梯度,然后進行權重、偏置更新,根據更新后的權重偏置繼續對新的樣本進行訓練,反復循環進行。同時計算識別準確率,當準確率達到設置的閾值時,停止訓練。由狀態機控制各個運算過程的進行,當準確率達到設置閾值時,狀態機停止運行。

由于樣本數據需要輸入電路進行處理,故采用雙口RAM 存取樣本[19]。權重和偏置需要更新處理,也采用RAM 存取。經過詳細分析處理過程,將一次訓練過程分解為7個狀態。

S0:空閑狀態。

S1:卷積運算,求卷積層帶權輸入;輸入新樣本(乒乓輸入)。

S2:池化運算,求池化層激活函數;求全鏈接層帶權輸入/激活值。

S3:輸出層帶權輸入/激活值;判決輸出;計算準確率;求輸出層誤差;輸出層偏置梯度;更新輸出層偏置梯度。

S4:求全鏈接層誤差、全鏈接層偏置梯度;更新全連接層偏置。

S5:求全連接層權重梯度;更新全連接層權重;求池化層誤差;卷積層誤差,卷積層偏置梯度;更新卷積層偏置。

S6:求卷積層權重梯度;更新卷積層權重。

S7:停止狀態。

時序圖如圖15。其中卷積層的卷積運算及卷積層的權重梯度需要時間最長。

圖15 訓練電路時序圖

根據時序分析,進行狀態機設計。狀態機的狀態轉換圖如圖16 所示。S7 狀態即正確率達到設定閾值,停止訓練,此時保留權重與偏置,直接用于識別數字即可。

圖16 狀態機狀態轉換圖

7 結果與總結

7.1 行為級描述仿真結果

構造卷積神經網絡,用于手寫數字的訓練與識別。利用quartus II編寫 Verilog代碼并進行編譯綜合,同時調用ModelSim 軟件進行仿真,仿真結果如圖17 所示,compare 表示樣本標簽,max_addr 表示識別值,right 表示正確識別的個數,count 為表示訓練的總樣本數計算準確率,統計結果如表1。當樣本數目為20 000時,準確率達到最大值95.4%,繼續訓練識別率降低。分析原因,當參量、類別過于復雜時,神經網絡訓練時的收斂壓力則越大,效果降低。因此,合適的網絡參量數目是卷積神經網絡達到良好實驗結果的必要條件[20]。

圖17 行為級訓練結果

卷積神經網絡訓練60 000樣本,將代碼下載至工作頻率可達 100 MHz 的 FPGA 中,訓練耗時約 50 ms,而python訓練耗時約8 min。因此速度顯著提高。對于硬件描述語言在數學計算上的缺點,也得到了良好解決。即便存在浮點轉定點、激活值計算所造成的誤差,也并不影響識別結果。因此,以硬件實現卷積神經網絡,保證了實時性、高準確性。

表1 識別率統計結果

7.2 RTL設計結果

在Quartus II 13.0 中對RTL 級前向電路進行了全編譯及硬件測試,選取訓練好的權重和偏置,電路可正確識別樣本數據。網絡結構在Quartus II 13.0 中進行了邏輯綜合,并利用Modelsim-ASE進行了仿真,正確率可達96%。該設計基于Intel 公司的Cyclone IV 系列FPGA 芯片EP4CE115F29C7N 進行了驗證,并在DE2-115 開發板上進行了硬件測試,輸入樣本數字進行識別測試,隨機選取樣本庫中數據,灰度值排列如圖18 所示,連接數碼管引腳,直接顯示識別結果,完成數字識別,結果正確如圖19 所示。該設計可直接用于小型嵌入式系統進行數字識別。

圖18 數字樣本

圖19 識別結果

8 結束語

本文以硬件描述語言(Verilog)實現卷積神經網絡,并以手寫數字識別為測試應用。相較軟件實現而言,在保證準確率的情況下,滿足了實時性的要求。盡管硬件描述語言在數學計算上存在缺點,但也得到了很好的解決。實現過程存在浮點轉定點、激活值計算、求導所造成的誤差,對識別結果影響較小。卷積神經網絡作為圖像識別的重要工具,要保證識別率足夠高,才可真正應用于嵌入式設備,后續工作還需深入研究,例如增加網絡層數將準確率再度提高或者實現其他識別應用等。

主站蜘蛛池模板: 亚洲精品不卡午夜精品| 亚洲无码精彩视频在线观看| 午夜福利在线观看入口| 国产成人1024精品| 亚洲中文字幕在线一区播放| 一区二区影院| 五月丁香在线视频| 五月综合色婷婷| 国产十八禁在线观看免费| 国产亚洲欧美在线人成aaaa| 成人免费网站久久久| 日本国产在线| 国产精品熟女亚洲AV麻豆| 99re66精品视频在线观看| 国产91麻豆视频| 成人在线不卡视频| 国产凹凸一区在线观看视频| 亚洲美女一级毛片| 伊人成人在线视频| 国产午夜福利在线小视频| 国产成人亚洲无码淙合青草| 日本午夜视频在线观看| 性69交片免费看| 国产va免费精品观看| 91精品国产丝袜| 99这里只有精品免费视频| 精品人妻一区二区三区蜜桃AⅤ| 日韩欧美亚洲国产成人综合| 亚洲国产欧洲精品路线久久| 欧美va亚洲va香蕉在线| 国产97公开成人免费视频| 亚洲va精品中文字幕| 一级做a爰片久久免费| 毛片免费在线视频| 黄色网站不卡无码| 在线精品自拍| 精品视频免费在线| 欧美va亚洲va香蕉在线| 亚洲天堂久久| 97亚洲色综久久精品| 亚洲欧洲日产国码无码av喷潮| 日韩经典精品无码一区二区| 国产成人做受免费视频| 激情综合五月网| 久久精品人妻中文系列| 成人精品午夜福利在线播放| 中文字幕无码中文字幕有码在线 | 亚洲综合片| 欧美高清视频一区二区三区| 免费中文字幕一级毛片| 久久精品视频一| 欧美日韩专区| 制服丝袜亚洲| 91午夜福利在线观看精品| 综合色在线| 日韩美毛片| 国产亚洲欧美在线视频| 国产一区免费在线观看| 亚洲天堂视频网站| 久久国产拍爱| 无码专区第一页| 亚洲狠狠婷婷综合久久久久| 91视频免费观看网站| 国产情精品嫩草影院88av| 国产第八页| 精品亚洲国产成人AV| 美女扒开下面流白浆在线试听| 亚洲综合九九| 毛片网站在线播放| 999精品视频在线| 午夜无码一区二区三区在线app| 国产91特黄特色A级毛片| 丰满人妻被猛烈进入无码| www.精品国产| 久久频这里精品99香蕉久网址| 亚洲一区二区三区国产精品 | 国产农村妇女精品一二区| 国产毛片不卡| 18禁影院亚洲专区| m男亚洲一区中文字幕| 亚洲毛片在线看| 亚洲国产成人精品无码区性色|