Sparse-YOLO: Hardware/Software Co-Design of an FPGA Accelerator for YOLOv2
ABSTRACT
YOLO是最流行的检测框架之一,它在速度和准确性之间进行了最佳的权衡。然而,由于CNN固有的高计算工作量,在针对低能耗的高通量处理时仍然具有挑战性。该方法提出一种针对CPU+ FPGA异构平台的软硬件协同设计方法。首先,将一种新的稀疏卷积算法扩展到YOLOv2框架中,然后开发了一种基于异步执行并行卷积核的资源高效FPGA加速架构。其次,引入了硬件感知神经网络剪枝、聚类和量化等算法级优化方案,成功地将YOLOv2算法的计算量节省了7倍;最后,提出了一种基于FPGA的加速器设计的端到端设计空间探索流程,研究并实现了两种硬件/软件分区策略。
1 介绍
虽然CNN是计算密集型的,但最近的研究表明通过对用于推理计算的CNN模型进行权重剪枝和量化,可以显著降低计算工作量和内存带宽需求。在硬件层面,还研究了专用加速器/处理器,以利用卷积算法固有的并行性,进一步加快计算速度。
在所有的硬件平台中,现场可编程门阵列(fpga)由于其灵活的架构(包括大量处理元件、片上存储块和可重构互连)而受到越来越多的关注,非常低的功耗和快速的开发周期(特别是借助基于高级合成(HLS)的工具)。
根据一些现有基于FPGA加速的YOLO算法可以分成三类:
- 第一个设计利用了CNN推理计算固有的并行性,以一种直接的方式执行空间卷积算法,在大量的数字信号处理器(DSP)块上执行大量的乘法累加(MAC)操作。
- 另一类方案用低位或单位逻辑运算(如AND或XOR)代替DSP对MAC运算的要求,使FPGA的逻辑资源通常比DSP块更丰富。可以开发更高效的硬件电路,打破片上DSP资源的限制。
- 第三种类型的加速器利用先进的卷积算法,如频域卷积方案,在硬件设计上,与直接的空间卷积算法相比,减少了计算工作量(即MAC操作的数量),反过来,为所实施的加速器获得了可观的性能增益。
本文主要贡献:
- 针对基于CPU+ fpga的异构计算平台开发了专用加速器架构。
- 提出了一种端到端软硬件协同设计(HW-SW)工作流程,涵盖了从算法级神经网络压缩到硬件级秒级电路设计和体系结构设计空间探索(DSE)的所有重要研究课题。
- 针对不同的硬件设置,提出了两种HW/SW分区策略。
2 背景
2.1 YOLOv2算法
2.2 ABM-SpConv算法
ABM-SpConv算法是一种特殊的稀疏卷积方法,旨在灵活平衡地利用FPGA加速器的片上逻辑和DSP资源。该方案的核心思想是将卷积计算中涉及到的累加和乘运算解耦为两个独立的阶段,通过共享唯一的量化权值,使乘法的计算复杂度降低到一个较低的累加速率。它的主要优点是,当在FPGA设备上实现稀疏卷积计算时,显著放松了对乘法器(DSP单元)的资源需求。
在FPGA上实现ABM-SpConv方案时,为了实现最大的效率和最高的吞吐量&#