林朋雨,郭 杰*
(1. 西安電子科技大學綜合業務網理論及關鍵技術國家重點實驗室,陜西 西安 710071;2. 西安電子科技大學通信工程學院,陜西 西安 710071)
卷積神經網絡是一種多層感知器,對圖像的傾斜、比例縮放和平移等形式的變形具有較高的適應度[1]。卷積神經網絡的結構與生物神經網絡結構相似,但降低了權值的數量和網絡模型的復雜度[2]。在卷積神經網絡中圖像可以直接作為輸入,解決了傳統識別算法中數據重建和特征提取過程中復雜度高的問題[3]。卷積神經網絡結構近年來被廣泛地應用在圖像搜索、視頻監視、模式識別和機器視覺等領域中[4]。在上述背景下對卷積神經網絡進行加速優化具有重要意義。
謝斌紅[5]等人提出基于流合并與剪枝的網絡加速優化方法,該方法減去模型內部每層中存在的冗余參數,將重要的層與非重要的層在模型結構上進行流合并,通過重新訓練實現卷積神經網絡的加速優化,該方法沒有構建卷積神經網絡的前向傳播模型,導致資源在卷積神經網絡中浪費嚴重,存在資源消耗率高的問題。方程[6]等人提出基于GPU的網絡加速優化方法,該方法在GPU運行過程中通過直接系數卷積算法進行加速,處理稀疏數據,用稠密向量和稀疏向量的內積運算代替卷積運算,在GPU平臺中實現卷積神經網絡的加速優化,該方法沒有分析卷積神經網絡的前向傳播結構,導致卷積神經網絡中的冗余數據較多,存在網絡計算量大的問題。
FPGA具有開發周期短、靈活可配、計算資源豐富的特點,為了解決上述方法中存在的問題,提出基于FPGA的卷積神經網絡加速優化方法。
基于FPGA的卷積神經網絡加速優化方法構建卷積神經網絡前向傳播模型,利用傳播模型分析卷積神經網絡前向傳播結構,包括卷積層、池化層、激活函數和填充,為卷積神經網絡的加速優化提供相關依據。
1)卷積層
卷積核和卷積層的輸入在圖像處理中一般情況下都是三維的[7]??梢酝ㄟ^多個二維的k×k卷積核與多幅二維的輸入特征圖相乘累加得到二維輸出特征圖。針對輸入特征圖對應的卷積,多組不同的三維卷積核可以得到對應的二維輸出特征圖OUTj

(1)
式中,OUTj代表的是第j個輸出特征圖;kij代表的是輸出特征圖對應的卷積核;INi代表的是第i個輸入特征圖;bj代表的是輸入特征圖對應的偏置。
輸入圖像與輸出圖像之間存在的尺寸,以輸入特征圖的高H為例,符合下述公式

(2)
式中,R代表的是輸出特征圖對應的高;S代表的是卷積框滑動步長;P代表的是填充單位。
通過M組k×k×N卷積核之間的乘累加計算,針對N幅H×L尺寸的輸入特征圖,可以得到M個二維輸出特征圖,尺寸為R×C。卷積核的數量與輸出特征圖的數量相同,通道數通??梢杂肗的數量進行表示,通常情況下卷積核與特征圖的通道數都是相同的[8]。
2)池化層
池化屬于卷積操作,也被稱為下采樣。經過卷積層運算后,卷積神經網絡中特征圖數量不斷增加,直接將其輸入網絡的下一層中會導致計算量過大的問題,為了解決上述問題[9]。基于FPGA的卷積神經網絡加速優化方法池化處理輸入數據,降低圖片對應的分辨率,將分辨率較低的圖像輸入卷積神經網絡中,降低了卷積神經網絡的復雜度。
輸入尺寸與輸出尺寸之間符合下式

(3)
式中,S代表的是池化框對應的移動步長;K代表的是池化框對應的尺寸。
3)激活函數
在隱藏層中激活函數占據重要地位,輸入和輸出在卷積計算過程中屬于線性加權的線性關系[10],常用的激活函數如下:
Sigmod 函數的表達式如下

