高级检索

  • ISSN 1006-3080
  • CN 31-1691/TQ
引用本文:
Citation:

基于异构FPGA的目标检测硬件加速器架构设计

    作者简介: 夏琪迪(1998—),男,安徽亳州人,硕士生,主要研究方向为FPGA、嵌入式系统。E-mail:2389240877@qq.com;
    通讯作者: 颜秉勇, byyan@ecust.edu.cn
  • 中图分类号: TP183; TP368.2

Architecture Design of Target Detection Hardware Accelerator Based on Heterogeneous FPGA

    Corresponding author: YAN Bingyong, byyan@ecust.edu.cn ;
  • CLC number: TP183; TP368.2

  • 摘要: 近年来,如何实现低功耗、低成本、高性能的目标检测平台逐渐受到关注。本文采用粗细粒度优化、参数定点化与重排序等多种硬件加速方法,基于FPGA+SOC异构平台提出了一种低功耗目标检测加速器架构。在Zynq 7000系列FPGA上针对现有研究的设计局限性,对YOLOv2算法进行新型多维度硬件加速,并对加速器性能和资源耗费进行深入分析建模,验证架构合理性;为充分利用片上硬件资源对各个模块进行特定优化设计,针对被忽视的底层繁琐数据访问,改进加速器数据访存机制,有效减少了系统传输时延。实验结果表明,该架构在PYNQ-Z2平台上获得了26.98 GOPs的性能,比现有的基于FPGA的目标检测平台提高了约38.71%,功耗仅为2.96W,对目标检测算法的实际应用具有深远意义。
  • 图 1  YOLOv2网络结构

    Figure 1.  YOLOv2 network structure

    图 2  加速器数据流框架

    Figure 2.  Accelerator data flow framework

    图 3  粗粒度优化示意图

    Figure 3.  Schematic diagram of coarse-grained optimization

    图 4  优化前后FPGA中的乘加操作对比

    Figure 4.  Comparison of multiplication and addition operations in FPGA before and after optimization

    图 5  32位浮点数和16位定点数表示对比

    Figure 5.  Comparison between 32-bit floating-point numbers and 16-bit fixed-point numbers

    图 6  卷积模块展开示意图

    Figure 6.  Schematic diagram of convolution module expansion

    图 7  池化模块示意图

    Figure 7.  Schematic diagram of pooling module

    图 8  重排序示意图

    Figure 8.  Schematic diagram of reordering

    图 9  系统硬件加速器架构

    Figure 9.  System hardware accelerator architecture

    图 10  YOLOv2网络硬件加速系统

    Figure 10.  YOLOv2 network hardware acceleration system

    图 11  实验环境与检测结果

    Figure 11.  Experimental environment and test results

    表 1  不同数据精度消耗资源对比

    Table 1.  Comparison of resource consumption with different data accuracy

    Consume resources (Data precision)DSPLUT
    Adders(Float-32)2214
    Multiplier(Float-32)3135
    Adders(Fixed-16)-47
    Multiplier(Fixed-16)1101
    下载: 导出CSV

    表 2  加速器资源消耗

    Table 2.  Accelerator resource consumption

    ResouresUsedAvailableUtilization/%
    LUTs35 97753 20067.62
    FF32 049106 40030.12
    BRAM_18K17828063.57
    DSP48E15222069.09
    下载: 导出CSV

    表 3  与其他FPGA加速器设计的比较

    Table 3.  Comparison with other FPGA accelerator designs

    AcceleratorCNN ModelPlatformFrequency/ MHzBRAMDSPPower/WPerformance /GOPs
    Ref[22]YOLOv1ZC706200N/A8002.1718.82
    Ref[13]LW YOLOv2Zynq Ultra30017063774.5N/A
    Ref[23]YOLOv2 TinyCyclone V117N/A122N/A19.45
    This WorkYOLOv2PYNQ-Z21501781522.9626.98
    下载: 导出CSV
  • [1] SOKOLOVA A D, SAVCHENKO A V. Computation-efficient face recognition algorithm using a sequential analysis of high dimensional neural-net features[J]. Optical Memory and Neural Networks, 2020, 29(1): 19-29. doi: 10.3103/S1060992X2001004X
    [2] OH K, KIM S, OH I S. Salient explanation for fine-grained classification[J]. IEEE Access, 2020, 8: 6143361441.
    [3] YANG R, SINGH S K, TAVAKKOLI M, et al. CNN-LSTM deep learning architecture for computer vision-based modal frequency detection[J]. Mechanical Systems and Signal Processing, 2020, 144: 106885. doi: 10.1016/j.ymssp.2020.106885
    [4] WANG D, XU K, JIA Q, et al. ABM-SpConv: A novel approach to FPGA-based acceleration of convolutional neural network inference[C]//Proceedings of the 56th Annual Design Automation Conference. Las Vegas, USA: ACM, 2019: 1-6.
    [5] CHEN X Z, KUNDU K, ZHU Y. 3D Object proposals for accurate object class detection[C]//International Conference on Neural Information Processing Systems. USA: MIT Press, 2015: 424-432.
    [6] DU Z, FASTHUBER R, CHEN T, et al. ShiDianNao: Shifting vision processing closer to the sensor[J]. ACM Sigarch Computer Architecture News, 2015, 43(3): 92-104.
    [7] ZHANG C, LI P, SUN G G, et al. Optimizing FPGA-based accelerator design for deep convolutional neural networks[C]//Proceedings of the 2015 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. USA: ACM, 2015: 161-170.
    [8] LI H, FAN X, JIAO L, et al. A high performance FPGA-based accelerator for large-scale convolutional neural networks[C]//2016 26th International Conference on Field Programmable Logic and Applications (FPL). Switzerland: IEEE, 2016: 1-9.
    [9] QIU J, WANG J, YAO S, et al. Going deeper with embedded fpga platform for convolutional neural network[C]//Proceedings of the 2016 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. USA: ACM, 2016: 26-35.
    [10] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. USA: IEEE, 2016: 779-788.
    [11] PEEMEN M, SETIO A, MESMAN B, et al. Memory-centric accelerator design for convolutional neural networks[C]// IEEE International Conference on Computer Design. USA: IEEE, 2013: 13-19.
    [12] NGUYEN D, NGUYEN T, KIM H, et al. A high-throughput and power-efficient FPGA implementation of YOLO CNN for object detection[J]. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 2019, 27(8): 1861-1873. doi: 10.1109/TVLSI.2019.2905242
    [13] NAKAHARA H, YONEKAWA H, FUJII T, et al. A lightweight yolov2: A binarized CNN with a parallel support vector regression for an FPGA[C]//Proceedings of the 2018 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. USA: ACM, 2018: 31-40.
    [14] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. USA: IEEE, 2016: 770-778.
    [15] 赵澜涛, 林家骏. 基于双路CNN的多姿态人脸识别方法[J]. 华东理工大学学报(自然科学版), 2019, 45(3): 466-470.
    [16] LARKIN D, KINANE A, O’CONNOR N. Towards hardware acceleration of neuroevolution for multimedia processing applications on mobile devices[C]//International Conference on Neural Information Processing. Berlin, Heidelberg: Springer, 2006: 1178-1188.
    [17] FARABET C, LECUN Y, KAVUKCUOGLU K, et al. Large-scale FPGA-based convolutional networks[J]. Scaling up Machine Learning: Parallel and Distributed Approaches, 2011, 13(3): 399-419.
    [18] CHEN T, DU Z, SUN N, et al. Diannao: A small-footprint high-throughput accelerator for ubiquitous machine-learning[J]. ACM Sigarch Computer Architecture News, 2014, 42(1): 269-284. doi: 10.1145/2654822.2541967
    [19] CHEN Y, LUO T, LIU S, et al. Dadiannao: A machine-learning supercomputer[C]//2014 47th Annual IEEE/ACM International Symposium on Microarchitecture. UK: IEEE, 2014: 609-622.
    [20] 朱雯文, 叶西宁. 基于卷积神经网络的手势识别算法[J]. 华东理工大学学报(自然科学版), 2018, 44(2): 260-269.
    [21] IOFFE S, SZEGEDY C. Batch normalization: Accelerating deep network training by reducing internal covariate shift[C]// Proceedings of the 32nd International Conference on Machine Learning. Lille, Jul 6-11, 2015. Brookline: JMLR, 2015: 448-456.
    [22] ZHAO R Z, NIU X Y, WU Y J, et al. Optimizing CNN-based object detection algorithms on embedded FPGA platforms[C]//Proceedings of the 13th International Symposium on Applied Reconfigurable Computing. Berlin, Heidelberg: Springer, 2017: 255-267.
    [23] WAI Y J, BIN MOHD Y USSof Z, BIN SALIM S I, et al. Fixed point implementation of Tiny- Yolo- v2 using OpenCL on FPGA[J]. International Journal of Advanced Computer Science and Applications, 2018, 9(10): 506-512.
  • 加载中
