剛好在知乎上看到這個問題如何用FPGA加速卷積神經網絡CNN,恰巧我的碩士畢業設計做的就是在FPGA上實現CNN的架構,在此和大家分享。
先說一下背景,這個項目的目標硬件是Xilinx的PYNQ。該開發板加載了Linux Ubuntu操作系統,可以在CPU上運行現有的Python CNN架構如Caffe和Theano。本設計旨在用PYNQ加載的ZYNQ FPGA對于CNN核心計算進行硬件加速,以達到對于大規模信息流進行大吞吐量CNN處理。
該設計結構可以分為CPU端(前端)和FPGA端(后端)兩部分。前端使用的是Python,用來與其他軟件項目進行交互。前端將數據以數據流的形式由DDR傳輸到FPGA kernel。后端的FPGA硬件設計使用的是Synchronous Dataflow Paradigm。在這個結構之下,數據流以AXI-Stream的協議穿梭于每一個CNN層。每一個層都使用并行結構加上高性能流水線,使整體吞吐量效率達到一個非??捎^的水平。
上圖為實現LeNet-5的硬件結構示意圖。對于LeNet-5,該設計達到了1.88GOP/S的吞吐量,與PYNQ上的DUAL CORE ARM CPU相比加速約32倍。目前該架構可運行LeNet和CIFAR10,有教程。
這個項目結構比較簡單,適合FPGA初學者作為研究起點使用。感興趣的話,可以以這個架構為基礎設計幾個CNN的應用,或者在它的基礎上進行優化和再創造。
-
FPGA
+關注
關注
1630文章
21796瀏覽量
606010 -
神經網絡
+關注
關注
42文章
4779瀏覽量
101171
發布評論請先 登錄
相關推薦
評論