(4)
與Sigmod 函數類似,tanh 函數對卷積計算結果進行了壓縮處理,tanh 函數的表達式如下

(5)
ReLU函數計算速度較快,在計算過程中不存在復雜的指數計算,ReLU函數表達式較為簡單
ReLU(x)=max(0,x)
(6)
4)填充
填充按照行或列對稱的形式將零元素增加到特征圖的邊界中。
基于FPGA的卷積神經網絡加速優化方法根據卷積神經網絡前向傳播結構利用FPGA對卷積神經網絡進行加速優化。FPGA的計算框架如圖1所示。

圖1 FPGA加速器整體框架
運算方式在每個卷積窗口中都是相同的,第m個通道在卷積輸出特征圖中滿足下式

(7)
式中,m∈[1,M],在該卷積窗口中存在M個輸出值O1,O2,…,OM。
在上式的基礎上,令

(8)
可將式(7)轉變為下式

(9)
基于FPGA的卷積神經網絡加速優化方法通過以下兩種方法對M個輸出值O1,O2,…,OM進行計算:
1)首先對參數am1,am2,…,amN進行計算,根據計算結果進行求和運算,將參數bm與求和結果相加,獲得Om,令m在區間[1,M]內取值,集合獲得M個輸出值O1,O2,…,OM。
2)由式(9)可知

(10)
1級(輕度靜脈炎):一種炎癥癥狀或體征(不包括條索狀硬化或膿液流出);2級(中度靜脈炎):出現兩種炎癥癥狀或體征(不包括條索狀硬化或膿液流出);3級(重度靜脈炎):出現條索狀硬化和/或膿液流出和/或更多炎癥癥狀或體征)。

(11)
式中,參數n在區間[1,N]內取值。
通過上述分析可知,可并行計算在卷積神經網絡的卷積層中存在三個部分:
1)并行計算式(8)中的HkWk個乘法,此時卷積核內部中存在并行計算,即卷積內并行。
2)通過式(9)對卷積神經網絡中存在的第m個卷積輸出Om進行計算時,可以并行計算N個輸入通道對應的卷積,利用獲取的卷積結果獲得對應的卷積輸出Om[11],在卷積神經網絡中上述過程被稱為輸入通道并行。
3)輸出通道并行:在卷積神經網絡中計算輸出在卷積層對應的第n個分量n時,并行計算卷積神經網絡中n個輸入通道的卷積和M個卷積核中通道的卷積。
1)全并行乘法與加法樹模塊
卷積核在卷積神經網絡中通常為正方形,設定Wk=Hk=K為卷積核在卷積神經網絡中的大小,y代表的是卷積神經網絡的卷積輸出,其計算公式如下

(12)
基于FPGA的卷積神經網絡加速優化方法設計的加法樹需要g2(η)個寄存器,f2(η)個加法器,時鐘周期為h2(η)

(13)
f2(η)=η-1
(14)
h2(η)=[log2η]
(15)
乘法-加法樹模塊在FPGA加速器中的運行過程如下:
①在緩存區中輸入卷積核權重矩陣和特征圖矩陣,分別稱為權重緩存和輸入緩存。
②在權重緩存和輸入緩存中獲取數據,利用乘法器對K2個乘法進行并行計算,獲得中間結果。
③構建加法樹,將中間結果輸入加法樹中,獲得乘法-加法模塊的最終輸出結果。
2)高效窗口緩存模塊
在卷積層進行相關計算時,生成的卷積窗口數量較多,G為生成的窗口數量,其計算公式如下
G=HW
(16)
設通道矩陣在輸入特征圖中的形狀為[H,W],令

(17)
將矩陣x的第i行第j列元素的下標表示為j+(i-1)W,則矩陣x可轉變為下述形式

