BP神經(jīng)網(wǎng)絡(luò)圖像壓縮算法乘累加單元的FPGA設(shè)計(jì)
0 引 言
神經(jīng)網(wǎng)絡(luò)(Neural Networks)是人工神經(jīng)網(wǎng)絡(luò)(Ar-tificial Neural Networks)的簡(jiǎn)稱,是當(dāng)前的研究熱點(diǎn)之一。人腦在接受視覺感官傳來的大量圖像信息后,能迅速做出反應(yīng),并能在腦海中重現(xiàn)這些圖像信息,這不僅與人腦的海量信息存儲(chǔ)能力有關(guān),還與人腦的信息處理能力,包括數(shù)據(jù)壓縮能力有關(guān)。在各種神經(jīng)網(wǎng)絡(luò)中,多層前饋神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的信息處理能力,由于其采用BP算法,因此也稱為BP神經(jīng)網(wǎng)絡(luò)。采用BP神經(jīng)網(wǎng)絡(luò)模型能完成圖像數(shù)據(jù)的壓縮處理。在圖像壓縮中,神經(jīng)網(wǎng)絡(luò)的處理優(yōu)勢(shì)在于:巨量并行性;信息處理和存儲(chǔ)單元結(jié)合在一起;自組織自學(xué)習(xí)功能。
與傳統(tǒng)的數(shù)字信號(hào)處理器DSP(Digital Signal Processor)相比,現(xiàn)場(chǎng)可編程門陣列(Field Programma-ble Gate Array,FPGA)在神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)上更具優(yōu)勢(shì)。DSP處理器在處理時(shí)采用指令順序執(zhí)行的方式,而且其數(shù)據(jù)位寬是固定的,因而資源的利用率不高,限制了處理器的數(shù)據(jù)吞吐量,還需要較大的存儲(chǔ)空間。FPGA處理數(shù)據(jù)的方式是基于硬件的并行處理方式,即一個(gè)時(shí)鐘周期內(nèi)可并行完成多次運(yùn)算,特別適合于神經(jīng)網(wǎng)絡(luò)的并行特點(diǎn),而且它還可以根據(jù)設(shè)計(jì)要求配置硬件結(jié)構(gòu),例如根據(jù)實(shí)際需要,可靈活設(shè)計(jì)數(shù)據(jù)的位寬等。隨著數(shù)字集成電路技術(shù)的飛速發(fā)展,FPGA芯片的處理能力得到了極大的提升,已經(jīng)完全可以承擔(dān)神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)壓縮處理的運(yùn)算量和數(shù)據(jù)吞吐量。圖像壓縮是信息傳輸和存儲(chǔ)系統(tǒng)的關(guān)鍵技術(shù),然而如何進(jìn)行FPGA設(shè)計(jì),以實(shí)現(xiàn)給定的功能已經(jīng)成為神經(jīng)網(wǎng)絡(luò)應(yīng)用的關(guān)鍵。
基于以上原因,選擇FPGA作為三層BP神經(jīng)網(wǎng)絡(luò)圖像壓縮算法的實(shí)現(xiàn)方式,提出了具體的一種實(shí)現(xiàn)方案,并對(duì)其中的重點(diǎn)單元進(jìn)行了FPGA設(shè)計(jì)與仿真驗(yàn)證。
1 BP神經(jīng)網(wǎng)絡(luò)圖像壓縮算法
一般習(xí)慣將單隱層前饋網(wǎng)稱為三層前饋網(wǎng),它包括輸入層、隱含層和輸出層。三層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,原始數(shù)據(jù)節(jié)點(diǎn)和重建數(shù)據(jù)節(jié)點(diǎn)構(gòu)成節(jié)點(diǎn)數(shù)較大的外層(輸入層和輸出層),而中間的具有較小節(jié)點(diǎn)數(shù)的細(xì)腰層即構(gòu)成壓縮結(jié)果。其基本思想是強(qiáng)迫原始數(shù)據(jù)通過細(xì)腰型網(wǎng)絡(luò)瓶頸,并期望在網(wǎng)絡(luò)的瓶頸處能獲得較為緊湊的數(shù)據(jù)表示,以達(dá)到壓縮的目的。在網(wǎng)絡(luò)的學(xué)習(xí)過程中,通過BP訓(xùn)練算法,調(diào)整網(wǎng)絡(luò)的權(quán)重,使重建圖像在均方誤差意義上盡可能近似于訓(xùn)練圖像。經(jīng)過訓(xùn)練的網(wǎng)絡(luò)即可用來執(zhí)行數(shù)據(jù)壓縮任務(wù),網(wǎng)絡(luò)輸入層與隱含層之間的加權(quán)值相當(dāng)于一個(gè)編碼器,隱含層與輸出層之間的加權(quán)相當(dāng)于一個(gè)解碼器。從輸入端輸入的原始圖像數(shù)據(jù)經(jīng)過神經(jīng)網(wǎng)絡(luò)的處理,在隱含層得到的輸出數(shù)據(jù)就是原始圖像的壓縮編碼,而輸出層矢量即為解壓后重建的圖像數(shù)據(jù)。
BP神經(jīng)網(wǎng)絡(luò)用于圖像編碼的壓縮比與輸入層和隱含層的節(jié)點(diǎn)數(shù)有關(guān):
壓縮比一輸入層節(jié)點(diǎn)數(shù)(n)/隱含層節(jié)點(diǎn)數(shù)(m)
因此一般來說采用不同數(shù)目的隱含層神經(jīng)元就可實(shí)現(xiàn)同一圖像的不同壓縮比。
三層BP前饋網(wǎng)中輸入向量X=x(x1,x2,…,xi,…,xn)T,隱含層輸出向量Y=y(y1,y2,…,yi,…,ym)T,輸出層輸出向量O=O(O1,O2,…,Ok,…,Ol)T,期望輸出向量d=d(d1,d2,…,dk,…,dl)T,輸入層到隱含層的權(quán)值向量V=v(v1,v2,…,vj,…,vm)T,其中vj為隱含層第j個(gè)神經(jīng)元對(duì)應(yīng)的權(quán)值向量;隱含層到輸出層的權(quán)值向量W=W(w1,w2,…,wk,…wl)T,其中wk為輸出層第k個(gè)神經(jīng)元對(duì)應(yīng)的權(quán)值向量;隱含層的閾值向量θ=(θ1,θ2,…,θi,…,θm)T;輸出層的閾值向量γ=(γ1,γ2,…,γk,…,γl)T。
評(píng)論