謝豪 曹健,? 李普 趙雄波 張興,?
1.北京大學軟件與微電子學院, 北京 102600; 2.北京航天自動控制研究所, 北京 100854;? 通信作者, E-mail: caojian@ss.pku.edu.cn (曹健), zhx@pku.edu.cn (張興)
計算機視覺是一種使用計算機代替人類視覺系統對圖像進行處理的方法, 卷積神經網絡(convolution neural network, CNN)是計算機視覺的一種常用方法。隨著神經網絡算法的不斷優化以及計算機系統性能的不斷提高, 計算機視覺對日常生活的影響日益擴大, 如自動駕駛路況識別以及 CT 圖像識別等[1–2]。一些需要在端側部署神經網絡模型的場景中, 神經網絡模型計算量過大, 端側設備算力不足,功耗受限成為具有挑戰性的問題。
常用的目標檢測神經網絡算法包括 SSD (single shot detector)、YOLO (you only look once)和 R-CNN(region-CNN)[3–5]。SSD 算法檢測速度較快, 對尺寸不同的目標均有較好的檢測效果。FPGA (field programmable gate array)內部具有大量的并行計算資源, 并且比 GPU 功耗低, 適用于在端側實現卷積神經網絡算法的加速。
FPGA 加速神經網絡算法時, FPGA 內部的計算資源的總數是固定的, 應盡可能將計算資源利用起來, 使大部分計算資源處于工作狀態。Zhang 等[6]采用卷積分塊, 對計算資源進行復用, 采用roofline模型分析來提高計算并行度, 降低系統對數據傳輸帶寬的需求。Ma 等[7–8]采用循環展開的方式實現PE (processing element)單元, 對數據傳輸和卷積計算建模, 進行設計空間探索, 對不同的模型采用不同的加速器結構, 提高了PE單元的利用率。Gong等[9]利用FPGA的動態可重配置技術, 對同一模型的不同卷積層, 也采用不同的加速器結構, 進一步提高 FPGA 內部資源的利用率。Nguyen 等[10]采用細粒度的層間流水方法, 針對不同卷積層的特點細化資源的使用。……