(18)
如果利用硬件并行所有卷積窗口,計算資源會被消耗的太多。為了降低資源消耗,基于FPGA的卷積神經網絡加速優化方法利用流水線的方法對卷積窗口進行操作,減少計算資源和存儲資源。通過兩個2維寄存器組建窗口緩存模塊,分別是移位寄存器和窗口緩存器[12]。
結合上述并行部分,基于FPGA的卷積神經網絡加速優化方法設計卷積層并行加速方案實現卷積神經網絡的加速優化。
設Xi代表的是第i個通道在輸入特征圖矩陣X中的某個卷積窗口;Wmni描述的是第n個通道在第m個卷積核中對應的權重矩陣,此時卷積神經網絡中的輸入為
amn=Xn·Wmn
(19)
通過上述運算實現卷積神經網絡的加速優化。
為了驗證所提方法的有效性,需要在xilinx公司ISE硬件開發的平臺中對所提方法進行測試,測試所用的軟件開發工具為visual studio 2013,CPU為Core i5 2500K四核處理器,基準主頻為3.3GHz。將資源消耗率作為測試指標,分別采用文獻[5]方法、文獻[6]方法作為實驗對比方法,與基于FPGA的卷積神經網絡加速優化方法共同測試資源消耗率,得到對比結果如圖2所示。

圖2 不同方法的資源消耗率
由圖2中的數據可知,采用所提方法對卷積神經網絡進行加速優化處理時,卷積神經網絡中的資源消耗率控制在30%以內;采用文獻[5]方法加速優化卷積神經網絡時,資源消耗率高達60%;采用文獻[6]方法加速優化卷積神經網絡時,資源消耗率高達70%,對比所提方法、文獻[5]方法和文獻[6]方法的測試結果可知,雖然經3種方法優化后的卷積神經網絡資源消耗率都隨著運行時間的增加而增加,但所提方法的資源消耗率遠遠低于文獻[5]方法和文獻[6]方法的資源消耗率,因為所提方法的為了減少資源在卷積神經網絡中的消耗,根據建立的卷積神經網絡前向傳播模型利用流水線方法對卷積神經網絡中存在的窗口進行相關操作,減少了卷積神經網絡運行所需的計算資源和存儲資源,降低了所提方法的資源消耗率。
將網絡計算量作為測試指標,進一步對所提方法、文獻[5]方法和文獻[6]方法進行測試,網絡計算量越低表明卷積神經網絡的加速優化效果越好,不同方法的測試結果如圖3所示。

圖3 不同方法的網絡計算量
分析圖3可知,在多次實驗中所提方法優化后的卷積神經網絡的計算量均在1.0GFLOPS以下,文獻[5]方法優化后的卷積神經網絡的計算量在第4次實驗過程中高達1.7GFLOPS,文獻[6]方法優化后的卷積神經網絡的計算量在第3次實驗過程中高達2.0GFLOPS,對比所提方法、文獻[5]方法和文獻[6]方法的卷積神經網絡計算量可知,所提方法獲得的網絡計算量最少,網絡計算量越少表明方法的加速優化效果越好,因為所提方法對卷積神經網絡前向傳播結構進行了分析,并根據分析結果在通道并行卷積層加速設計中通過全并行乘法-加法樹模塊進行相關運算,減少了卷積神經網絡的計算量,提高了卷積神經網絡的整體運行效率,驗證了所提方法的整體有效性。
在深度學習領域中,卷積神經網絡是人工智能發展和研究的熱點,成為一個重要領域,卷積神經網絡具有識別精度好和復雜度低的優點,在圖片搜索、機器視覺、語音識別和圖像識別等應用中得到了廣泛的應用。網絡模型的計算量隨著類型不同的卷積神經網絡模型的出現不斷加大,且一些高實時性要求的場合利用現有的CPU無法滿足,因此需要對卷積神經網絡進行加速優化處理。當前卷積神經網絡加速優化方法存在資源消耗率高和網絡計算量大的問題,提出基于FPGA的卷積神經網絡加速優化方法,在卷積神經網絡前向傳播模型的基礎上利用重構性、靈活性高的FPGA對卷積神經網絡進行優化加速,降低了資源在卷積神經網絡中的消耗率,減少了卷積神經網絡的計算量,為卷積神經網絡在眾多領域的發展提供了保障。