CN113792621A - 一种基于fpga的目标检测加速器设计方法 - Google Patents

一种基于fpga的目标检测加速器设计方法 Download PDF

Info

Publication number
CN113792621A
CN113792621A CN202110995008.6A CN202110995008A CN113792621A CN 113792621 A CN113792621 A CN 113792621A CN 202110995008 A CN202110995008 A CN 202110995008A CN 113792621 A CN113792621 A CN 113792621A
Authority
CN
China
Prior art keywords
module
calculation
target detection
fpga
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110995008.6A
Other languages
English (en)
Other versions
CN113792621B (zh
Inventor
颜成钢
高振
刘炳涛
刘娜
孙垚棋
张继勇
李宗鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dianzi University
Original Assignee
Hangzhou Dianzi University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Dianzi University filed Critical Hangzhou Dianzi University
Priority to CN202110995008.6A priority Critical patent/CN113792621B/zh
Publication of CN113792621A publication Critical patent/CN113792621A/zh
Application granted granted Critical
Publication of CN113792621B publication Critical patent/CN113792621B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于FPGA的目标检测加速器设计方法,首先选择要移植到该平台上的目标检测算法;然后根据选择的算法的特点,在FPGA硬件平台下采用软硬件协同设计的思想进行总体架构设计;最后对所选择的目标检测算法模型网络参数进行16位动态定点数据量化,依据网络模型的运算特点对数据的调度进行规划,并提出一个CNN硬件加速器架构,包括输入输出模块、卷积模块、池化模块、重排序模块、全连接模块、激活模块以及控制模块。本发明方法利用较少的硬件资源完成目标检测加速器的设计,提高了总线带宽利用率,具有一定的通用性和可扩展性,功耗较低,可以达到一个较高的能效比,比较适合应用在有严重功耗限制的场所。

Description

一种基于FPGA的目标检测加速器设计方法
技术领域
本发明涉及计算机视觉和神经网络加速器领域,尤其涉及一种基于FPGA的目标检测加速器设计方法。
技术背景
目标检测的评价体系中有两个重要指标,它们分别是目标检测的准确性和目标检测的实时性,由于在目标检测的现实应用场景中会出现物体部分遮挡、取景扭曲模糊、光线环境变化、物体姿态变化等各种各样的干扰问题,所以目标检测技术一直面临着层出不穷的挑战。在深度学习技术兴起之前,传统的目标检测算法主要依赖人工选取的特征来对目标物体进行检测,在检测目标多样性的情况下,这会导致特征提取具有局限性并且鲁棒性不高的结果;另外传统目标检测算法主要利用类似穷举的滑动窗口或者图像分割技术来进行候选区域的选择,这就又会导致产生过多的冗余窗口并且需要大量的计算开销,由于以上缺陷导致传统目标检测算法的检测精度和检测速度均不满足现实场景应用的需求。深度学习是在2006年由Hinton等人提出,它是机器学习的分支,是一种试图使用包含复杂结构或者由多重非线性变换构成的多个处理层对数据进行高层抽象,即基于对数据进行表征学习的算法。至今已有数种深度学习框架,如卷积神经网络、深度置信网络、递归神经网络等已被广泛应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域,而在处理目标检测的问题上主要用到的是深度学习框架中的卷积神经网络CNN(Convolutional Neural Network),它能够在大量数据下自动的学习发现检测任务所需要的特征,并且使得目标检测的准确性不断提升,获取了极好的效果。然而随着目标检测问题的不断复杂化、抽象化,基于深度学习的目标检测算法模型也变得更加复杂,处理的数据量变得更加庞大,这就导致其计算的复杂度和内存需求也变得更大。因此,在FPGA上实现基于CNN的目标检测加速器的设计,使其能够在不影响检测精度的前提下,提高目标检测的速度,降低运行功耗,从而适应低功耗的应用环境,达到更高的实用价值。
发明内容:
本发明要解决的技术问题是:本发明提出一种基于FPGA的目标检测加速器设计方法,可以在存储资源、计算资源及系统带宽有限的FPGA上部署卷积神经网络完成目标检测,并且利用较少的硬件资源完成目标检测算法模型的推理过程,达到较低的功耗,同时具有一定的通用性和可扩展性。
本发明的技术方案是:一种基于FPGA的目标检测加速器设计方法,首先,在不影响目标检测准确率的前提下,探究和预估主流的基于卷积神经网络的目标检测算法是否适合应用在己定的FPGA硬件平台上,合理选择出要移植到该平台上的目标检测算法。然后,根据选择的基于卷积神经网络的目标检测算法的特点,在FPGA硬件平台下采用软硬件协同设计的思想进行总体架构设计,使得可编程逻辑部分能够进行参数配置以处理不同网络参数和不同结构的网络层,具有一定的通用性和可扩展性。最后,对所选择的目标检测算法模型网络参数进行16位动态定点数据量化,依据网络模型的运算特点对数据的调度进行规划,并提出一个CNN硬件加速器架构,该架构包含输入输出模块、卷积模块、池化模块、重排序模块、全连接模块、激活模块以及控制模块,使得基于卷积神经网络的目标检测算法在该硬件平台上能达到低功耗,高性能的设计要求并实现完整的目标检测功能。
一种基于FPGA的目标检测加速器设计方法,包括以下步骤:
步骤一:评估基于卷积神经网络的目标检测算法是否适合应用在己选定的FPGA硬件平台上,选择要移植到该平台上的目标检测算法。
步骤二:根据选择的基于卷积神经网络的目标检测算法的特点,在FPGA硬件平台下采用软硬件协同设计的思想进行总体架构设计,使得可编程逻辑部分能够进行参数配置,用来处理不同的网络参数和不同结构的网络层。
步骤三:对所选择的目标检测算法模型网络参数进行16位动态定点数据量化,依据网络模型的运算特点对数据的调度进行规划,并提出一个CNN硬件加速器架构,该架构包括输入输出模块、卷积模块、池化模块、重排序模块、全连接模块、激活模块以及控制模块。
步骤一具体方法如下:
由于卷积神经网络模型与硬件计算平台的匹配程度决定卷积神经网络的实际表现能力,因此首先利用Roofline性能评估模型评估现有的网络模型在一个硬件平台计算资源和外部存储带宽的限制下所能够达到的理论计算能力的上限。具体公式如下:
Figure BDA0003233696600000031
式中:P表示卷积神经网络模型的理论计算性能;I表示网络模型的计算强度;β表示硬件计算平台的传输带宽上限;α表示硬件计算平台的计算性能上限。
网络模型的计算强度I的计算公式具体如下:
Figure BDA0003233696600000032
式中:M表示特征图输出通道数;N表示特征图输入通道数;R和C表示输出特征图的长和宽;K表示卷积核的边长;Byte表示每个数据的位宽。
依据Roofline性能评估模型评估当前主流的基于卷积神经网络的目标检测算法在已选定硬件平台上所能达到的性能。当网络模型的计算强度I小于硬件加速平台的计算强度上限Imax时,此时网络模型的理论计算性能P的大小受限于硬件加速平台的带宽上限β与网络模型的计算强度I,平台带宽上限是指硬件平台每秒能完成的内存交换的最大量;当网络模型的计算强度I大于硬件加速平台的计算强度上限Imax时,此时网络模型的理论计算性能P的大小受限于硬件加速平台的计算能力α,平台所能提供计算能力的上限是指平台倾尽所有计算资源单位时间内所能完成的浮点运算次数。将当前主流的基于卷积神经网络的目标检测算法在FPGA硬件平台上所能达到的性能用Roofline性能评估模型表示后,即可选择出最适合移植到FPGA硬件平台的目标检测算法。
优选的,网络模型的计算强度I由计算量除以访存量得到,计算量是网络模型一次前向传播过程中的浮点运算总次数,访存量是在所设计的总体架构下,不考虑片上缓存资源有限的情况下一次前向传播的内存交换量。
步骤二具体方法如下:
首先,根据所选择的算法模型在不同阶段所做的运算,考虑FPGA和CPU的特点,将不同的任务分配到FPGA和CPU。CPU用于做控制性、串行、计算量少的任务,而FPGA用于做并行度高、计算密集型的任务。
针对分配到FPGA上的任务:
通过量化来简化计算复杂度,使得单位计算单元所耗费的资源大大减少,从而在相同的资源中,设计更多的并行计算单元,提高加速器性能并通过优化策略进行优化,所述的优化策略包括:参数重排序、双缓冲设计和多通道数据传输。
针对分配到CPU上的任务:
利用CPU的浮点运算单元来加快浮点计算。同时,在编译时采用编译优化加速任务处理。并采用多线程并行、cache缓存优化进行优化。
然后,结合软硬件协同设计的思想,提出FPGA总体架构,包括外部储存器DRAM,处理单元PS、可编程逻辑部分PL和AXI互联总线,可编程逻辑部分PL由AXI Lite slave总线接口、AXI master总线接口和CNN加速器构成。初始图像数据和权重预先储存在外部存储器DRAM中,通过AXI互联总线实现PS和PL部分的互联,PL部分的CNN加速器通过AXI Liteslave总线接口读写控制、数据和状态寄存器。在PS的控制下,CNN加速器从DRAM中读取所需要的当前层的权重和输入数据,然后将读取到的当前层的权重和输入数据通过AXI master总线接口传递到CNN加速器的片上缓存,经CNN加速器处理后,输出再通过AXI master总线接口传回DRAM,重复上述操作直至完成整个网络模型的计算。之后再对储存在DRAM中的卷积神经网络若干检测层得到的预测数据进行图像后处理,最终得到目标检测结果。
步骤三具体方法如下:
对算法模型中的卷积核权重以及输入输出特征图进行动态定点16位量化,先将所有数据转化为定点数进行运算,直到结束所有运算后再将结果转化为浮点数进行表示。
定点数xfixed由以下公式表示:
Figure BDA0003233696600000051
式中bw表示xfixed的位宽,exp表示定点数的阶码,Bi∈[0,1]。定点数xfixed采用补码表示,最高位为符号位。
浮点数xfloat与定点数xfixed的相互转化公式如下:
xfixed=(int)(xfloat*2bw)
xflat=(float)(xfixed*2-bw)
然后提出一个CNN硬件加速器架构,该架构包括输入输出模块、卷积模块、池化模块、重排序模块、全连接模块、激活模块以及控制模块。其中输入输出模块包括n(n根据神经网络特性设定,n为正整数)个AXI Master接口、一个AXI Lite Slave接口、Data Scatter单元、Data Gather单元、权重输入缓存、特征图输入缓存和输出缓存,通过n-1个AXI Master接口并发读取输入特征图和写回输出特征图,通过一个AXI Master接口读取每层权重参数,通过AXI Lite Slave接口读写控制模块,Data Scatter单元用于生成对应写入地址,并将通过n-1个AXI Master接口读到的输入特征图像素块分发到特征图输入缓存,DataGather单元用于生成写回地址,将输出缓存中的输出特征图像素块通过n-1个AXI Master接口写回片外缓存。卷积模块用于完成算法模型中的卷积运算,将卷积循环中的输出特征图数M和输入特征图数N两维部分展开,形成多个并行乘法计算单元和多个的加法树,流水地处理乘加运算,每个时钟周期,卷积模块从特征图输入缓存中读入多个相同位置的像素,与此同时从独立的权重输入缓存中读入相同位置的权重,进行乘法计算,然后加法树将乘积两两相加,得到的结果和部分和累加后,写回输出缓存中。池化模块用于完成算法模型中的池化运算,降低特征图的维数以及减少过拟合,每个时钟周期,池化模块从独立的输入特征图缓存中读取相同位置的一个像素与当前最大值比较,同时有多个比较器在进行不同输入特征图的比较运算,最后将得到的最大值写入输出缓存中。重排序模块用于完成算法模型中的重排序运算,对输入特征图像素抽样重排。全连接模块用于完成算法模型中的全连接层运算。激活模块用于完成算法模型中的激活函数的运算,对每个输出特征图像素做一个非线性变换,用于给网络增加非线性拟合的能力。控制模块用于控制算法模型的不同运算以及数据的传输。
本发明的有益效果如下:
提出一种基于FPGA的目标检测加速器设计方法,可以利用较少的硬件资源完成目标检测加速器的设计,提高了总线带宽利用率,具有一定的通用性和可扩展性,功耗较低,可以达到一个较高的能效比,比较适合应用在有严重功耗限制的场所,具有一定的实用价值。
附图说明
图1是本发明的Roofline性能评估模型图;
图2是本发明的总体系统架构;
图3是本发明面向YOLOv2算法模型的软硬件任务划分;
图4是本发明的CNN硬件加速器架构。
具体实施方式
下面根据本发明实施例中的附图对本发明实施例中的方法进行完整、清楚、细致的描述,使得本发明的目的和效果变得更加明显。
本发明的具体实施例选用的FPGA硬件平台为Zynq UltraScale+MPSoC ZCU104开发板,并在Zynq UltraScale+MPSoC ZCU104开发板进行了本发明内容的演示。
本发明所述的一种基于FPGA的目标检测加速器设计方法包括如下步骤:
首先,在不影响目标检测准确率的前提下,探究和预估主流的基于卷积神经网络的目标检测算法是否适合应用在己定的FPGA硬件平台上,合理选择出要移植到该平台上的目标检测算法。
由于卷积神经网络模型与硬件计算平台的匹配程度决定卷积神经网络的实际表现能力,所以本发明利用Roofline性能评估模型评估当前主流的网络模型在一个硬件平台计算资源和外部存储带宽的限制下所能够达到的理论计算能力的上限公式。具体公式如下:
Figure BDA0003233696600000061
式中:P表示卷积神经网络模型的理论计算性能;I表示网络模型的计算强度;β表示硬件计算平台的传输带宽上限;α表示硬件计算平台的计算性能上限。
网络模型的计算强度I的计算公式具体如下:
Figure BDA0003233696600000071
式中:M表示特征图输出通道数;N表示特征图输入通道数;R和C表示输出特征图的长和宽;K表示卷积核的边长;Byte表示每个数据的位宽。
优选的,网络模型的计算强度I由计算量除以访存量得到,计算量是网络模型一次前向传播过程中的浮点运算总次数,访存量是在所设计的总体架构下,不考虑片上缓存资源有限的情况下一次前向传播的内存交换量。
本发明根据Zynq UltraScale+MPSoC ZCU104的硬件资源情况建立Roofline性能评估模型,如图1所示,图1中的理论计算性能上限Pmax、带宽上限β和计算强度上限Imax可由如下公式求得:
Figure BDA0003233696600000072
Figure BDA0003233696600000073
Imax=21.6(FLOP/Byte)
本发明利用Roofline性能评估模型对一些典型的网络模型进行评估,如表1所示。
表1 Roofline性能评估模型下算法模型的评估
Figure BDA0003233696600000074
由表1可知,在Roofline性能评估模型中当各个算法模型达到FPGA硬件平台的峰值计算性能时,YOLOv2的计算强度最高,计算密度最大,即单位内存数据交换的计算量最大,相比较来说YOLOv2的能效最好。而且YOLOv2模型的复杂度较低,卷积层各层间相似性大、操作较为规则,可使得网络各层可以更加高效地重复使用同一IP核。因此,本发明选取YOLOv2在Zynq UltraScale+MPSoC ZCU104开发板上完成高性能实现。
进一步的,根据选择的YOLOv2目标检测算法的特点,在FPGA硬件平台下采用软硬件协同设计的思想进行总体架构设计,使得可编程逻辑部分可进行参数可配置以处理不同的网络参数。
本发明提出的一个FPGA总体系统架构如图2所示。它主要包括外部储存器DRAM,处理单元(PS)、可编程逻辑部分(PL)和AXI互联总线,可编程逻辑部分PL由AXI Lite slave总线接口、AXI master总线接口和CNN加速器构成。初始图像数据和权重预先储存在外部存储器DRAM中,通过AXI互联总线实现PS和PL部分的互联,PL部分的CNN加速器通过AXI Liteslave总线接口读写控制、数据和状态寄存器。在PS的控制下,CNN加速器从DRAM中读取所需要的当前层的权重和输入数据,然后将读取到的当前层的权重和输入数据通过AXI master总线接口传递到CNN加速器的片上缓存,经CNN加速器处理后,输出再通过AXI master总线接口传回DRAM,重复上述操作直至完成整个网络模型的计算。之后再对储存在DRAM中的卷积神经网络若干检测层得到的预测数据进行图像后处理,最终得到目标检测结果。
YOLOv2目标检测步骤如下:
(1)图像预处理:输入任意分辨率RGB图像,各像素除以255转化到[0,1]区间,按原图长宽比缩放至416x416,不足处填充0.5,得到416x416x3的数组。
(2)网络检测:将上一步得到的416x416x3数组输入YOLOv2,网络检测后输出13x13x425的数组。对于13x13x425数组的理解:将416x416的图像划分为13x13的网格。针对每个网格,预测5个bounding box(边框),每个边框包含85维特征(5×85=425维)。每个bounding box的85维特征由3部分组成:对应边框中包含的80类物体的概率(80维),边框中心点的相对偏移以及边框相对长宽的预测(4维),边框是否包含物体的可信度(1维)。
(3)图像后处理:对上一步得到的13x13x425数组进行处理,得到边框的中心位置和长宽,再根据各边框覆盖度、可信度和物体的预测概率等,对13x13x5个边框进行处理,得到最有可能包含某物体的边框。根据原图的长宽比,将得到的边框调整到原图尺度。
由于YOLOv2的目标检测算法主要分为3个部分,而且YOLOv2目标检测算法不需要生成候选区域,只需在输入图像上利用卷积神经网络进行特征抽取,然后对产生的特征图像进行检测即可,所以面向YOLOv2算法模型的软硬件任务划分如图3所示。PL部分的硬件任务是需要对加速器IP核进行不断的调用,完成YOLOv2网络的硬件加速,并且根据YOLOv2网络不同层所执行的功能不断从DRAM中读取输入和权重,然后将计算结果写回DRAM。PS部分的软件任务就是对图像进行预处理得到同样大小的图像数组,并且还负责对YOLOv2网络各个层执行的控制,然后还会对存储在DRAM中的且经过YOLOv2网络前30层运算得到数据进行后处理,完成YOLOv2网络第31层的运算,得到检测边框的中心、长宽、边框置信度和物体的预测概率,获得最终的检测结果。
进一步的,对所选择的YOLOv2目标检测算法模型的网络参数进行16位动态定点数据量化,依据网络模型的运算特点对数据的调度进行规划,并提出一个CNN硬件加速器架构,该架构包含输入输出模块、卷积模块、池化模块、重排序模块、激活模块以及控制模块(由于YOLOv2目标检测算法中无全连接运算,因此该CNN硬件加速器架构中不包括全连接模块)。
由于CNN对于数据精度有很强的鲁棒性,在保证准确度不变的前提下,可以通过降低数据位宽来减少传输数据和计算所耗费的资源。算法模型的网络参数以及输入输出在FPGA硬件平台一般都以浮点数的形式表示,所以本发明对算法模型中的卷积核权重以及输入输出特征图进行动态定点16位量化,先将所有数据转化为定点数进行运算,直到结束所有运算后再将结果转化为浮点数进行表示。
定点数xfixed可以由以下公式表示:
Figure BDA0003233696600000091
式中bw表示xfixed的位宽,exp表示定点数的阶码,Bi∈[0,1]。定点数xfixed采用补码表示,最高位为符号位。
浮点数xfloat与定点数xfixed的相互转化公式如下:
xfixed=(int)(xfloat*2bw)
xfloat=(float)(xfixed*2-bw)
然后提出一个CNN硬件加速器架构,如图4所示,该架构包含输入输出模块、卷积模块、池化模块、重排序模块、全连接模块、激活模块以及控制模块。其中输入输出模块包括n(n可根据神经网络特性设定,n为正整数)个AXI Master接口、一个AXI Lite Slave接口、Data Scatter单元、Data Gather单元、权重输入缓存、特征图输入缓存和输出缓存,通过n-1个AXI Master接口并发读取输入特征图和写回输出特征图,通过一个AXI Master接口读取每层权重参数,通过AXI Lite Slave接口读写控制模块,Data Scatter单元用于生成对应写入地址,并将通过n-1个AXI Master接口读到的输入特征图像素块分发到特征图输入缓存,Data Gather单元用于生成写回地址,将输出缓存中的输出特征图像素块通过n-1个AXI Master接口写回片外缓存。卷积模块用于完成算法模型中的卷积运算,将卷积循环中的输出特征图数M和输入特征图数N两维部分展开,形成多个并行乘法计算单元和多个的加法树,流水地处理乘加运算,每个时钟周期,卷积模块从特征图输入缓存中读入多个相同位置的像素,与此同时从独立的权重输入缓存中读入相同位置的权重,进行乘法计算,然后加法树将乘积两两相加,得到的结果和部分和累加后,写回输出缓存中。池化模块用于完成算法模型中的池化运算,降低特征图的维数以及减少过拟合,每个时钟周期,池化模块从独立的输入特征图缓存中读取相同位置的一个像素与当前最大值比较,同时有多个比较器在进行不同输入特征图的比较运算,最后将得到的最大值写入输出缓存中。重排序模块用于完成算法模型中的重排序运算,对输入特征图像素抽样重排。激活模块用于完成算法模型中的激活函数的运算,对每个输出特征图像素做一个非线性变换,用于给网络增加非线性拟合的能力。控制模块用于控制算法模型的不同运算以及数据的传输。

Claims (5)

1.一种基于FPGA的目标检测加速器设计方法,其特征在于,包括以下步骤:
步骤一:评估基于卷积神经网络的目标检测算法是否适合应用在己选定的FPGA硬件平台上,选择要移植到该平台上的目标检测算法;
步骤二:根据选择的基于卷积神经网络的目标检测算法的特点,在FPGA硬件平台下采用软硬件协同设计的思想进行总体架构设计,使得可编程逻辑部分能够进行参数配置,用来处理不同的网络参数和不同结构的网络层;
步骤三:对所选择的目标检测算法模型网络参数进行16位动态定点数据量化,依据网络模型的运算特点对数据的调度进行规划,并提出一个CNN硬件加速器架构,该架构包括输入输出模块、卷积模块、池化模块、重排序模块、全连接模块、激活模块以及控制模块。
2.根据权利要求1所述的一种基于FPGA的目标检测加速器设计方法,其特征在于,步骤一具体方法如下:
由于卷积神经网络模型与硬件计算平台的匹配程度决定卷积神经网络的实际表现能力,因此首先利用Roofline性能评估模型评估现有的网络模型在一个硬件平台计算资源和外部存储带宽的限制下所能够达到的理论计算能力的上限;具体公式如下:
Figure FDA0003233696590000011
式中:P表示卷积神经网络模型的理论计算性能;I表示网络模型的计算强度;β表示硬件计算平台的传输带宽上限;α表示硬件计算平台的计算性能上限;
网络模型的计算强度I的计算公式具体如下:
Figure FDA0003233696590000012
式中:M表示特征图输出通道数;N表示特征图输入通道数;R和C表示输出特征图的长和宽;K表示卷积核的边长;Byte表示每个数据的位宽;
依据Roofline性能评估模型评估当前主流的基于卷积神经网络的目标检测算法在已选定硬件平台上所能达到的性能;当网络模型的计算强度I小于硬件加速平台的计算强度上限Imax时,此时网络模型的理论计算性能P的大小受限于硬件加速平台的带宽上限β与网络模型的计算强度I,平台带宽上限是指硬件平台每秒能完成的内存交换的最大量;当网络模型的计算强度I大于硬件加速平台的计算强度上限Imax时,此时网络模型的理论计算性能P的大小受限于硬件加速平台的计算能力α,平台所能提供计算能力的上限是指平台倾尽所有计算资源单位时间内所能完成的浮点运算次数;将当前主流的基于卷积神经网络的目标检测算法在FPGA硬件平台上所能达到的性能用Roofline性能评估模型表示后,即可选择出最适合移植到FPGA硬件平台的目标检测算法。
3.根据权利要求2所述的一种基于FPGA的目标检测加速器设计方法,其特征在于,网络模型的计算强度I由计算量除以访存量得到,计算量是网络模型一次前向传播过程中的浮点运算总次数,访存量是在所设计的总体架构下,不考虑片上缓存资源有限的情况下一次前向传播的内存交换量。
4.根据权利要求2或3所述的一种基于FPGA的目标检测加速器设计方法,其特征在于,步骤二具体方法如下:
首先,根据所选择的算法模型在不同阶段所做的运算,考虑FPGA和CPU的特点,将不同的任务分配到FPGA和CPU;CPU用于做控制性、串行、计算量少的任务,而FPGA用于做并行度高、计算密集型的任务;
针对分配到FPGA上的任务:
通过量化来简化计算复杂度,使得单位计算单元所耗费的资源大大减少,从而在相同的资源中,设计更多的并行计算单元,提高加速器性能并通过优化策略进行优化,所述的优化策略包括:参数重排序、双缓冲设计和多通道数据传输;
针对分配到CPU上的任务:
利用CPU的浮点运算单元来加快浮点计算;同时,在编译时采用编译优化加速任务处理;并采用多线程并行、cache缓存优化进行优化;
然后,结合软硬件协同设计的思想,提出FPGA总体架构,包括外部储存器DRAM,处理单元PS、可编程逻辑部分PL和AXI互联总线,可编程逻辑部分PL由AXI Lite slave总线接口、AXI master总线接口和CNN加速器构成;初始图像数据和权重预先储存在外部存储器DRAM中,通过AXI互联总线实现PS和PL部分的互联,PL部分的CNN加速器通过AXI Lite slave总线接口读写控制、数据和状态寄存器;在PS的控制下,CNN加速器从DRAM中读取所需要的当前层的权重和输入数据,然后将读取到的当前层的权重和输入数据通过AXI master总线接口传递到CNN加速器的片上缓存,经CNN加速器处理后,输出再通过AXI master总线接口传回DRAM,重复上述操作直至完成整个网络模型的计算;之后再对储存在DRAM中的卷积神经网络若干检测层得到的预测数据进行图像后处理,最终得到目标检测结果。
5.根据权利要求4所述的一种基于FPGA的目标检测加速器设计方法,其特征在于,步骤三具体方法如下:
对算法模型中的卷积核权重以及输入输出特征图进行动态定点16位量化,先将所有数据转化为定点数进行运算,直到结束所有运算后再将结果转化为浮点数进行表示;
定点数xfixed由以下公式表示:
Figure FDA0003233696590000031
式中bw表示xfixed的位宽,exp表示定点数的阶码,Bi∈[0,1];定点数xfixed采用补码表示,最高位为符号位;
浮点数xfloat与定点数xfixed的相互转化公式如下:
xfixed=(int)(xfloat*2bw)
xfloat=(float)(xfixed*2-bw)
然后提出一个CNN硬件加速器架构,该架构包括输入输出模块、卷积模块、池化模块、重排序模块、全连接模块、激活模块以及控制模块;其中输入输出模块包括n个AXI Master接口、一个AXI Lite Slave接口、Data Scatter单元、Data Gather单元、权重输入缓存、特征图输入缓存和输出缓存,通过n-1个AXI Master接口并发读取输入特征图和写回输出特征图,通过一个AXI Master接口读取每层权重参数,通过AXI Lite Slave接口读写控制模块,Data Scatter单元用于生成对应写入地址,并将通过n-1个AXI Master接口读到的输入特征图像素块分发到特征图输入缓存,Data Gather单元用于生成写回地址,将输出缓存中的输出特征图像素块通过n-1个AXI Master接口写回片外缓存;卷积模块用于完成算法模型中的卷积运算,将卷积循环中的输出特征图数M和输入特征图数N两维部分展开,形成多个并行乘法计算单元和多个的加法树,流水地处理乘加运算,每个时钟周期,卷积模块从特征图输入缓存中读入多个相同位置的像素,与此同时从独立的权重输入缓存中读入相同位置的权重,进行乘法计算,然后加法树将乘积两两相加,得到的结果和部分和累加后,写回输出缓存中;池化模块用于完成算法模型中的池化运算,降低特征图的维数以及减少过拟合,每个时钟周期,池化模块从独立的输入特征图缓存中读取相同位置的一个像素与当前最大值比较,同时有多个比较器在进行不同输入特征图的比较运算,最后将得到的最大值写入输出缓存中;重排序模块用于完成算法模型中的重排序运算,对输入特征图像素抽样重排;全连接模块用于完成算法模型中的全连接层运算;激活模块用于完成算法模型中的激活函数的运算,对每个输出特征图像素做一个非线性变换,用于给网络增加非线性拟合的能力;控制模块用于控制算法模型的不同运算以及数据的传输。
CN202110995008.6A 2021-08-27 2021-08-27 一种基于fpga的目标检测加速器设计方法 Active CN113792621B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110995008.6A CN113792621B (zh) 2021-08-27 2021-08-27 一种基于fpga的目标检测加速器设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110995008.6A CN113792621B (zh) 2021-08-27 2021-08-27 一种基于fpga的目标检测加速器设计方法

Publications (2)

Publication Number Publication Date
CN113792621A true CN113792621A (zh) 2021-12-14
CN113792621B CN113792621B (zh) 2024-04-05

Family

ID=79182211

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110995008.6A Active CN113792621B (zh) 2021-08-27 2021-08-27 一种基于fpga的目标检测加速器设计方法

Country Status (1)

Country Link
CN (1) CN113792621B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114662681A (zh) * 2022-01-19 2022-06-24 北京工业大学 一种面向yolo算法可快速部署的通用硬件加速器系统平台
CN115130672A (zh) * 2022-06-08 2022-09-30 武汉大学 一种软硬件协同优化卷积神经网络计算的方法及装置
CN117251275A (zh) * 2023-11-17 2023-12-19 北京卡普拉科技有限公司 多应用异步i/o请求的调度方法及系统、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111178518A (zh) * 2019-12-24 2020-05-19 杭州电子科技大学 一种基于fpga的软硬件协同的加速方法
WO2020258529A1 (zh) * 2019-06-28 2020-12-30 东南大学 一种基于bnrp的可配置并行通用卷积神经网络加速器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020258529A1 (zh) * 2019-06-28 2020-12-30 东南大学 一种基于bnrp的可配置并行通用卷积神经网络加速器
CN111178518A (zh) * 2019-12-24 2020-05-19 杭州电子科技大学 一种基于fpga的软硬件协同的加速方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
夏琪迪 等: "基于异构FPGA 的目标检测硬件加速器架构设计", 14 January 2021 (2021-01-14), pages 1 - 11 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114662681A (zh) * 2022-01-19 2022-06-24 北京工业大学 一种面向yolo算法可快速部署的通用硬件加速器系统平台
CN114662681B (zh) * 2022-01-19 2024-05-28 北京工业大学 一种面向yolo算法可快速部署的通用硬件加速器系统平台
CN115130672A (zh) * 2022-06-08 2022-09-30 武汉大学 一种软硬件协同优化卷积神经网络计算的方法及装置
CN115130672B (zh) * 2022-06-08 2024-03-08 武汉大学 一种软硬件协同优化卷积神经网络计算的方法及装置
CN117251275A (zh) * 2023-11-17 2023-12-19 北京卡普拉科技有限公司 多应用异步i/o请求的调度方法及系统、设备及介质
CN117251275B (zh) * 2023-11-17 2024-01-30 北京卡普拉科技有限公司 多应用异步i/o请求的调度方法及系统、设备及介质

Also Published As

Publication number Publication date
CN113792621B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
CN111967468B (zh) 一种基于fpga的轻量级目标检测神经网络的实现方法
US20220012593A1 (en) Neural network accelerator and neural network acceleration method based on structured pruning and low-bit quantization
CN106991477B (zh) 一种人工神经网络压缩编码装置和方法
CN109325591B (zh) 面向Winograd卷积的神经网络处理器
CN113792621A (zh) 一种基于fpga的目标检测加速器设计方法
CN111459877A (zh) 基于FPGA加速的Winograd YOLOv2目标检测模型方法
WO2020073211A1 (zh) 运算加速器、处理方法及相关设备
CN111178518A (zh) 一种基于fpga的软硬件协同的加速方法
CN110895715A (zh) 存储高效的神经网络
CN113051216B (zh) 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法
Daghero et al. Energy-efficient deep learning inference on edge devices
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN114742225A (zh) 一种基于异构平台的神经网络推理加速方法
CN112163601A (zh) 图像分类方法、系统、计算机设备及存储介质
CN112633477A (zh) 一种基于现场可编程阵列的量化神经网络加速方法
Shahshahani et al. Memory optimization techniques for fpga based cnn implementations
CN109740619B (zh) 用于目标识别的神经网络终端运行方法和装置
CN113392973A (zh) 一种基于fpga的ai芯片神经网络加速方法
CN115423081A (zh) 一种基于fpga的cnn_lstm算法的神经网络加速器
CN113516236A (zh) 基于zynq平台的vgg16网络并行加速处理方法
CN116822600A (zh) 一种基于risc-v架构的神经网络搜索芯片
CN117610626A (zh) 基于fpga实现卷积神经网络的软硬件协同加速方法
Adel et al. Accelerating deep neural networks using FPGA
CN116051356A (zh) 一种基于图像快速风格迁移方法及fpga系统
WO2021238734A1 (zh) 一种神经网络的训练方法及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant