楊培宇 楊自恒 徐勤濤 劉爽

摘要:近年來,FPGA越來越多地應用于語音識別、機器學習和云計算等領域。這是由于FPGA具有強大的并行計算能力,而且與通用處理器相比功耗較低。然而,這些應用主要集中在大規模的FPGA集群上,具有極強的處理能力執行大量的矩陣運算或卷積運算,但不適合便攜式或移動應用程序。本文通過對單FPGA平臺的研究,探索FPGA在這些領域中的應用。在本課題中,我們實現了一個LeNet-5模型。并在裝有XILINX ZYNQ SOC XC7Z020-1CLG400C的PYNQ板上實現了一個帶有AXI Stream接口的硬件加速器。我們在CPU平臺上對模型進行訓練,并將模型部署到PYNQ板上,用Jupyter notebook對模型進行驗證。
關鍵詞:FPGA;卷積神經網絡;PYNQ
1.前言
在當代社會,研究人員在人工智能和機器學習領域取得了大量的成果。特別是alpha Go的成功提高了人們對人機交互領域的信心。然而,深度學習相關算法以比傳統機器學習算法更高的精度優勢應用到了許多領域,其中卷積神經網絡(Convolutional Neural Network,簡稱CNN)的研究越來越受到許多研究者的關注,已被廣泛應用于圖像分類[1],人臉識別[2],數字視頻監控[3]等領域。這些神經網絡算法在上述領域中具有較高的精度和良好的性能。運行卷積神經網絡需要大量的計算能力來模擬神經元的操作和數據的訪問,FPGA由于其并行性,可以充分發揮算法的并行性。
2.LeNet-5模型
在本次設計中,我們采用的LeNet-5模型算法。該模型主要由卷積層、池化層和全連接層共同組成。對于FPGA來說,解決方案是實現卷積神經網絡的前向計算過程,它將在CPU平臺上對模型進行訓練,將圖像數據和已訓練好的權值數據加載到內存中,進行乘法和加法運算來完成神經元的前向計算。
(1)卷積層
卷積層的二維卷積單元計算過程可由公式(2-1)計算得到, 和 表示圖像輸入的大小, 表示卷積核的權重, 表示閾值。
(2)池化層
公式(2-2)描述了池化層的數學模型,將給定區域( )像素的最大值作為輸出 。
(3)全連接層
公式(2-3)描述了前向神經網絡模型, 表示權重矩陣, 表示輸入圖像矩陣, 代表閾值。
3.設計方案
我們在PYNQ開發板上實現一個LeNet-5模型算法,該模型采用ZYNQ-7020-1CLG400C芯片,支持Python和Jupyter notebook編程。PYNQ是Python Productivity for ZYNQ[4]的的縮寫。從硬件架構上看,PYNQ的核心芯片是Xilinx ZYNQ芯片,這是一個可編程邏輯(PL)與處理系統(PS)相結合的FPGA SOC平臺。在32位ARM內核的處理系統(PS)端,我們可以利用一種FPGA硬件庫Overlay為卷積神經網絡創建一個硬件加速器。
本文工作主要分為三個部分:
(1)PC機下利用MNIST[5]數據集進行訓練得到權值數據,為FPGA的實現提供條件。
(2)PS端用于實現應用程序可視化和提供編程接口,完成對PL端的控制以及應用程序的運行;通過在PS端進行編程,直接將數據集存放在SD卡上,當網絡運行時,通過ARM端的app將SD卡的數據集加載到DDR中,通過DMA總線下發到PL端。
(3)PL端將執行LeNet-5模型前向網絡的搭建。卷積層和池化層運行在卷積計算引擎中,該引擎由多組并行的乘累加計算單元組成,同時每個乘累加計算單元包含一個激活層。全連接層的其余部分在全連接計算引擎中實現,使用乒乓緩存機制,在卷積層和全連接層之間進行數據同步,降低對內存的消耗。圖像數據、權值數據和輸出數據存儲在FPGA的Block RAM中。PS端和PL端的通信,使用AXI DMA總線來提高數據傳輸速度。這些模塊都由它們各自的控制單元控制,并用有限狀態機(FSM)實現。
4.結論
本文實現了LeNet-5模型算法,并通過Jupyter notebook將訓練好的模型部署到PYNQ開發板上,設計了一個基于FPGA的卷積神經網絡硬件加速器。采用python編程語言設計了一個FPGA SOC系統,加快了FPGA的開發進程,拓寬了FPGA的應用范圍。我們建立了一個硬件加速器與AXI Stream接口,與軟件程序進行交互,證明了軟件和硬件的聯合設計可以在神經網絡領域發揮作用。該模型可以通過CPU或GPU進行訓練后傳送到FPGA SOC系統中,開發在移動設備上的應用。
參考文獻
[1]Ioannou Y,Robertson D,Shotton J,et al.Training Convolutional Neural Networks with Low-rank Filters for Efficient Image Classification[J].Journal of Bacteriology,2016,167(3):774-783.
[2]Sun Y,Wang X,Tang X.Deep Learning Face Representation from Predicting 10,000 Classes[C].IEEE Conference on computer Vision and Pattern Recognition.IEEE Computer Society,2014:1891-1898.
[3]Li J,Karmoshi S,Zhu M.Unconstrained face detection based on cascaded Convolutional Neural Networks in surveillance video [C],International Conference on Image,Vision and Computing.IEEE,2017:46-52.
[4]“PYNQ”.[Online] Available:http://www.pynq.io/home.html.
[5]http://yann.lecun.com/exdb/mnist/.
作者簡介:楊培宇(1996.01-),男,河北省河間市人,哈爾濱市南崗區黑龍江大學,電子與通信工程專業2018級,碩士研究生,研究方向:人工智能及FPGA實現方向。