卷積層采用移位寄存器作為輸入緩存加快了網(wǎng)絡(luò)的計(jì)算速度_第1頁
卷積層采用移位寄存器作為輸入緩存加快了網(wǎng)絡(luò)的計(jì)算速度_第2頁
卷積層采用移位寄存器作為輸入緩存加快了網(wǎng)絡(luò)的計(jì)算速度_第3頁
卷積層采用移位寄存器作為輸入緩存加快了網(wǎng)絡(luò)的計(jì)算速度_第4頁
卷積層采用移位寄存器作為輸入緩存加快了網(wǎng)絡(luò)的計(jì)算速度_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

卷積層采用移位寄存器作為輸入緩存,加快了網(wǎng)絡(luò)的計(jì)算速度0引言隨著近些年深度學(xué)習(xí)的迅速發(fā)展和廣泛的應(yīng)用,卷積神經(jīng)網(wǎng)絡(luò)(CNN)已經(jīng)成為檢測和識別領(lǐng)域最好的方法,它可以自動地從數(shù)據(jù)集中學(xué)習(xí)提取特征,而且網(wǎng)絡(luò)層數(shù)越多,提取的特征越有全局性。通過局部連接和權(quán)值共享可以提高模型的泛化能力,大幅度提高了識別分類的精度。并且隨著物聯(lián)網(wǎng)的發(fā)展,部署嵌入式端的卷積神經(jīng)網(wǎng)絡(luò)要處理大量的數(shù)據(jù),這將會消耗大量的資源與能量,而嵌入式設(shè)備通常用電池維持工作,頻繁更換電池將會提高成本,因此對于推斷階段的運(yùn)算加速以及低功耗設(shè)計(jì)有重要實(shí)際意義。CNN的不同卷積核的運(yùn)算之間是相互獨(dú)立的,而且全連接層的矩陣乘法不同行之間也是獨(dú)立的,因此神經(jīng)網(wǎng)絡(luò)的推斷在CPU平臺上串行計(jì)算的方式是非常低效的。GPU可以通過流處理器實(shí)現(xiàn)一定的并行性,但是缺乏對于網(wǎng)絡(luò)并行結(jié)構(gòu)的深度探索,不是最優(yōu)的方案。而基于FPGA的神經(jīng)網(wǎng)絡(luò)可以更好地實(shí)現(xiàn)網(wǎng)絡(luò)并行計(jì)算與資源復(fù)用,因此本文采用FPGA加速卷積神經(jīng)網(wǎng)絡(luò)運(yùn)算。此前已有一些基于FPGA的卷積神經(jīng)網(wǎng)絡(luò)加速器,WANGD設(shè)計(jì)了流水線卷積計(jì)算內(nèi)核;宋宇鯤等人針對激活函數(shù)進(jìn)行設(shè)計(jì)優(yōu)化;王昆等人通過ARM+FPGA軟硬件協(xié)同設(shè)計(jì)的異構(gòu)系統(tǒng)加速神經(jīng)網(wǎng)絡(luò);張榜通過雙緩沖技術(shù)與流水線技術(shù)對卷積優(yōu)化。本文針對卷積神經(jīng)網(wǎng)絡(luò)的并行性以及數(shù)據(jù)與權(quán)值的稀疏性,對卷積層和全連接層進(jìn)行優(yōu)化,根據(jù)卷積核的獨(dú)立性設(shè)計(jì)單指令多數(shù)據(jù)(SingleInstructionMultipleData,SIMD)的卷積與流水線結(jié)構(gòu),提高計(jì)算速度與資源效率,利用全連接層數(shù)據(jù)極大的稀疏性,設(shè)計(jì)稀疏矩陣乘法器減少計(jì)算冗余,然后對模型參數(shù)定點(diǎn)優(yōu)化,最后將實(shí)驗(yàn)結(jié)果與CPU、GPU平臺以及基準(zhǔn)設(shè)計(jì)進(jìn)行比較分析。1CNN模型與網(wǎng)絡(luò)參數(shù)1.1CNN模型CNN是基于多層感知機(jī)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),典型的CNN模型由輸入層、卷積層、全連接層、輸出層和分類層組成,如圖1所示。由輸入層讀取圖像數(shù)據(jù),由卷積層通過多個(gè)卷積核分別和輸入圖卷積生成多個(gè)特征圖,再由池化層降維提取特征圖信息。經(jīng)過幾個(gè)卷積層后,再將特征圖展開成向量,輸入給全連接層,經(jīng)過全連接層與輸出層的矩陣運(yùn)算得到輸出,然后再通過Softmax分類層得到分類概率輸出。本文CNN模型結(jié)構(gòu)如圖2所示,該結(jié)構(gòu)包含兩個(gè)卷積層、兩個(gè)池化層、一個(gè)全連接層,一個(gè)輸出層、一個(gè)使用Softmax的分類層,其中激活函數(shù)不算作一層,共7層的網(wǎng)絡(luò)結(jié)構(gòu)。其中兩個(gè)卷積層的輸出特征圖個(gè)數(shù)分別為16、32,卷積核大小為3×3,移動步長為1,輸出尺寸與輸入相同,系統(tǒng)使用線性修正單元(RectifiedLinearUnits,ReLU)作為激活函數(shù)。全連接層和輸出層分別有1024和40個(gè)神經(jīng)元。由圖2計(jì)算得權(quán)值與偏置的數(shù)量,本文模型共4765416個(gè)參數(shù),其中全連接層占了99%的參數(shù)。由于分類層是用輸出層的值通過Softmax函數(shù)求得每個(gè)分類的概率,而Softmax函數(shù)的運(yùn)算消耗大量的運(yùn)算資源,而且對結(jié)果沒有影響,這是不必要的運(yùn)算開銷,因此用輸出值來判別即可。1.2CNN網(wǎng)絡(luò)參數(shù)根據(jù)所選的網(wǎng)絡(luò)結(jié)構(gòu),本文使用TensorFlow框架搭建模型,學(xué)習(xí)率設(shè)置為0.0001,使用自適應(yīng)學(xué)習(xí)率優(yōu)化算法Adam加速模型收斂,訓(xùn)練選擇ReLU激活函數(shù)增加模型參數(shù)的稀疏性,使用交叉熵作為損失函數(shù),加入L2正則化項(xiàng)減小過擬合。訓(xùn)練了50輪后,模型在ORL人臉數(shù)據(jù)庫的正確率達(dá)到95%,滿足實(shí)際應(yīng)用需要。神經(jīng)網(wǎng)絡(luò)模型推斷降低一定的精度不會影響準(zhǔn)確率,而且在FPGA上定點(diǎn)數(shù)比起浮點(diǎn)數(shù)的計(jì)算更有效率,所以將模型參數(shù)由32bit浮點(diǎn)數(shù)量化為16bit定點(diǎn)數(shù),由深度壓縮中的方法,將16bit的定點(diǎn)數(shù)權(quán)值再用8bit的索引表示,索引表的值共28=256個(gè),然后通過反向傳播算法更新索引表后,將索引和索引表存在外部存儲器中。2CNN系統(tǒng)硬件設(shè)計(jì)本系統(tǒng)針對CNN模型結(jié)構(gòu)以及數(shù)據(jù)與參數(shù)的特點(diǎn)進(jìn)行設(shè)計(jì)和優(yōu)化,卷積同一層內(nèi)不同特征圖的計(jì)算有天然的并行性,不同層之間因?yàn)椴皇仟?dú)立的,無法同時(shí)進(jìn)行計(jì)算,而全連接層和輸出層都可以使用卷積層的PE來完成乘法運(yùn)算。系統(tǒng)設(shè)計(jì)如圖3所示。首先通過控制器從外部存儲器DDR3中讀取圖像數(shù)據(jù)到輸入緩沖區(qū),輸入緩沖區(qū)通過移位寄存器設(shè)計(jì),通過固定窗口讀取數(shù)據(jù)。讀取權(quán)值索引到權(quán)值緩沖區(qū),然后由索引讀取權(quán)值輸入給卷積的處理單元(ProcessingElement,PE),經(jīng)過每層的卷積后加上偏置,用ReLU函數(shù)激活,再經(jīng)過池化操作降維,然后特征圖經(jīng)過非零檢測模塊統(tǒng)計(jì)稀疏性,讀取對應(yīng)的非零神經(jīng)元的權(quán)值,然后由稀疏矩陣乘法器(SparseMatrix-VectorMultiplication,SPMV)完成矩陣乘法,加上偏置后輸出給輸出層。輸出層復(fù)用卷積層的PE完成矩陣乘法,然后遍歷輸出值求出最大值對應(yīng)的神經(jīng)元序號即為預(yù)測值。2.1卷積層硬件設(shè)計(jì)優(yōu)化卷積層采用移位寄存器作為輸入緩存,本文卷積層的卷積核尺寸為3×3,每次讀取9個(gè)權(quán)值,使用9個(gè)定點(diǎn)小數(shù)乘法器,然后使用4層加法樹結(jié)構(gòu)將結(jié)果與偏置相加。然后通過ReLU函數(shù)激活,該函數(shù)表達(dá)式為y=max(0,x),因此只要判斷輸入數(shù)據(jù)的符號位即可,使用一個(gè)數(shù)據(jù)選擇器即可完成運(yùn)算,消耗一個(gè)時(shí)鐘。第一層卷積的不同卷積核是獨(dú)立計(jì)算的,所以使用16個(gè)PE同時(shí)計(jì)算,然后通過流水線技術(shù),可以在一個(gè)時(shí)鐘周期內(nèi)產(chǎn)生16個(gè)卷積輸出,輸出數(shù)據(jù)的延遲包括讀取數(shù)據(jù)延遲和加法樹的延遲。2.2池化層設(shè)計(jì)優(yōu)化池化層用于對輸入特征圖降低維度和提取信息,池化分為平均值池化和最大值池化,本文使用最大值池化,池化尺寸為2×2,步長為2。池化層使用比較器得到最大值,經(jīng)過兩次比較得到結(jié)果。經(jīng)研究發(fā)現(xiàn),池化操作不影響卷積操作,因此設(shè)計(jì)了池化與卷積的并行計(jì)算。并行操作節(jié)省了池化運(yùn)算的時(shí)間,加快了網(wǎng)絡(luò)的計(jì)算速度。2.3全連接層與輸出層的設(shè)計(jì)與優(yōu)化2.3.1全連接層全連接層將所有輸入特征圖和輸出向量相連接,每個(gè)神經(jīng)元的值由卷積層特征圖加權(quán)求和得到。本文多次實(shí)驗(yàn)發(fā)現(xiàn)全連接層有大量為零的神經(jīng)元,如圖6所示。因此可以利用神經(jīng)元的稀疏性減少乘法的操作,設(shè)計(jì)如圖7所示稀疏矩陣乘法器。首先通過非零元檢測模塊,得到不為零的神經(jīng)元,然后復(fù)用卷積層的PE來計(jì)算非零神經(jīng)元與權(quán)值的乘加操作。這樣可以重復(fù)利用運(yùn)算資源,并大大降低運(yùn)算的時(shí)間復(fù)雜度,提高運(yùn)算速度。2.3.2輸出層輸出層對全連接層神經(jīng)元做矩陣運(yùn)算,然后通過Softmax層得到所有分類的概率。但是由于Softmax函數(shù)含有指數(shù)運(yùn)算,需要消耗大量運(yùn)算資源和時(shí)間,而且對結(jié)果沒有影響,因此將Softmax層移除,直接使用輸出層值的大小來分類。本文多次實(shí)驗(yàn)發(fā)現(xiàn)輸出層沒有稀疏性,大部分神經(jīng)元不為零,輸出層的計(jì)算復(fù)用SPMV的第二個(gè)部分進(jìn)行計(jì)算,由PE與串行加法器組成,分別計(jì)算輸出層的40個(gè)分類的值,40個(gè)運(yùn)算單元共用一路數(shù)據(jù)輸入,采用滑動窗口讀取數(shù)據(jù),多路PE同時(shí)計(jì)算,由串行加法器輸出結(jié)果。最后遍歷求得輸出值最大值,并輸出分類結(jié)果。3數(shù)據(jù)量化與模型壓縮本文模型使用了兩個(gè)卷積層、一個(gè)全連接層、一個(gè)輸出層的結(jié)構(gòu),使用參數(shù)量由前文所述有476萬參數(shù),而全連接層又占了99%的參數(shù),因此主要針對全連接層進(jìn)行數(shù)據(jù)壓縮。對于所有層的參數(shù)進(jìn)行數(shù)據(jù)量化,從原本模型64bit浮點(diǎn)數(shù)量化為16bit定點(diǎn)數(shù),然后用8bit的索引,共256個(gè)共享的權(quán)值,然后通過反向傳播算法[7]修正原始權(quán)值與共享權(quán)值的差值。壓縮率公式如下:其中,n為參數(shù)量,b為量化的比特?cái)?shù),k為bbit能表示的類數(shù)(256類)。式(1)代入數(shù)據(jù)求得壓縮率大約為4倍。4實(shí)驗(yàn)結(jié)果系統(tǒng)設(shè)計(jì)使用Xilinx公司的ZYNQ-7000xc7z020clg400-1芯片作為實(shí)驗(yàn)平臺,該芯片內(nèi)部有85000個(gè)邏輯單元、4.9MB的BlockRAM、220個(gè)DSP48單元、1GB片外DRAM,滿足本系統(tǒng)所需。CPU平臺使用Corei59400f,主頻為2.9GHz,GPU平臺使用GTX1060,GPU主頻為1.5GHz,顯存帶寬為160GB/s。將實(shí)驗(yàn)結(jié)果與CPU、GPU平臺以及基準(zhǔn)設(shè)計(jì)對比,資源使用情況如表1所示,實(shí)驗(yàn)結(jié)果如表2所示。本文硬件平臺的工作頻率為100MHz,識別每張圖片時(shí)間為0.27ms,功耗為1.95W,性能達(dá)到了27.74GOPS/s,分別是CPU、GPU平臺的10.24倍、3.08倍,以及基準(zhǔn)設(shè)計(jì)的1.56倍,能效比優(yōu)于CPU、GPU平臺以及基準(zhǔn)設(shè)計(jì)。在數(shù)據(jù)量化為16bit定點(diǎn)數(shù)之后,識別率達(dá)到95%,沒有造成精度損失。5結(jié)論本文設(shè)計(jì)了一種基于FPGA的卷積神經(jīng)網(wǎng)絡(luò)加速系統(tǒng)。首先使用ORL人臉數(shù)據(jù)庫,在卷積神經(jīng)網(wǎng)絡(luò)模型LeNet-5上訓(xùn)練,然后用短定點(diǎn)數(shù)對神經(jīng)網(wǎng)絡(luò)進(jìn)行量化,再使用索引與索引表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論