图(11)表(3)
计量
  • 文章访问数:  207
  • HTML全文浏览量:  171
  • PDF下载量:  1
  • 被引次数: 0
出版历程
  • 收稿日期:  2020-10-27
  • 网络出版日期:  2021-01-19

基于异构FPGA的目标检测硬件加速器架构设计

    作者简介:夏琪迪(1998—),男,安徽亳州人,硕士生,主要研究方向为FPGA、嵌入式系统。E-mail:2389240877@qq.com
    通讯作者: 颜秉勇, byyan@ecust.edu.cn
  • 华东理工大学信息科学与工程学院,上海 200237

摘要: 近年来,如何实现低功耗、低成本、高性能的目标检测平台逐渐受到关注。本文采用粗细粒度优化、参数定点化与重排序等多种硬件加速方法,基于FPGA+SOC异构平台提出了一种低功耗目标检测加速器架构。在Zynq 7000系列FPGA上针对现有研究的设计局限性,对YOLOv2算法进行新型多维度硬件加速,并对加速器性能和资源耗费进行深入分析建模,验证架构合理性;为充分利用片上硬件资源对各个模块进行特定优化设计,针对被忽视的底层繁琐数据访问,改进加速器数据访存机制,有效减少了系统传输时延。实验结果表明,该架构在PYNQ-Z2平台上获得了26.98 GOPs的性能,比现有的基于FPGA的目标检测平台提高了约38.71%,功耗仅为2.96W,对目标检测算法的实际应用具有深远意义。

