CN111459877B - 基于FPGA加速的Winograd YOLOv2目标检测模型方法 - Google Patents
基于FPGA加速的Winograd YOLOv2目标检测模型方法 Download PDFInfo
- Publication number
- CN111459877B CN111459877B CN202010254820.9A CN202010254820A CN111459877B CN 111459877 B CN111459877 B CN 111459877B CN 202010254820 A CN202010254820 A CN 202010254820A CN 111459877 B CN111459877 B CN 111459877B
- Authority
- CN
- China
- Prior art keywords
- winograd
- yolov2
- target detection
- data
- model
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明公布了一种基于FPGA加速的Winograd YOLOv2目标检测模型方法,采用PYNQ板卡,PYNQ板卡的主控制芯片包括处理***端PS和可编程逻辑端PL;其中PS端将YOLO模型及待检测图像的特征图数据进行缓存;PL端将YOLO模型的参数与待检测图像缓存到片上RAM中,部署带有Winograd算法的YOLO加速器,完成对模型加速运算,形成硬件加速器的数据通路,实现对待检测图像的目标检测;还可将加速电路运算结果读出,并进行图像预处理和显示。采用本发明的技术方案,能够降低YOLO算法的计算复杂度,FPGA加速器存储优化算法缩减了FPGA在加速YOLO算法时的计算时间,加速目标检测,有效提升目标检测的性能。
Description
技术领域
本发明属于计算机视觉和边缘计算技术领域,涉及一种针对目标检测模型的FPGA加速器设计方法。
背景技术
近年来,随着机器视觉和边缘计算的发展,基于深度学习网络的目标检测与识别网络模型得到了很大的发展,并且在视频场景监控,机器人控制,以及无人驾驶汽车等领域实现了大量的应用。具有代表性的模型有single-shot-multibox-detection(SSD)、FasterR-CNN以及you-only-look-once(YOLO网络模型)系列,其中,YOLO算法具有更快、更准确的性能优势。
基于深度学习网络的目标检测与识别模型大部分都是在图像处理器(GraphicProcessing Units,GPU)中完成,由于其并行化计算单元数量众多,在存在大量重复乘加运算的卷积神经网络中表现出来的性能优势更加突出。但是边缘计算需要在体积小、运算快、功耗低的计算设备运行,因此GPU很难满足上述要求。在满足边缘计算要求中表现突出的有专用集成芯片(application-specific integrated circuit,ASIC)和FPGA,FPGA的优势在于1)高灵活性:FPGA能够执行ASIC能够执行的任何逻辑功能,独特优势在于随时可以改变芯片功能;2)开发时间短:FPGA无需进行流片可直接进行编程;3)成本低:相比于ASIC无需流片的成本,更加适合小规模使用。
Suda等人提出了使用OpenCL框架的定点化卷积神经网络加速设计,提出了一种***的方法,在给定的FPGA资源限制下最小化执行时间。(Suda N,Chandra V,Dasika G,etal.Throughput-optimized OpenCL based FPGA accelerator for large-scaleconvolutional neural networks[C].Proceedings of the 2016ACM/SIGDAInternational Symposium on Field-Programmable Gate Arrays.ACM.2016.16-25.)
Aydona等人设计的OpenCL加速***,通过将所有中间特征缓存在芯片上,并利用Winograd算法来减少卷积的乘累加运算,从而大大提高了性能。(Ling A C,Aydonat U,O'Connell S,et al.Creating High Performance Applications with Intel's FPGAOpenCLTMSDK[C].the 5th International Workshop.ACM,2017.)
YOLO模型的FPGA加速也有很多研究工作和成果,Duy等人利用RTL电路,实现了YOLOv2模型的加速,对网络中的参数进行二进制加权,降低了FPGA加速中的DSP消耗,通过数据复用和动态随机存取,减少了DRAM的访问,降低了功耗。(Nguyen D T,Nguyen T N,KimH,et al.A High-Throughput and Power-Efficient FPGA Implementation of YOLO CNNfor Object Detection[J].IEEE Transactions on Very Large Scale Integration(VLSI)Systems,2019:1-13.);Nakahara等人在轻量级YOLOv2模型中结合二进制网络和支持向量机(SVM),设计了完整的加速流程,达到了很好的效果。(H.Nakahara,H.Yonekawa,T.Fujii,and S.Sato,“A lightweight YOLOv2:A binarized CNN with a parallelsupport vector regression for an FPGA,”in Proc.ACM/SIGDA Int.Symp.Field-Program.Gate Arrays,Feb.2018,pp.31–40.)
基于YOLO的FPGA加速方法,解决了目标检测在边缘计算设备上存在的功耗大,速度慢等问题,但是FPGA的片上资源、带宽和功耗依旧是FPGA存在的最大挑战,而当Winograd算法被引进FPGA的加速中时,片上资源和带宽得到了很好的利用,同时保证较低的功耗。
基于深度学习的目标检测模型的FPGA加速器设计方法一直是边缘计算的一个热点课题。但是在现有的加速器设计方法中,存在着片上资源分配不合理、功耗大等诸多问题,因此,实现目标检测模型在FPGA中高效率、低功耗推理是一项极具挑战性的技术任务。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于FPGA加速的WinogradYOLOv2目标检测模型方法,基于Winograd的YOLOv2模型进行FPGA加速器设计,在现有YOLOv2模型加速和Winograd算法加速(Winograd算法用作卷积优化在卷积核上以减少计算量)的基础上,实现YOLO模型的FPGA加速器设计,提出了基于Winograd YOLO的FPGA加速方法,降低YOLO算法的计算复杂度,并提出了FPGA加速器存储优化算法,缩减FPGA在加速YOLO算法时的计算时间,加速目标检测,有效提升目标检测的性能。
本发明采用Winograd算法,将其用作卷积优化的在卷积核上的目的是减少计算量,以及提出一种新的缓存调度方法—缓存流水线,以缩减模型推理时间。
本发明的技术方案是:
一种基于FPGA加速的Winograd YOLOv2目标检测方法,采用XILINX生产的PYNQ(Python Productivity for Zynq)板卡,对YOLO网络模型以及图像的特征图数据进行缓存,形成硬件加速器的数据通路,实现对待检测图像的目标检测,可将加速电路运算结果读出,并进行图像预处理和显示;
PYNQ板卡的主控制芯片ZYNQ7020包括两个部分,分别是PS(Processing System,处理***)端和PL(Programmable Logic,可编程逻辑)端。其中PS端控制将YOLO模型以及待检测图像进行缓存,随后在PL端,将YOLO模型的参数与待检测图片缓存到PYNQ板卡的片上RAM(Random Access Memory)中,设计并部署带有Winograd算法的YOLO加速器,调度策略采用缓存流水线,完成对模型加速运算,形成整个硬件加速器的数据通路。最后,在PS端利用AXI总线(Advanced eXtensible Interface)将PL端模型的运算结果读出,在PS端进行图像预处理和显示;
基于FPGA加速的Winograd YOLOv2目标检测模型方法具体包括如下步骤:
A.训练目标检测网络模型:
选用YOLOv2目标检测网络模型(Molchanov V V,Vishnyakov B V,Vizilter Y V,et al.Pedestrian detection in video surveillance using fully convolutionalYOLO neural network[C]//SPIE Optical Metrology.2017:103340Q.DOI:10.1117/12.2270326),完成训练,获取YOLOv2目标检测网络模型的权重值weight。
B.对步骤A中训练好的YOLOv2目标检测网络模型进行低位定点化(Low-Bit FixedPoint);
如图2所示,在计算机中数据存储的大多格式为32位浮点数,其中32bit包括符号位(S)、阶码位(M)、尾位(M),其中阶码位即为浮点数的整数部分,尾位为浮点数的小数部分。定点数与浮点数的区别在于定点数的小数点是固定的,这在FPGA中能大大较少存储空间,并降低计算量,具体过程如下:
B1.获取YOLOv2目标检测网络模型最佳的定点量化方法:
通过比较量化前后的网络各个参数平方和之差,来确定最佳的定点化参数(尾码Mmin),如公式(1)所示:
其中,Wfloat表示YOLOv2目标检测网络模型某层的任意权重参数原始浮点值,W(bw,M)表示在给定位宽bw和阶码M下将Wfloat定点化后转换回浮点的新浮点数W'float。偏置参数bias的量化与其类似,在此不过多叙述。
B2.获取YOLOv2网络层数R,执行步骤B3并重复R次。
B3.读取YOLOv2网络当前层的权重,分别将weight(权重值)和bias(偏置参数值)定点化,得到定点化模型参数;具体将32位的浮点数变化成16位的定点数(1bit符号位,Mbit阶码位,(16-M-1)bit尾位)。
B4.根据B3中得到的定点化模型参数,对当前模型参数进行测试,验证模型的准确率。
B4.1从PASCAL VOC0712(PASCAL:Pattern Analysis,Statistical Modellingand Computational Learning,VOC:Visual Object Classes)数据集中随机选取16492张图像作为测试集。
B4.2将定点化后的模型参数载入YOLOv2目标检测模型中,进行模型前向推理。
B4.3根据推理结果计算模型的map(均值平均精度)
C.设计针对YOLOv2的FPGA加速器。
卷积层所涉及的计算复杂、数据量大,从而导致计算时间长、计算资源消耗巨大,因此在PL端设计带有Winograd算法的YOLOv2卷积核,在卷积操作时将大量的乘运算替换为Winograd算法实现的加法运算,减少了计算卷积所消耗的乘法器资源,在保证较高的精度情况下,降低了FPGA的乘法器使用率。
Winograd算法对于卷积核尺寸较小的卷积计算具有显著的减小计算量的效果。对于YOLOv2算法,所用的卷积均为3×3和1×1卷积,卷积核尺寸较小,适合用Winograd算法来加速卷积操作。Winograd算法通过使用m+r-1次乘法计算出卷积核大小为r的卷积核F(m,r)的m维特征图输出。公式(2)表示的是卷积核大小为3维,输出向量为2维的情况下使用Winograd最小滤波算法进行卷积运算,其中di表示图像卷积运算中输入特征图数据,di表示卷积核数据,mi表示输出数据。
m0=(d0-d2)g0
m3=(d1-d3)g2
Winograd算法的输入为m+r-1个像素的图像数据,输出为m维的向量。在式(2)中,输入为4个像素的图像数据,输出为2维的向量。由于该算法进行了4次输入数据的加法运算,3次卷积核的加法运算和4次对相乘数据的加法运算,所以该算法增加了加法运算次数,但是乘法运算的次数由原来的6次减少为4次,所以可以看出Winograd算法通过加法来代替乘法运算(Liu X,Pool J,Han S,et al.Efficient Sparse-Winograd ConvolutionalNeural Networks[J].2018.),将此方法用于在YOLOv2的加速器中,具体过程如下:
C1.输入转换(Input transform):将从缓存器中取到的特征图数据(卷积输入In)进行变换,当m和r确定后,其中输出转换矩阵A、B和G的值均可确定,In为卷积输入,通过公式(3)由此可得到变换后的特征矩阵Transform(In):
Transform(In)=BTInB (3)
C2.卷积核转换(Filter transform),其中F为卷积核参数,通过公式(4),得到卷积核转换结果Transform(F):
Transform(F)=GTFG (4)
C3.经过反变换函数得到Winograd的卷积结果,其中E为卷积输出结果,通过公式(5),得到卷积计算结果Inverse_Transform(E):
Inverse_Transform(E)=ATEA (5)
C4.YOLOv2网络模型的卷积模块设计
C4.1读取卷积运算数据的流程,为YOLOv2卷积做准备,本发明所设计的卷积计算数据程如图6所示:
进入卷积层操作的输入特征图(Input Feature Map)存储在片上缓存(On-chipbuffer)中,将步骤B3得到模型的参数文件存储在卷积缓存中。当N张特征图进入WinogradPE运算单元之前,进行特征图展开,得到特征图向量,并进行向量分组。在Winograd运算单元中,特征图向量与卷积核作乘加运算,最终能够得到每张特征图的卷积结果,由累加器ACC单元将特征融合,并将计算结果存入输出特征图(Output Feature Map)缓存区,等待下一过程卷积操作读取。
C4.2构建Winograd PE(Processing Element运算单元)
在所发明设计的Winograd PE内部又将其分成了三个部分分别对进入卷积单元的特征图、卷积核进行变换,最后再进行运算,其内部设计如图3所示。此流程可以分为三个步骤:
C4.2.1将从缓存器中取到的特征图数据进行变换,当m和r确定后,转换矩阵A、B和G的值均可确定,由此公式(3)可得到变换后的输入转换后特征矩阵U;
C4.2.2当特征图转换完成,将存储在缓存区的卷积核参数取出,利用公式(4)变换可求得卷积核转换后的特征矩阵V;
C4.2.3将上述步骤求得的U、V矩阵传递给PE运算单元,作点积运算后得到M矩阵,最终可得到计算后的输出结果。其中N表示输入特征图的张数(通道数),M表示输出特征图的张数(通道数),H×H表示卷积核的大小。
在特征图和卷积核的数据进入PE运算单元进行加速运算时,对特征图数据和卷积核数据进行展开并分组。在一次常规的卷积运算中,需要执行6次循环,加入Winograd算法后,可省去Loop-5和Loop-6,在FPGA中节约了循环操作带来的乘法器消耗。
D.PL缓存流水线的缓存优化以及具体时间计算
D1.针对FPGA加速,本发明首次提出缓存流水线Buffer Pipeline的方法(将单Buffer集合改进为多Buffer结构)进行FPGA加速。具体过程如下
D1.1在ZYNQ的逻辑部分,其数据交互是通过外部存储DDR DRAM与CPU进行交互,而DDR在与加速器数据交换时,由片内总线AXI控制。
D1.2在AXI总线后例化一个FIFO接口,以此保证输入和输出加速器运算单元的数据能够以高速进行高频度传输。在加速器运算单元的输入接口处,加上Buffer缓存集群,以此来等待征图以及卷积核转换运算,本发明提出的数据缓存流水线架构如图4所示。
D1.3在加速器输入数据部分,将输入buffer缓存集群(sets)分为多个(如Buf_In1、Buffer_In2和Buffer_In3),将输出Buffer集群相应地分为多个(如Buf_Out1、Buffer_Out2和Buffer_Out3),形成缓存流水线结构。在保证正常数据交互与传输时,这种流水线结构能够充分利用每一个Buffer的优势,在时钟总线CLK的跳变周期中,能够最大程度利用每个Buffer的存储能力。
通过上述步骤,即实现基于FPGA加速的Winograd YOLOv2目标检测,快速得到待检测图像中的目标。
D2.具体时间计算
D2.1计算FPGA完成一次运算总耗时
将每个Buffer的输入数据时间记为Tin,将每一次由Buffer中数据进入PE单元运算的时间记为Tco,加速单元运算结束后由Buffer取出缓存的时间记为Tout,将完成整个任务流程的时间记为Ttask。设在加速单元中完成的任务数为n,设Tin≠Tco≠Tout(三个运算时间相等也不影响结果)。若按照常规存取结构的时序,完成所有任务的时间Tsum如公式(12)所示。
Tsum=n×Ttask=n×(Tin+Tco+Tout) (12)
D2.2得到改进流水存储优化时间
本发明提出的Buffer Pipeline结构,将单Buffer集合改进为three-Buffer结构,并对此结构进行三级流水,设由于总任务可以分为三个阶段,当完成n个任务时,所消耗的总时间TBP_sum如公式(13)所示。
我们以三任务为例作出常规计算与本文所提出的Buffer Pipeline结构的时序图如图7所示,令任务数n=3,此时,常规计算方法中,完成任务所花费的时间如公式(14)所示。
Tsum=3×Ttask=3×(Tin+Tco+Tout) (14)
当用Buffer Pipeline进行缓存处理时,完成整个任务所花费的时间如公式(15)所示。
由不等式性质可知:
因此,有Tsum>TBP_sum,由此可以看出,通过发明所提出的方法可节约的时间Tsave如式(17)所示。
Tsave=Tsum-TBP_sum (17)
=n×(Tin+Tco+Tout)-{Tin+max(Tin,Tco)+max(Tin,Tco,Tout)×[n-(3-1)]+max(Tco,Tout)+Tout}
与现有技术相比,本发明的有益效果是:
(1)在FPGA加速YOLO算法时,将Winograd算法引入到YOLOv2模型中,由于YOLOv2模型中存在大量的卷积运算,在用高层次综合(HLS)工具实现卷积运算时,将循环中大量的乘运算替换为Winograd算法实现的加法运算,减少了计算卷积所消耗的乘法器资源,在实现精度为78.25%的情况下,降低了FPGA的乘法器使用率。
(2)为了提高数据缓存和处理效率,本发明提出一种新的缓存调度方法—缓存流水线(Buffer Pipeline),对每一次进入加速器卷积运算的数据缓存器进行流水线优化处理,经过时序分析可知,最终可以在完成相同计算任务的情况下,缩减所需的时间。
(3)提出了一种基于PYNQ架构下的YOLOv2加速器,利用ZYNQ类型FPGA低功耗、高并行的特点,实现了YOLOv2每一层卷积和池化操作的加速,并对数据进行定点化处理,将权重32-bits浮点数定点化为16-bits数据,并将功耗降低至2.7w,解决了嵌入式端实现深度学习目标检测与识别模型功耗高的问题。
附图说明
图1为本发明基于PYNQ平台的YOLOv2目标检测模型的加速优化方法的流程框图。
图2为模型参数浮点化转定点化示意图;
其中,(a)为32-bits浮点数表示(b)为转换成16-bits定点数。
图3是YOLOv2加速器Winograd PE的结构示意图。
图4是基于缓存流水线优化的加速器内部结构示意图。
图5是不同定点化条件下网络精度变化图;
其中,(a)表示分别在32-bit、16-bit和8-bit参数类型下YOLOv2、Tiny-YOLO和Sim-YOLO模型的大小变化;(b)表示分别在32-bit、16-bit和8-bit参数类型下YOLOv2、Tiny-YOLO和Sim-YOLO模型的精度变化。
图6为YOLOv2加速器数据流示意图。
图7是加速器运算单元中未加入缓存流水线时与加入缓存流水线时的时序变化,在执行三次任务时,Buffer Pipeline方法可以节约的时间;其中Buffer In、Compute和Buffer Out表示完成计算任务的三个阶段。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明设计的加速器整体硬件架构如图1所示,首先在上位机完成YOLOv2模型的训练,使用VOC数据集(VOC2007+2012),随机选取16551张图片作为训练集,16492张图片作为测试集。随后进行模型定点化任务,在嵌入式端完成边缘算法,PS端集成了ARM核并搭载Linux操作***,在移植操作***时保留Python语言环境,CPU可控制PS和PL之间的所有接口,加速器通过CPU调度,将YOLO模型的特征图输入DDR缓存,通过总线与操作******电路交互,CPU利用AXI总线可将加速电路运算结果读出,在PS端进行图像预处理和显示。
在PL逻辑部分,将外部存储DDR中的数据缓存到片上RAM中,并将YOLO加速器的卷积、池化电路在FPGA中布局布线,最后将硬件设计比特文件(Bitstream)和设计指令文件(Tcl)传递给操作***的Overlay,在Overlay中解析硬件电路和YOLO的IP核运算电路,最终形成整个硬件加速器的数据通路。图1为加速器整体架构
下面按照步骤,结合实例对本发明作进一步描述:
1.YOLOv2目标检测模型的训练,表1为YOLOv2模型参数配置
表1本发明实施例采用的YOLOv2模型参数配置
表1中,C表示卷积层;M表示池化层;
2.对步骤1中YOLOv2模型进行低位定点化(Low-Bit Fixed Point),执行如下操作:
2.1获取网络最佳的定点量化方法,通过比较量化前后的网络各个参数的参数平方和之差,来确定最佳的定点化参数(尾码Mmin);
2.2获取YOLOv2网络层数R,重复Q次此过程2.1;
2.3读取当前层的权重,对其进行定点化,分别将weight和bias定点化,将32位的浮点数变化成16位的定点数,其中包括:1bit符号位,Mminbit阶码位,(16-Mmin-1)bit尾位;
2.4将定点化后的模型进行测试,包括如下过程;
2.4.1从VOC数据集(VOC2007+2012)中随机选取16492张为测试集。
2.4.2将定点化后的模型参数载入YOLOv2目标检测模型中,完成卷积、池化等操作,完成网络的前向推理。
2.4.3根据推理结果计算模型的map(均值平均精度)
在数据定点化过程中,网络模型所占用的存储也在下降,相比于原精度模型,在16-bit定点化中,YOLOv2模型的大小缩减7×,Tiny-YOLO和Sim-YOLO分别缩减4×和4.2×。同时,相比于原精度模型,在8-bit定点化中,YOLOv2模型的大小缩减20×,Tiny-YOLO和Sim-YOLO分别缩减8×和12×,由图5可见,经过16-bit定点化,既能保证YOLOv2模型的精度,也能缩减模型的大小。
3.设计针对YOLOv2的FPGA加速器;
YOLOv2加速器数据流如图6所示,包括如下过程:
3.1输入转换(Input transform):将从缓存器中取到的特征图数据进行变换;
3.2卷积核转换(Filter transform)得到卷积核转换结果;
3.3经过反变换函数得到Winograd的卷积结果;
3.4YOLOv2卷积模块设计,构建Winograd PE运算单元;
3.4.1读取卷积运算数据的流程,为YOLOv2卷积做准备;
3.4.2将从缓存器中取到的特征图数据进行变换,将从缓存器中取到的特征图数据进行变换,当m和r确定后,其中转换矩阵A、B和G的值均可确定。如公式(18)所示:
Out=AT[(GFGT)⊙(BTInB)]A (18)
3.4.2.1输入转换(Input transform):U位卷积输入,通过公式(19)由此可得到变换后的特征矩阵U:
U=BTInB (19)
3.4.2.2卷积核转换(Filter transform),其中F为卷积核参数,通过公式(20),得到卷积核转换结果V:
V=GTInG (20)
3.4.2.3将3.4.2.1步骤和3.4.2.2求得的U、V矩阵传递给PE运算单元,通过公式(18)进行点积运算后得到输出结果Out矩阵。
4.PL缓存流水线的存储优化以及具体时间计算,包括如下过程:
4.1PL缓存流水线的存储优化步骤如下:
4.1.1设置数据交换方式:数据交互是通过外部存储DDR DRAM与CPU进行交互,而DDR在与加速器数据交换时,由片内总线AXI控制。
4.1.2在AXI总线后例化一个FIFO接口,以此保证输入和输出加速器运算单元的数据能够以高效的速度进行高频度传输。在加速器运算单元的输入接口处,加上Buffer集群,以此来将数据变换格式并进行时间等待。
4.1.3在加速器输入数据部分,将输入buffer集群(sets)分为:Buf_In1、Buffer_In2和Buffer_In3,将输出Buffer集群分为:Buf_Out1、Buffer_Out2和Buffer_Out 3。在保证正常数据交互与传输时,这种流水线结构能够充分利用每一个Buffer的优势,在时钟总线CLK的跳变周期中,能够最大程度利用每个Buffer的存储能力。
4.2FPGA运算时间计算
4.2.1获得FPGA完成一次运算总耗时
4.2.2得到改进流水存储优化时间,将读特征图、卷积计算、写特征图等操作采用流水化,在同一时钟周期完成多次操作,其中Tsum为优化前操作所需时间,TBP_sum为采用流水优化后总时间,其中Tsave为节省时间,如图7所示。
5.整体YOLOv2加速器性能评估
YOLOv2的卷积层使用的Winograd算法参数为F(2×2,3×3),针对此类卷积进行改进实验,在Vivado HLS中调试生成YOLO加速IP核,Block design中产生硬件比特文件和参数文件,PS的操作***调度硬件逻辑并分配加速资源,在模型参数进入FPGA之前,进行了数据量化处理,均量化为fixed 16-bits类型数据。最终加速平台测试处理每张图片的平均时间为124ms,检测平均精度为78.25%。
将本发明提供的基于PYNQ平台的加速器与其他平台的加速进行了对比,如表2所示,相对于GPU平台,基于PYNQ平台的加速器不仅在精度上没有降低,在功耗上有了很大的改善。在与Zynq Ultrascale+平台上实现的加速器对比中,可以看到,本发明基于PYNQ平台的加速器引入Winograd算法后,加法器的数量增加,但DSP的数量明显减少了,整体资源消耗降低。在实验中,精度有所提高是因为本发明所选的YOLOv2网络模型相对于Tiny YOLOv2等精简YOLO模型,具有更高的精度。
表2本文YOLO模型的硬件实现与其他方法性能对比
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (8)
1.一种基于FPGA加速的Winograd YOLOv2目标检测方法,采用PYNQ板卡,PYNQ板卡的主控制芯片包括处理***端PS和可编程逻辑端PL;其中PS端将YOLO模型及待检测图像的特征图数据进行缓存;PL端将YOLO模型的参数与待检测图像缓存到片上RAM中,部署带有Winograd算法的YOLO加速器,完成对模型加速运算,形成硬件加速器的数据通路,实现对待检测图像的目标检测;还可将加速电路运算结果读出,并进行图像预处理和显示;
包括如下步骤:
A.训练YOLOv2目标检测网络模型,获取YOLOv2目标检测网络模型的权重值weight;
B.对步骤A中训练好的YOLOv2目标检测网络模型进行低位定点化;具体过程如下:
B1.获取YOLOv2目标检测网络模型最佳的定点量化方法:通过比较量化前后的网络各个参数平方和之差,确定最佳的定点化参数即尾码Mmin;
B2.获取YOLOv2目标检测网络模型的网络层数R;
B3.获取YOLOv2网络每一层的权重,并将权重值weight和偏置参数值bias定点化,得到定点化模型参数;
B4.根据B3中得到的定点化模型参数,对当前模型参数进行测试,验证模型的准确率;
C.设计针对YOLOv2的FPGA加速器,将Winograd算法通过加法代替乘法运算的方法用在YOLOv2的加速器中,包括:
在PL端设计带有Winograd算法的YOLOv2卷积核,在卷积操作时将大量的乘运算换为Winograd算法实现的加法运算;采用Winograd算法加速卷积操作,Winograd算法通过使用m+r-1次乘法计算出卷积核大小为r的卷积核F(m,r)的m维特征图输出;即Winograd算法的输入为m+r-1个像素的图像数据,输出为m维的向量;将Winograd算法通过加法代替乘法运算的方法用在YOLOv2的加速器中,包括:
C1.通过输入转换将从缓存器中取到的特征图数据进行变换,得到变换后的特征矩阵Transform(In),In为卷积输入;
C2.通过卷积核转换得到卷积核转换结果Transform(F),其中F为卷积核参数;
C3.经过反变换函数得到Winograd的卷积计算结果Inverse_Transform(E),其中E为卷积输出结果;
C4.设计YOLOv2网络模型的卷积模块,包括:
C4.1设计卷积计算数据流,读取卷积运算数据的流程;
C4.2构建Winograd PE运算单元;将Winograd PE运算单元分成三个部分,分别对进入卷积单元的特征图、卷积核进行变换,再进行运算;包括如下过程:
C4.2.1将从缓存器中取到的特征图数据进行变换,得到变换后的特征矩阵U;
C4.2.2将存储在缓存区的卷积核参数取出,通过变换求得转换后的特征矩阵V;
C4.2.3将上述步骤求得的矩阵U、V传递给运算单元进行点积运算,得到矩阵M,得到输出结果,M表示输出特征图的张数或通道数;
D.PL缓存流水线的存储优化;
D1.针对FPGA加速,采用缓存流水线的方法,将单缓存集合改进为多缓存结构进行FPGA加速;过程如下:
D1.1在ZYNQ的逻辑部分,数据交互通过外部存储DDR DRAM与CPU进行交互;DDR在与加速器数据交换时,由片内总线AXI控制;
D1.2在AXI总线后例化一个FIFO接口,使得输入和输出加速器运算单元的数据以高速进行高频度传输;在加速器运算单元的输入接口处,加上缓存集群,将数据变换格式并等待;
D1.3在加速器输入数据部分,将输入缓存集群分为多个,将输出缓存集群页相应分为多个,形成缓存流水线结构;在保证正常数据交互与传输时,充分利用每一个缓存,在时钟总线的跳变周期中,最大程度利用每个缓存的存储能力;
通过上述步骤,即实现基于FPGA加速的Winograd YOLOv2目标检测,快速得到待检测图像中的目标。
2.如权利要求1所述基于FPGA加速的Winograd YOLOv2目标检测方法,其特征是,采用以下方法计算FPGA完成一次运算总耗时:
将每个Buffer的输入数据时间记为Tin,将每一次由Buffer中数据进入PE单元运算的时间记为Tco,加速单元运算结束后由Buffer取出缓存的时间记为Tout,将完成整个任务流程的时间记为Ttask;设在加速单元中完成的任务数为n,若按照常规存取结构的时序,完成所有任务的时间Tsum表示为式(12):
Tsum=n×Ttask=n×(Tin+Tco+Tout) (12)
采用以下方法计算得到改进流水存储优化时间:
总任务分为三个阶段,当完成n个任务时,所消耗的总时间TBP_sum表示为式(13):
令任务数n=3,完成任务所花费的时间表示为式(14):
Tsum=3×Ttask=3×(Tin+Tco+Tout) (14)
当用缓存流水线进行缓存处理时,完成整个任务所花费的时间表示为式(15):
Tsave=Tsum-TBP_sum
=n×(Tin+Tco+Tout)-{Tin+max(Tin,Tco)+max(Tin,Tco,Tout)×[n-(3-1)]+max(Tco,Tout)+Tout} (17)
节约的时间Tsave表示为式(17)。
3.如权利要求1所述基于FPGA加速的Winograd YOLOv2目标检测方法,其特征是,具体通过PS端的AXI总线将PL端模型的运算结果读出,在PS端进行图像预处理和显示。
5.如权利要求4所述基于FPGA加速的Winograd YOLOv2目标检测方法,其特征是,步骤B3读取YOLOv2目标检测网络模型当前层的权重,分别将权重值和偏置参数值定点化,具体将32位的浮点数变化成16位的定点数,包括1bit符号位,Mminbit阶码位,16-Mmin-1bit尾位。
6.如权利要求1所述基于FPGA加速的Winograd YOLOv2目标检测方法,其特征是,步骤B4对当前模型参数进行测试,验证模型的准确率,包括如下步骤:
B4.1从VOC数据集中随机选取16492张图像作为测试集;
B4.2将定点化后的模型参数载入YOLOv2目标检测模型中,进行模型前向推理;
B4.3根据推理结果计算模型的均值平均精度。
7.如权利要求1所述基于FPGA加速的Winograd YOLOv2目标检测方法,其特征是,步骤C设计针对YOLOv2的FPGA加速器;包括:在PL端设计带有Winograd算法的YOLOv2卷积核,通过采用Winograd算法来加速卷积操作,通过使用Winograd算法v(F(m,r))=m+r-1次乘法计算出卷积核大小为r卷积核F(m,r)的m维特征图输出;卷积核大小为3维,输出向量为2维的情况下使用Winograd最小滤波算法进行卷积运算表示为式(2):
m0=(d0-d2)g0
m3=(d1-d3)g2
其中di表示图像卷积运算中输入特征图数据,di表示卷积核数据,mi表示输出数据;Winograd算法的输入为m+r-1个像素的图像数据,输出为m维的向量;在式(2)中,输入为4个像素的图像数据,输出为2维的向量。
8.如权利要求7所述基于FPGA加速的Winograd YOLOv2目标检测方法,其特征是,步骤C1通过输入转换将从缓存器中取到的特征图数据进行变换:
根据m和r值确定输出转换矩阵A、B和G的值;具体通过式(3)得到变换后的特征矩阵Transform(In):
Transform(In)=BTInB 式(3)
步骤C2具体通过式(4)得到卷积核转换结果Transform(F):
Transform(F)=GTFG (4)
Inverse_Transform(E)=ATEA (5)
步骤C3具体通过式(5)经过反变换函数得到卷积计算结果Inverse_Transform(E)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010254820.9A CN111459877B (zh) | 2020-04-02 | 2020-04-02 | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010254820.9A CN111459877B (zh) | 2020-04-02 | 2020-04-02 | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459877A CN111459877A (zh) | 2020-07-28 |
CN111459877B true CN111459877B (zh) | 2023-03-24 |
Family
ID=71684367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010254820.9A Active CN111459877B (zh) | 2020-04-02 | 2020-04-02 | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459877B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112162942B (zh) * | 2020-09-30 | 2022-12-23 | 南京蕴智科技有限公司 | 一种多模态图像处理硬件加速*** |
CN112330524B (zh) * | 2020-10-26 | 2024-06-18 | 沈阳上博智像科技有限公司 | 一种在图像跟踪***中快速实现卷积的装置和方法 |
CN112418248B (zh) * | 2020-11-19 | 2024-02-09 | 无锡禹空间智能科技有限公司 | 基于fpga加速器的目标检测方法及*** |
CN113128831A (zh) * | 2021-03-11 | 2021-07-16 | 特斯联科技集团有限公司 | 基于边缘计算的人流引导方法、装置、计算机设备和存储介质 |
CN113301221B (zh) * | 2021-03-19 | 2022-09-09 | 西安电子科技大学 | 一种深度网络相机图像处理方法及终端 |
CN113269726A (zh) * | 2021-04-29 | 2021-08-17 | 中国电子科技集团公司信息科学研究院 | 高光谱图像目标检测方法及装置 |
CN113392963B (zh) * | 2021-05-08 | 2023-12-19 | 北京化工大学 | 基于fpga的cnn硬件加速***设计方法 |
CN113139519B (zh) * | 2021-05-14 | 2023-12-22 | 陕西科技大学 | 一种基于全可编程片上***的目标检测*** |
CN113392973B (zh) * | 2021-06-25 | 2023-01-13 | 广东工业大学 | 一种基于fpga的ai芯片神经网络加速方法 |
CN113592702A (zh) * | 2021-08-06 | 2021-11-02 | 厘壮信息科技(苏州)有限公司 | 基于深度卷积神经网络的图像算法加速器及***和方法 |
CN113744220B (zh) * | 2021-08-25 | 2024-03-26 | 中国科学院国家空间科学中心 | 一种基于pynq的无预选框检测*** |
CN113762483B (zh) * | 2021-09-16 | 2024-02-09 | 华中科技大学 | 一种用于心电信号分割的1D U-net神经网络处理器 |
CN113837054A (zh) * | 2021-09-18 | 2021-12-24 | 兰州大学 | 一种基于单目视觉的铁道路口火车识别预警*** |
CN113962361B (zh) * | 2021-10-09 | 2024-04-05 | 西安交通大学 | 一种面向基于Winograd的CNN加速器***的数据无冲突调度方法 |
CN114612956A (zh) * | 2021-12-22 | 2022-06-10 | 中北大学南通智能光机电研究院 | 一种基于zynq的人脸检测识别加速装置和方法 |
CN114662681B (zh) * | 2022-01-19 | 2024-05-28 | 北京工业大学 | 一种面向yolo算法可快速部署的通用硬件加速器***平台 |
CN115457363B (zh) * | 2022-08-10 | 2023-08-04 | 暨南大学 | 一种图像目标检测方法及*** |
CN115392168B (zh) * | 2022-09-01 | 2023-07-25 | 北京工商大学 | 一种用于fpga芯片的装箱方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107993186A (zh) * | 2017-12-14 | 2018-05-04 | 中国人民解放军国防科技大学 | 一种基于Winograd算法的3D CNN加速方法及*** |
CN110175670A (zh) * | 2019-04-09 | 2019-08-27 | 华中科技大学 | 一种基于FPGA实现YOLOv2检测网络的方法及*** |
CN110555516A (zh) * | 2019-08-27 | 2019-12-10 | 上海交通大学 | 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621486B2 (en) * | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
-
2020
- 2020-04-02 CN CN202010254820.9A patent/CN111459877B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107993186A (zh) * | 2017-12-14 | 2018-05-04 | 中国人民解放军国防科技大学 | 一种基于Winograd算法的3D CNN加速方法及*** |
CN110175670A (zh) * | 2019-04-09 | 2019-08-27 | 华中科技大学 | 一种基于FPGA实现YOLOv2检测网络的方法及*** |
CN110555516A (zh) * | 2019-08-27 | 2019-12-10 | 上海交通大学 | 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法 |
Non-Patent Citations (1)
Title |
---|
基于深度可分离卷积的交通标志识别算法;杨晋生等;《液晶与显示》;20191215(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111459877A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN111967468B (zh) | 一种基于fpga的轻量级目标检测神经网络的实现方法 | |
CN107239829B (zh) | 一种优化人工神经网络的方法 | |
CN109284817B (zh) | 深度可分离卷积神经网络处理架构/方法/***及介质 | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
CN110163353B (zh) | 一种计算装置及方法 | |
Bao et al. | A power-efficient optimizing framework fpga accelerator based on winograd for yolo | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速***及其加速方法 | |
Li et al. | Efficient depthwise separable convolution accelerator for classification and UAV object detection | |
Sun et al. | A high-performance accelerator for large-scale convolutional neural networks | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
Yu et al. | Instruction driven cross-layer cnn accelerator for fast detection on fpga | |
CN113344179A (zh) | 基于fpga的二值化卷积神经网络算法的ip核 | |
CN113792621A (zh) | 一种基于fpga的目标检测加速器设计方法 | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
Wu | Review on FPGA-based accelerators in deep learning | |
Yin et al. | FPGA-based high-performance CNN accelerator architecture with high DSP utilization and efficient scheduling mode | |
Hu et al. | High-performance reconfigurable DNN accelerator on a bandwidth-limited embedded system | |
CN115170381A (zh) | 一种基于深度学习的视觉slam加速***及方法 | |
Bai et al. | An OpenCL-based FPGA accelerator with the Winograd’s minimal filtering algorithm for convolution neuron networks | |
Zhang et al. | A block-floating-point arithmetic based FPGA accelerator for convolutional neural networks | |
Li et al. | FPGA Accelerated Real-time Recurrent All-Pairs Field Transforms for Optical Flow | |
CN113673704B (zh) | 一种基于软硬件协同加速的关系网络推理优化的方法 | |
Chen et al. | Edge FPGA-based onsite neural network training | |
Liu et al. | A Convolutional Computing Design Using Pulsating Arrays |
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 |