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