李放 曹健,? 李普 謝豪 趙雄波 王源 張興,?
1.北京大學軟件與微電子學院, 北京 102600; 2.北京航天自動控制研究所, 北京 100070; 3.北京大學集成電路學院,北京 100871; ? 通信作者, E-mail: caojian@ss.pku.edu.cn (曹健), wangyuan@pku.edu.cn (王源), zhx@pku.edu.cn (張興)
卷積神經網絡(convolutional neural network,CNN)廣泛應用于目標檢測和圖像分類。由于 CNN的參數多、計算量大, 在處理這類任務時通用處理器效率較低。因此, 基于 GPU (graphics processing unit), FPGA (field programmable gate array)和 ASIC(application specific integrated circuit)的專用神經網絡加速器已經成為研究熱點[1]。在這些方法中, 基于 FPGA 的加速器獲得更多的關注。與 GPU 相比,FPGA 的能效比更高; 與 ASIC 相比, FPGA 的動態可重構性能適應深度學習算法的不斷變化[2–3]。
在目標檢測領域, YOLO (you only look once) 具有檢測速度快、網絡較為簡單的特點, 適合部署在端側平臺[4]。隨著算法的更新, YOLO 的后續版本使用更深的網絡來實現更高的檢測精度。YOLOv3使用的 Darknet-53 網絡共 106 層[5], 難以在終端平臺上直接部署。對網絡進行適當的剪枝和量化可以有效地減少算法復雜度和存儲復雜度, 同時確保推理精度[6–7], 適合硬件的實現。
Zhang 等[8]提出采用 Roofline 模型探索加速器空間, 并對不同卷積層采用統一的循環展開因子來減小設計難度。Qiu 等[9]針對加速器使用定點數計算帶來精度損失的問題, 提出動態定點量化的方法。然而, 這種訓練后量化的方式使得軟件推理的結果與硬件不一致, 造成難以修正的誤差。雖然Ahmad 等[10]設計了一種高并行度的硬件架構, 實現 460.8 GOP/s 的系統吞吐率, 但這種架構需要耗費更多的 FPGA 資源, 不適合在資源有限的平臺上部署。
本文采用軟硬件協同的方式, 設計一種通用的卷積神經網絡加速器, 并在 ARM+FPGA 異構平臺上成功部署, 實現端側實時目標檢測。……