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。
?(1)用小的隨機數對每一層的權值和偏差初始化,以保證網絡不被大的加權輸入飽和,并進行以下參數的設定或初始化:期望誤差最小值;最大循環次數;修正權值的學習速率;
??? (2)將原始圖像分為4×4或8×8大小的塊,選取其中一塊的像素值作為訓練樣本接入到輸入層,計算各層輸出:
???
??? 其中:f(·)為BP網絡中各層的傳輸函數。
??? (3)計算網絡輸出與期望輸出之間的誤差,判斷是否小于期望誤差,是則訓練結束,否則至下一步,其中反傳誤差的計算式為:
???
??? (4)計算各層誤差反傳信號;
??? (5)調整各層權值和閾值;
??? (6)檢查是否對所有樣本完成一次訓練,是則返回步驟(2),否則至步驟(7);
??? (7)檢查網絡是否達到最大循環次數,是則訓練結束,否則返回步驟(2)。
??? 經過多次訓練,最后找出最好的一組權值和閾值,組成三層前饋神經網絡,用于該算法的FPGA設計。
??? 其中,在數據預處理部分,首先將原始圖像分成n×n的小塊,以每一小塊為單位進行歸一化。歸一化的目的,主要有以下兩點:
??? (1)BP網絡的神經元均采用Sigmoid轉移函數,變換后可防止因凈輸入的絕對值過大而使神經元輸出飽和,繼而使權值調整進入誤差曲面的平坦區;
??? (2)Sigmoid轉移函數的輸出在-1~+1之間,作為信號的輸出數據如不進行變換處理,勢必使數值大的輸出分量絕對誤差大,數值小的輸出分量絕對誤差小。網絡訓練時只針對輸出的總誤差調整權值,其結果是在總誤差中占份額小的輸出分量相對誤差較大,對輸出量進行尺度變化后這個問題可迎刃而解。
??? 歸一化后得到以每小塊的灰度值為列向量組成的待壓縮矩陣,將該矩陣存儲在RAM里,然后以每一列為單位發送給先人先出寄存器FIFO(First Input FirstOutput);由FIFO將向量x1,x2,…,xn以流水(pipe-line)方式依次傳人各乘累加器MAC(Multiply-Accu-mulate),相乘累加求和后,送入LUT(Lookup Table)得到隱層相應的節點值,這里LUT是實現Sigmoid函數及其導函數的映射。
??? 在整個電路的設計中,采用IP(Intellectual Prop-erty)核及VHDL代碼相結合的設計方法,可重載IP軟核,具有通用性好,便于移植等優點,但很多是收費的,比如說一個高性能流水線設計的MAC軟核,所以基于成本考慮,使用VHDL語言完成MAC模塊的設計,而RAM和FIFO模塊則采用免費的可重載IP軟核,使整個系統的設計達到最佳性價比。在壓縮算法的實現中,乘累加單元是共同部分,也是編碼和譯碼器FPGA實現的關鍵。
2.2 乘累加器MAC的流水線設計及其仿真
??? 流水線設計是指將組合邏輯延時路徑系統地分割,并在各個部分(分級)之間插人寄存器暫存中間數據的方法。流水線縮短了在一個時鐘周期內信號通過的組合邏輯電路延時路徑長度,從而提高時鐘頻率。對于同步電路,其速度指同步電路時鐘的頻率。同步時鐘愈快,電路處理數據的時間間隔越短,電路在單位時間內處理的數據量就愈大,即電路的吞吐量就越大。理論而言,采用流水線技術能夠提高同步電路的運行速度。MAC電路是實現BP神經網絡的重要組成部分,在許多數字信號處理領域也有著廣泛應用,比如數字解調器、數字濾波器和均衡器,所以如何提高MAC的效率和運算速度具有極高的使用價值。本方案采用的MAC設計以四輸入為例。
??? 四輸入的MAC電路必須執行四次乘法操作和兩次加法操作,以及最后的兩次累加操作。如果按照非流水線設計,完成一次對輸入的處理,需要這三步延遲時間的總和,這會降低一個高性能系統的效率。而采用流水線設計,則可以避免這種延遲,將MAC的操作安排的像一條裝配線一樣,也就是說,通過這種設計它可以使系統執行的時鐘周期減小到流水線中最慢步驟所需的操作時間,而不是各步驟延遲時間之和,如圖3所示。
??? 在第一個時鐘邊沿,第一對數據被存儲在輸入寄存器中。在第一個時鐘周期,乘法器對第一對數據進行乘法運算,同時系統為下一對數據的輸入作準備。在第二個時鐘邊沿,第一對數據的積存儲在第一個流水線寄存器,且第二對數據已經進入輸入寄存器。在第二個時鐘周期,完成對第一對數據積的兩次加法操作,而乘法器完成第二對數據的積運算,同時準備接收第三隊數據。在第三個時鐘邊沿,這些數據分別存放在第二個流水線寄存器,第一個流水線寄存器,以及輸入寄存器中。在第三個時鐘周期,完成對第一對數據和之前數據的累加求和,對第二對數據的兩次加法操作,對第一對數據的乘法運算,并準備接收第四對數據。在第四個始終邊沿,累加器中的和將被更新。
在本設計方案中,測試仿真平臺選用的FPGA芯片為ALTERA公司CycloneⅡ系列的EP2C8芯片,它采用90 nm的制造工藝,擁有8 256個邏輯單元,36個M4K隨機只讀存儲器,2個數字鎖相環,以及18個硬乘法器等豐富資源。仿真工具使用業界流行的MentorGraphics公司的仿真軟件Modelsim 6.1f。對設計進行驗證時,常見的方法是在模擬時施加輸入激勵信號,然后“讀”該設計的輸出信號,它的主要缺點是隨著模擬器的不同而不同。為了克服此缺點,采用的測試方法是用VHDL編寫一個測試模型發生器,稱為Testbench,它的優點是通用性好,靈活性強,可以隨時更改輸入激勵,已得到不同的仿真結果。在對該MAC模塊進行測試的過程中,涉及輸入數據的轉化問題,如前所述,在本神經網絡中,輸入數據歸一化后,集中在-1~+1之間,所以處理時必須進行轉化,最后采用16位補碼形式的定點二進制表示法,由于在求和中可能會產生溢出,還必須包含一個溢l出狀態信號。輸入數據轉換16位補碼的仿真波形如圖4所示。
?
??? 16位補碼轉換原輸入實數的仿真波形如圖5所示。
??? 在完成了對輸入、輸出數據的轉換之后,編寫Testbench(測試臺)程序,對基于流水線設計的四輸入MAC進行行為級仿真,仿真波形如圖6所示。
??? 綜上所述,在基于流水線的乘法設計中,雖然每一步操作后都加入了寄存器,消耗了更多的資源,但卻可以將系統延時降低到最慢步驟所需要的時間,極大地提高了同步電路的運算速度。
3 結 語
??? 介紹了基于三層前饋BP神經網絡的圖像壓縮算法,提出了基于FPGA的實現驗證方案,詳細討論了實現該壓縮網絡組成的重要模塊MAC電路的流水線設計。在對BP神經網絡的電路設計中,對傳輸函數及其導函數的線性逼近也是近來研究的熱點之一,本文使用的壓縮查找表雖然能夠滿足設計要求,但仍然消耗了大量資源。該研究結果對整個壓縮解壓縮算法的實現以及多層神經網絡的相關研究工作提供了參考。
評論
查看更多