電子科技大學電子科學與工程學院 周 航 賀雅娟
近年來,卷積神經網絡(CNN)在機器視覺等方面取得了巨大成功。為提升嵌入式設備上運行CNN的速度和能效,本文針對LeNet-5網絡模型,先對該網絡模型進行感知量化訓練,特征圖和權重量化為8位整型數據。然后設計一種卷積神經網絡加速器系統,該片上系統(SoC)采用Cortex-M3為處理器,所提出的系統處理一張MNIST圖像所需時間5.3ms,精度達到98.2%。
CNN已成功應用于圖像識別等應用,隨著CNN解決更復雜的問題,計算和存儲的需求急劇增加。然而,在一些低功耗的邊緣計算設備中,功耗是重要指標。目前的研究主要針對CNN推理階段模型的壓縮和量化。大多數設計都用定點計算單元代替浮點單元。ESE采用12位定點權重和16位定點神經元設計,Guo等在嵌入式FPGA上使用8位單元進行設計。但之前的設計主要采用Zynq或者HLS開發,功耗較大。
本文設計了一種基于FPGA的卷積神經網絡加速系統。首先,通過感知量化訓練的方法,實現了將浮點CNN模型的各層權重和特征圖量化成8比特整型;其次,通過采用單層時分復用的方式,設計流水線架構提高數據吞吐率;再次,設計基于Cortex-M3的SoC;最后,采用MNIST手寫數字進行方案和功能驗證。
LeNet-5是一個典型的卷積神經網絡模型,不包含輸入一共有7層。分別為3層卷積層,2層池化層,以及2層全連接層。
針對目前CNN模型較大,參數多且不適合在移動設備上使用,Google團隊提出了一種量化方案。該方案在推理過程中使用純整。量化方案是量化整數q到實數r的映射,如公式(1)所示:

其中常數S和Z是量化參數。S表示比例系數,是一個任意的正實數。Z表示零點。CNN中主要的操作,比如卷積層的卷積,以及全連接層的乘累加,都可以看成是矩陣乘法??紤]實數兩個N×N的矩陣r1和r2的乘積r3=r1r2。將每個矩陣ra的項表示為ra(r,j),其中1≤i,j≤N,用qa(r,j)表示量化項,根據矩陣乘法的定義,得到:

乘以浮點數M,可以轉化成先乘以定點數M1,再進行右移n+31。
將公式(2)中所有零點Z1,Z2,Z3都設為0,可以大大簡化推理階段的運算。另外將偏置加法和激活函數合并到其中。比例系數Sbias=S1S2,零點Zbias=0。由于選用的激活函數是ReLU,所以只需要將結果鉗位到[0,255]。
本系統采用CPU+FPGA的架構,包括AHB互聯矩陣、Cortex-M3處理器、DMA、緊耦合存儲器、雙端口緩存、AHB2APB橋和CNN加速器,如圖1所示。

圖1 系統框圖
存儲器部分包含ITCM,DTCM和雙端口RAM。ITCM存放程序鏡像文件;DTCM作為堆棧區;Dual RAM作為權重數據,輸入特征圖,以及中間、最終結果緩存區,一端連接L1級總線,CPU和DMA均可以訪問,另一端連接CNN加速器。
CNN加速器設計的整體結構如圖2所示,并行方案采用輸出通道和權重卷積核內部并行,同時計算6個輸出通道,以及卷積核25個乘法器同時計算。

圖2 CNN加速器整體結構
特征圖行緩沖的窗口尺寸為5x5,可以通過數據選擇器選擇輸入特征圖的寬度。權重特征圖的行緩沖設計同理,由于卷積核均為5x5,所以不需要數據選擇器。
乘累加陣列輸入為25個8位特征圖和25個8位權重,對應相乘后采用加法樹方式累加,最后得到1個位寬為21的有符號數。
偏置加法器用于累加偏置或者中間結果。選擇哪一個是由數據選擇器控制,輸出一個32位結果。
量化激活模塊包含一個32x32位的乘法器,用于將累加結果和乘法系數相乘,再經過右移,鉗位到[0,255],經過四舍五入得到量化的結果。
池化模塊設計思路同卷積模塊,采用最大池化。包含3個比較器和一個行緩沖,針對不同層可以選擇不同長度的特征圖,窗口尺寸為2x2。
本文采用的FPGA是Xilinx公司的Artix-7XC7A200T芯片,開發環境為Vivado 2018.3。卷積神經網絡訓練和推理采用Pytorch 1.7.1。實驗的數據集是MNIST數,CNN模型采用LeNet-5。
本文的SoC工作的頻率為100MHz,識別一張MNIST圖片的時間為5.3ms,FPGA的功耗由Vivado的Report Power工具獲得,僅為0.448W。本文處理單幀的時間比較長,但是功耗是其他文獻的四分之一。由于采用感知量化,識別正確率FPGA實現和軟件實現一致,達到98.2%。實驗結果對比如表1所示。

表1 實驗結果對比
結論:為了解決嵌入式設備上實現卷積神經網絡速度慢和功耗大的問題,本文提出了一種卷積神經網絡加速系統。首先對卷積神經網絡進行感知量化,得到8比特的權重、特征值和量化參數。采用Cortex-M3作為處理器設計片上系統,大大降低了功耗。本設計在Artix-7 Xc7a200T上實現了LeNet-5。通過MNIST數據集,實驗結果表明本設計保持了準確性,降低了功耗。