English Abstract

  • 近年来,卷积神经网络(CNN)在计算机视觉领域发展迅速,且随着应用需求的增加和应用场景的复杂性,CNN的应用领域也逐渐拓展到人脸识别、目标检测、自主驾驶和语音识别等[1-4]。随着CNN的层次越来越深,模型的体系结构复杂度逐渐增加,所需的运算量大大提高[5],如何高效地实现低功耗、低成本的CNN运算平台越来越受到关注。目前,还有许多基于CPU、GPU、FPGA甚至ASIC的CNN实现被提出[6-9],其中兼具灵活性、低功耗和高效率的CPU+FPGA的异构设计备受关注,成为主流的CNN硬件加速平台之一。

    作为目前CNN的主要应用领域,目标检测算法近年来出现了一些代表性的网络,其中YOLO(You Only Look Once)[10]系列算法在检测速度和准确性上都展现了优秀的效果,基于YOLO模型的FPGA加速方法成为研究热点。先前的研究[11]通过减少外部数据访问和精确的数据重用来加速CNN的应用,但该方法不一定会带来最佳的整体性能,并且需要重新配置FPGA以适应不同的计算层。Nguyen等[12]采用RTL电路对YOLOv2算法进行了加速,将网络权值参数量化为二进制,使用更少的DSP (Digital Signal Processing)完成计算。借助数据重用与动态随机访问,该设计的功耗降低至18.29W,但对于边缘计算而言,其功耗有待进一步提高。Nakahara等[13]在轻量级YOLOv2中结合二进制和支持向量机设计了一套优化加速平台,通过降低计算复杂度来加快YOLO算法的检测速度,但该方法没有考虑内存访问的优化。

    针对现有研究存在的加速方法不足、功耗较高、内存访问优化不完善等问题,本文提出了一种结合内存访问优化方法和输入输出通道并行加速的新型异构FPGA高能效硬件加速器。该设计对各个模块进行单独设计优化,改进加速器数据访存机制以减少繁琐的数据访问带来的系统时延,同时利用CPU的逻辑处理能力和FPGA的并行计算资源,实现低功耗高性能的目标检测硬件加速器。

    • 目前基于深度学习的常用目标检测网络有R-CNN、YOLO系列等。基于YOLO的优异检测性能及其在边缘计算方面的加速潜力,本文选择对YOLOv2网络进行硬件加速,其网络结构如图1所示。

      图  1  YOLOv2网络结构

      Figure 1.  YOLOv2 network structure

      YOLOv2目标检测网络包括卷积层、池化层、路由层和重排序层等。

      (1) 卷积层。主要是借助卷积核对输入特征图进行卷积处理,经过权重和偏置获取特征。

      (2) 池化层。通常跟在卷积层后进行特征压缩,去除冗余信息。

      (3) 路由层。把需要的输入层进行级联,作为下一层的输入特征图,以实现多维度特征融合。

      (4) 重排序层。对于待处理的特征图按照给定步长在邻域内取像素点,相同位置的像素组成新的输出特征图,可以更好地解释细粒度特征,提升模型识别准确度。

      (5) 批归一化。批归一化(Batch Normalization, BN)主要用于加快模型收敛。YOLOv2算法在训练时使用了批归一化,故在网络预测时需要先对卷积层输出特征图进行映射解析。

      其中:x为输入的待预测样本;y为批归一化的输出结果;γ为尺度因子;β为平移因子;E[x]和Var[x]分别为训练时每批下的均值和方差。

      (6) 激活函数。YOLOv2使用Leaky ReLU激活函数来提升模型的非线性拟合性能。Leaky ReLU函数快速计算、收敛的特点得使它不会消耗太多FPGA资源,其表达式如下:

      其中$ \alpha $可由方向传播算法求得,通常取值为一个接近0的正数。

    • 高层次综合(High Level Synthesis, HLS)是近年来Xilinx公司主推的高效FPGA电路设计开发方法,它可以在高层次进行软件描述,之后综合成可用的网表文件。开发人员只需要采用C、C++等语言即可实现FPGA电路编程,开发效率高,十分适合算法的快速验证。

    • YOLOv2算法进行目标识别时主要有预处理、网络计算和后处理3个步骤,其中网络部分占整个算法计算量的90%。本文将这部分作为FPGA主要的加速目标,借助FPGA丰富的片上资源和并行处理能力,通过合理的设计优化实现加速。预处理与后处理的计算量较小,并且涉及部分算法逻辑,故将它们放到CPU端运行。

      本文设计的FPGA端加速器架构如图2所示。架构中有数个AXI主接口和一个AXILite从接口,因为HLS方法生成的AXI 主接口每个通道的读写机制类似直接内存读取(DMA),因此使用多个主接口来模拟DMA并发访问,实现并行写入、写回数据,包括处理的特征图数据和需要加载的各层权重或偏置参数,控制信号、数据读写信号等则通过从接口传输。

      图  2  加速器数据流框架

      Figure 2.  Accelerator data flow framework

      图2中黑色连线代表控制信号线,绿色连线代表处理的图像数据传输通路,红色模块分别为针对算法不同层进行独立设计实现的FPGA模块和为了优化数据访问设计的数据收发模块。

    • 卷积层是整个算法中计算量最大的部分,它占YOLO算法90%以上的运算时间[14]。针对卷积中大量的运算操作,FPGA内的处理引擎 (Process Engine,PE)可以多次执行相同的操作来完成整个计算任务。

      针对这种可优化的串行处理方式,本文提出了粗粒度优化的加速策略,即利用FPGA内部的空闲计算资源,将计算任务分配给多个PE,通过增加FPGA内部电路使用以实现并行处理,提高卷积的计算速度。

      图3所示,粗粒度优化的加速策略由M个PE组成M-PEs计算单元,矢量化的输入数据被划分成不同的部分,同时流入每个PE进行并行计算。卷积所需的权重数据存储在片上存储器中,计算时输入数据和权重数据共同流入PE,每个PE同时执行相同的乘法和加法运算,其输出作为下一个网络层的输入继续计算,同一控制信号控制多个PE。粗粒度优化的本质是使用FPGA内部的计算资源来增加操作并行性,通过消耗更多的FPGA资源来提高计算性能。

      图  3  粗粒度优化示意图

      Figure 3.  Schematic diagram of coarse-grained optimization

    • 实现粗粒度优化后,虽然可以调用多个PE进行并行数据处理,但各个PE对不同数据所需的处理时间不同,会造成不同大小的时延问题。假设粗粒度优化选定M个PE进行并行处理,单个周期内,当M个PE都计算完成后得到的输出才会进入下一层处理,造成FPGA的资源利用不够充分。

      针对上述时延问题,本文对处理引擎中的流水线进行优化,可以有效降低时间冗余和延迟,如图4所示。其中图4(a)为优化前FPGA中的数据处理乘加操作,图4(b)为通过在FPGA中的两个数据处理节点之间添加寄存器实现的流水线优化框架。在数据流处理过程中,每个寄存器在每个时钟周期内存储上一层计算节点的数据,并将前一个时钟周期中缓存的数据传输给下一个计算节点。对于有循环的计算,使用HLS工具中的UNROLL指令将循环计算过程转换为同步计算过程来展开循环,充分利用FPGA的硬件资源,消除了无效的等待时间,提高了计算效率。

      图  4  优化前后FPGA中的乘加操作对比

      Figure 4.  Comparison of multiplication and addition operations in FPGA before and after optimization

    • 在计算卷积神经网络时,权值和偏差参数的大小会影响整个网络的性能[15]。大量的高精度浮点运算不仅会增加模型的功耗,而且会影响计算速度。在以往的研究[16-18]中发现,与浮点数运算相比,定点数据更适合使用FPGA进行高效计算。在Chen等[19]的研究中发现,16位定点数据的功耗为32位数据的0.136倍,而模型的精度仅下降了0.26%。因此,本文在训练YOLO网络时,使用32位浮点数,在FPGA中部署YOLO模型时,特性图像素、卷积核和权重数据被量化为16位定点数。

      假设在训练YOLO网络时获得的某个权重数据x为4.609 685 301 780 701,该32位浮点数由1位符号位、8位指数位(整数部分)和23位尾数位(小数部分)组成,则x在计算机底层的32位浮点数表示如图5(a)所示。

      图  5  32位浮点数和16位定点数表示对比

      Figure 5.  Comparison between 32-bit floating-point numbers and 16-bit fixed-point numbers

      定点数在确定了各位数的长度后小数点的位置被固定,本文设定FPGA中的16位定点数各部分的位数为1、3、12,则x在FPGA底层的16位定点数表示如图5(b)所示。

      由于数据位数不同带来的精度不同,该权重数据x的浮点数定点化前后误差为0.000 066 161 155 701,数据损失率仅为0.001 4%,不影响目标检测算法精度,可忽略不计。

    • YOLOv2算法主要包括4层。卷积层的任务是提取特征;池化层用来降维去冗余;路由层用来进行特征融合;重排序层针对特征进行抽样打乱。在卷积层后常跟着批量归一化和激活函数,以加快模型收敛、提高非线性性[20]

    • 与先前研究中常用的卷积计算单维度加速不同,本文提出了一种输入、输出通道两维展开的新型卷积加速策略。假设在YOLOv2算法中的某次卷积模块输出特征图个数为M,输入特征图个数为N,设TmTn为这两个维度上的并行通道个数,单次卷积操作可以实现Tm×Tn个并行乘法操作,再借助Tm个加法树得到单次卷积输出。这种输出、输入通道的同时展开允许我们对卷积操作的底层乘加运算进行流水化处理,减少电路闲置时间,进而提升整个加速器的运算速度。假设现有Tm=2、Tn=4的两维展开,其工作原理如图6所示。

      图  6  卷积模块展开示意图

      Figure 6.  Schematic diagram of convolution module expansion

      图6中In[0]~In[3]为4个输入通道的输入特征图缓存区,Out[0]和Out[1]是2个输出通道的输出特征图缓存区,其他模块设计定义如下:

      ①:存放Tm×Tn个大小为K×K的卷积核权重的缓存区;

      ②:Tm×Tn个并行乘法单元;

      ③:Tm个加法树进行并行加法运算操作;

      ④:存放偏置参数的缓存区。

      每个计算周期内,特定设计的卷积模块从存放有输入特征图的片上缓存中读取Tn个像素,同时与像素相同位置的权重也会加载至待计算的Tm×Tn个卷积核中,加速器复用Tn个输入特征图进行运算,经过Tm个加法树累加后得到卷积结果,存放至相应的输出缓存中。

      从卷积计算原理可以看出,新型卷积模块大部分消耗的是FPGA中的乘法器和加法器资源,运算时使用的数据精度是消耗资源的主要影响因素,通过改变不同数据精度可以得出对应的资源耗费,见表1。可以看出,采用16位定点数据精度的加法器和乘法器使用的DSP(Digital Signal Processing)和LUT (Look-Up Table)远少于32位浮点数据精度下的资源消耗,进一步验证了浮点数定点化的可行性。

      Consume resources (Data precision)DSPLUT
      Adders(Float-32)2214
      Multiplier(Float-32)3135
      Adders(Fixed-16)-47
      Multiplier(Fixed-16)1101

      表 1  不同数据精度消耗资源对比

      Table 1.  Comparison of resource consumption with different data accuracy

      对于Tm×Tn两维展开的卷积模块,其消耗的DSP资源NDSP和LUT资源NLUT计算公式如下:

      其中:MDcost和ADcost分别为计算DSP资源时的乘法器和加法器的耗费;MLcost和ALcost分别计算LUT资源时的乘法器和加法器的耗费;Selcost为移位电路和累加器的查找表耗费。

      针对这种卷积的两维展开优化,分析方法可类比Roofline模型[21],得到这种优化方法中的主要影响因素。假设RC为输入特征图的行和列,MN为神经网络输出、输入通道,P为流水线深度,可得

      可以看到,输入维度并行通道数Tm与输出维度并行通道数Tn越大则两维展开优化的计算性能越高。但并行度的选择并非只取决于Roofline模型,在实际设计时仍需进行综合考量,获取最佳并行度。

    • YOLOv2算法的池化步长和池化大小均为2,其余原理与卷积层类似,不同处在于运算时池化层使用比较器,并非卷积层的乘加操作,另一不同点在于池化可以针对单一输入特征图抽样。

      由于卷积模块会消耗大部分板上资源,对池化模块的设计思路为消耗有限的硬件资源获取更多的并行度。图7示出了池化模块示意图。假设有Tpool个输入特征图缓存,在单个池化周期内加速器将它们相同位置的像素输入到Tpool个比较器,进行并行比较计算获取最大值,存放至池化输出缓存区中。在本文的加速器设计中各模块共用输入和输出模块,则池化时其并行度为Tpool≤min(Tnmax,Tmmax)。

      图  7  池化模块示意图

      Figure 7.  Schematic diagram of pooling module

    • 假设重排序时设置的步长为S,重排序层读取单张输入特征图后会把S×S区域内的像素存放到S×S张输出特征图中,位置不变。基于重排序层的原理与特点,本设计使用1块存放单张输入特征图的输入缓存和4块存放输出特征图的输出缓存,以及一个4通道选择器,以分配不同的输出缓存地址。

      以1张8×8的输入特征图为例,排序过程如图8所示。处理后输出4张4×4的特征子图,存放至输出缓存中。

      图  8  重排序示意图

      Figure 8.  Schematic diagram of reordering

    • FPGA底层在执行算法时需要对大量数据进行读写,现有研究对内存访问机制并没有较好地优化。本文针对数据的输入输出进行了特定优化和专门的模块设计,在单个周期内进行批量的数据读取或写入,存储到FPGA的片上缓存,该批次数据复用完成后进行下一次读取,通过增加单次读取的数据块大小减少访存操作次数,缩短大量单次访存操作带来的时间延迟。

      硬件加速器架构底层数据传输使用FPGA片内AXI高速总线,AXI4 master模块接口读写通道相互独立,支持并发执行数据读写策略。各模块与片外RAM进行数据传输时,借助特定设计的数据分发(Data Scatter)模块,通过数个读通道进行待处理特征图的并行输入,读取至片内时再分发到不同模块对应缓存;进行数据输出时则借助特定设计的数据收集(Data Gather)模块,先将待输出数据写回DRAM,通过数个写通道完成输出特征图像素块的并行写入,实现更佳的数据内存访问机制。

    • 加速器系统结构可以分为两部分:PS(Processing System)和PL(Programming Logic)。基于PYNQ框架的PS端集成了ARM内核和Python编译环境,运行Linux操作系统。

      PS端的CPU可以控制PS和PL之间的所有接口,加速器使用CPU调度将待输入特征图和YOLO网络参数输入DDR缓冲区,通过AXI(Advanced eXtensible Interface)总线与外围接口电路进行交互。CPU使用AXI总线读取加速电路的运算结果,并执行图像预处理的应用程序并在PS侧显示。在PL端,外部DDR中的数据被读取至片上RAM,同时硬件设计比特流文件(Bit)和设计指令文件(Tcl)被传递到PS端,经过识别解析,前文中对YOLO加速器进行的各模块设计被部署到FPGA上,YOLO的IP内核被增添到PYNQ的Overlay库中用于顶层调用,整个硬件加速器架构设计如图9

      图  9  系统硬件加速器架构

      Figure 9.  System hardware accelerator architecture

      基于上述硬件加速器框架,借助HLS工具,本文进行了各模块的具体实现并通过Vivado工具搭建了基于YOLOv2的新型低功耗目标检测硬件加速系统,如图10所示。此系统包括PS端的ARM微处理器和PL端的YOLO模块、外部存储器和总线互联器等,其中总线互联器可以将多个AXI内存映射的主设备连接到对应的多个内存映射的从设备中,同时保证AXI总线上的高速传输。

      图  10  YOLOv2网络硬件加速系统

      Figure 10.  YOLOv2 network hardware acceleration system

    • 低功耗目标检测加速器由Vivado HLS 2018.3生成,HLS工具可以将C/C++语言程序转换成FPGA所需的RTL电路,硬件架构构建于Vivado 2018.3,加速平台基于Xilinx PYNQ-Z2,主芯片ZYNQXC7Z0201CLG400C,板上包含一个630 KB的块RAM、220个DSP片、一个ARM双核Cortex-A9处理器和一个外部512 MB DDR3。

    • 实验基于Xilinx平台上实现了基于YOLOv2目标检测网络的硬件加速器,使用Vivado HLS 2018.3设计,生成加速器对应IP核的Bit文件和Tcl文件,在Vivado 2018.3中进行SOC平台搭建,完成加速器架构设计。PS端调度硬件逻辑并分配加速资源,大量并行计算卸载到PL端进行。最终加速器的功耗为2.96W,算力达到26.98GOPs(Giga Operations Per Second)。实验环境及检测结果如图11所示。

      图  11  实验环境与检测结果

      Figure 11.  Experimental environment and test results

      (1) 资源消耗评估。使用Vivado HLS 2018.3对加速器主要IP核进行实现后,可得到设计中的各模块资源消耗,见表2。其中DSP48E主要用于细粒度优化策略和卷积模块中的乘法器和加法器配置,耗费152个,充分利用FPGA的计算资源。BRAM_18K用于实现粗粒度优化策略等存储量较大的缓存需求,除了YOLOv2的IP核使用BRAM_18K,加速器系统中的其他模块的接口缓存也会消耗BRAM资源,例如偏置参数缓存和权重行缓存各需要两个BRAM_18K,输入缓存需要24个BRAM。所有额外BRAM_18K消耗共86个。对于较小量级的数据缓存并不适合使用BRAM资源,本设计中使用FF和LUTs资源来实现少量数据与信号的传输,此模块消耗35 977个LUT和32 049个FF

      ResouresUsedAvailableUtilization/%
      LUTs35 97753 20067.62
      FF32 049106 40030.12
      BRAM_18K17828063.57
      DSP48E15222069.09

      表 2  加速器资源消耗

      Table 2.  Accelerator resource consumption

      (2) 性能评估。将该加速器与其他平台的加速效果进行对比,比较结果见表3。由于内存资源的限制,本文的加速器数据吞吐量不大,但是其功耗仅为2.96W,算力达到26.98 GOPs。文献[22]设计了行缓冲模式,适用于不同大小的卷积核,但由于卷积加速模块与全连接模块分开设计,片上资源的重用率并不高,因此即使主频较高但实际计算性能只能达到18.82 GOPs,仅为本文设计的69.7%。Zynq Ultrascale+[13]平台上的加速器计算性能较好,但其消耗的FPGA片上资源远多于本设计,功耗是本设计的1.5倍。文献[23]的工作基于OpenGL技术,其加速方法结合了通用矩阵乘法对输入特征图分块、并行计算,实现加速。然而,此设计没有考虑参数与输入特征图的排序问题,每次处理均需要额外的排序处理时间,限制了加速器的性能发挥,本设计的算力与其相比提升了38.71%。

      AcceleratorCNN ModelPlatformFrequency/ MHzBRAMDSPPower/WPerformance /GOPs
      Ref[22]YOLOv1ZC706200N/A8002.1718.82
      Ref[13]LW YOLOv2Zynq Ultra30017063774.5N/A
      Ref[23]YOLOv2 TinyCyclone V117N/A122N/A19.45
      This WorkYOLOv2PYNQ-Z21501781522.9626.98

      表 3  与其他FPGA加速器设计的比较

      Table 3.  Comparison with other FPGA accelerator designs

    • 本文以典型目标检测算法YOLOv2为基础,借助结合CPU的异构FPGA设计并实现了一种同时对卷积输入和输出进行展开的新型硬件加速器,同时在FPGA上设计粗粒度和细粒度优化方法,提高硬件资源利用率,数据位宽上进行浮点数定点化,加快处理速度的同时降低系统功耗,通过对数据位宽转换前后对比验证了这种方法的可行性。本文另一创新在于针对容易被忽视的底层数据访问重新设计加速器数据访存机制,有效提高总线带宽利用率,减少系统传输时延。

      本文设计的加速器的功耗约为2.96W,算力达到26.98GOPs。经过资源消耗评估,将加速器性能与现有工作进行对比,验证了在计算资源有限的平台上进行低功耗目标检测需求的可行性,为目标检测算法在实际应用时遇到的性能不足、功耗有限等问题提供了新架构。

      未来工作可从两方面出发,底层的机制优化或算法网络层的优化,前者可从数据复用的进一步展开,对不同大小的输入特征图的存取需求进行不同处理;后者可以综合现有的一些轻量化网络设计,譬如多层融合,或使用Winograd快速乘法减少卷积内循环的乘操作,通过转换乘加操作充分利用FPGA片上资源,提高加速器性能。

(11)  表(3) 参考文献 (23)

目录

    /

    返回文章