CN109472734A - 一种基于fpga的目标检测网络及其实现方法 - Google Patents
一种基于fpga的目标检测网络及其实现方法 Download PDFInfo
- Publication number
- CN109472734A CN109472734A CN201811213005.7A CN201811213005A CN109472734A CN 109472734 A CN109472734 A CN 109472734A CN 201811213005 A CN201811213005 A CN 201811213005A CN 109472734 A CN109472734 A CN 109472734A
- Authority
- CN
- China
- Prior art keywords
- layer
- convolutional layer
- fpga
- target detection
- detection network
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种基于FPGA的目标检测网络及其实现方法,网络包括若干卷积层、若干池化层、上采样层、Route层、YOLO输出层,卷积层输出结果交替写入两个外部SRAM中;卷积层加速器包括四组移位寄存器和12个卷积运算操作单元;卷积层的二维卷积操作由四组移位寄存器实现;池化层输出结果交替写入两个SRAM中;目标检测网络各层之间的启动切换由握手信号决定;数据调度模块操纵SDRAM缓存图像数据,发送整帧图像数据至后续模块,将权值矩阵发送至卷积层中。本发明能够实现卷积层的加速,将传输时间掩盖于计算时间,得到FPGA平台计算吞吐与内存带宽的最佳匹配,达到最高计算‑通信比。
Description
技术领域
本发明属于图像处理技术领域,涉及目标检测网络技术,具体涉及一种基于FPGA的目标检测网络及其实现方法。
背景技术
目标检测是计算机视觉领域的关键任务之一,广泛地应用于无人驾驶以及安防系统。目标检测模型可以识别一张图片的多个物体,并可以定位出不同物体(给出边界框)。目前主流的目标检测算法主要是基于深度学习模型,从基于RegionProposal的RCNN,fast-RCNN,到基于回归方法的SSD,YOLOV1,V2,V3等均超越了以往的算法。目前性能最好的YOLOV3能够实现小目标检测或检测相距很近的两个物体,相应的深度网络的嵌入式设计也随即提上日程。
由于深度网络的特殊计算模式,通用处理器实现深度网络并不高效,很难满足实时性的需求。于是,基于FPGA,GPU甚至ASIC的不同加速器被相继提出以提升深度网络设计性能。在这些方案中,基于FPGA的加速器由于其高能效,低功耗,开发周期短以及可重配置能力使其成为嵌入式AI和机器学习应用程序的理想选择。
现有的深度网络FPGA设计大致分为两类:一类采用压缩网络/剪枝网络实现,但其精度损失很大,效果并不理想;另一类采用定点化策略的设计,这类设计通常没有考虑FPGA平台的计算吞吐与内存带宽的匹配,要么未充分利用逻辑资源,要么未充分利用内存带宽,都不能获得最佳性能。
发明内容
为解决上述问题,本发明公开了一种基于FPGA的目标检测网络及其实现方法,针对目标检测领域的YOLO V3_tiny网络,进行卷积层Conv与池化层Maxpooling之间的流水设计,和卷积操作的移位寄存器设计,以及多个(12个)卷积运算操作的次序处理。
为了达到上述目的,本发明提供如下技术方案:
一种基于FPGA的目标检测网络,包括若干卷积层、若干池化层、上采样层、Route层、YOLO输出层,其中卷积层输出结果交替写入两个外部SRAM中;卷积层加速器包括四组移位寄存器和12个卷积运算操作单元,由计数器控制,按次序由12个卷积操作运算单元输出卷积结果,并根据计数器的数值剔除无效的卷积结果;卷积层的二维卷积操作由四组移位寄存器实现;池化层输出结果交替写入两个外部SRAM中;目标检测网络各层之间的启动切换由握手信号决定;数据调度模块操纵SDRAM缓存图像数据,发送整帧图像数据至后续模块,将权值矩阵发送至卷积层中。
进一步的,当采用3*3权值矩阵时,卷积层通过最前面的三组相连接的移位寄存器的输出与权值矩阵进行卷积运算,随着时钟信号的触发,移位寄存器的数据不停的向前移动,三组相连接的移位寄存器输出的不同的图像数据进入相对应的卷积运算处理单元。
进一步的,FPGA中还包括图像缩放模块,用于交替地从两SRAM中读数,将图像缩放为适合YOLO V3_tiny网络处理的尺寸。
进一步的,目标检测网络包括依次连接的卷积层、池化层、卷积层、池化层、卷积层、池化层、卷积层、池化层、卷积层、池化层、卷积层、卷积层、上采样层、Route层、卷积层、YOLO输出层。
本发明还提供了基于FPGA的目标检测网络的实现方法,包括如下步骤:
步骤1:首先采集的图像数据进入SDRAM缓存,数据调度模块操纵SDRAM发送整帧图像数据到FPGA外部存储器SRAM中,双缓存器实现乒乓操作;
步骤2:由握手信号启动的图像缩放模块交替地从两SRAM中读数,将图像缩放为适合YOLO V3_tiny网络处理的尺寸;
步骤3:由握手信号启动的卷积层和池化层交替地从两SRAM中读数,处理的结果送入下一级网络层,最终的YOLO输出层输出目标检测结果。
进一步的,卷积层加速器包括四组移位寄存器和12个卷积运算操作单元,由计数器控制,按次序由12个卷积操作运算单元输出卷积结果。
进一步的,卷积层的二维卷积操作方法由四组移位寄存器实现,当采用3*3权值矩阵时,卷积层通过最前面的三组相连接的移位寄存器的输出与权值矩阵进行卷积运算,随着时钟信号的触发,移位寄存器的数据不停的向前移动,三组相连接的移位寄存器输出的不同的图像数据进入相对应的卷积运算处理单元。
进一步的,输入权值矩阵和输入的图像数据均经过固定精度的定点化处理。
进一步的,所述固定精度为8位二进制。
与现有技术相比,本发明具有如下优点和有益效果:
本发明提供的FPGA的目标检测网络及其实现方法可以最大限度地加速计算,能够实现卷积层的加速,将传输时间掩盖于计算时间,得到FPGA平台的计算吞吐与内存带宽的最佳匹配,达到最高计算-通信比。
附图说明
图1为目标检测网络的FPGA设计与实现的架构示意图。
图2为目标检测网络的卷积层加速器的设计架构图。
图3为目标检测网络的卷积层加速器操作的设计结构图。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
本发明提供的基于FPGA的目标检测网络,其中YOLO V3_tiny网络结构如表1所示,包括以下多层网络:
表1
该网络的FPGA设计架构如图1所示,FPGA中的数据调度模块操纵SDRAM缓存图像数据,发送整帧图像数据至后续模块,并将权值矩阵发送至卷积层conv中,自SDRAM发出的的数据首先进入FIFO后再发送至外部SRAM中。FPGA中还包括图像缩放(Resize)模块,用于交替地从两SRAM中读数,将图像缩放为适合YOLO V3_tiny网络处理的尺寸。卷积层从SRAM中获取数据,其输出结果交替写入两个外部SRAM中,实现乒乓操作;池化层从SRAM中获取数据,其输出结果交替写入两个外部SRAM中,实现乒乓操作;目标检测网络各层之间的启动切换由握手信号决定。
更为具体的说,卷积层加速器结构如图2所示,由四组移位寄存器和12个卷积运算操作单元实现,由计数器控制,按次序由12个卷积操作运算单元输出卷积结果,考虑到边界效应,根据计数器的数值剔除无效的卷积结果。最终实现卷积层的加速,将传输时间掩盖于计算时间,达到计算资源和内存带宽的最佳匹配。每个卷积操作运算单元包含9个乘法器和8个加法器,12个卷积操作运算单元顺序运行可以最大限度地加速计算。
卷积层加速器的详细操作方法如图3所示,由四组移位寄存器实现。以3*3的权值矩阵为例,卷积层通过最前面的三组相连接的移位寄存器的输出与权值矩阵进行卷积运算,随着时钟信号的触发,移位寄存器的数据不停的向前移动,三组相连接的移位寄存器输出的不同的图像数据进入相对应的卷积运算处理单元。由于输入权值矩阵和输入的图像数据均经过固定精度(8位二进制)的定点化处理,卷积操作运算单元的执行总周期数为12(包含9个并行的乘法器处理周期(8个周期)加上4个顺序执行的加法器处理周期(4个周期),一共12个周期),因而设计的卷积层加速器中的12个卷积操作运算单元顺序运行可以最大限度地加速计算。
网络中池化层由四组移位寄存器实现。
基于上述网络,本发明还提供了该网络的实现方法,步骤如下:
步骤1:首先采集的图像数据进入SDRAM缓存,数据调度模块操纵SDRAM交替发送整帧图像数据到FPGA两外部存储器SRAM中,实现乒乓操作。
步骤2:由握手信号启动的图像缩放(Resize)模块交替地从两SRAM中读数,将图像缩放为适合YOLO V3_tiny网络处理的尺寸。
步骤3:由握手信号启动的卷积层Conv和池化层Maxpooling交替地从两SRAM中读数,处理的结果送入下一级网络层,最终的YOLO输出层输出目标检测结果。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (9)
1.一种基于FPGA的目标检测网络,其特征在于:包括若干卷积层、若干池化层、上采样层、Route层、YOLO输出层,其中卷积层输出结果交替写入两个外部SRAM中;卷积层加速器包括四组移位寄存器和12个卷积运算操作单元,由计数器控制,按次序由12个卷积操作运算单元输出卷积结果,并根据计数器的数值剔除无效的卷积结果;卷积层的二维卷积操作由四组移位寄存器实现;池化层输出结果交替写入两个外部SRAM中;目标检测网络各层之间的启动切换由握手信号决定;数据调度模块操纵SDRAM缓存图像数据,发送整帧图像数据至后续模块,还将权值矩阵发送至卷积层中。
2.根据权利要求1所述的基于FPGA的目标检测网络,其特征在于:当采用3*3权值矩阵时,卷积层通过最前面的三组相连接的移位寄存器的输出与权值矩阵进行卷积运算,随着时钟信号的触发,移位寄存器的数据不停的向前移动,三组相连接的移位寄存器输出的不同的图像数据进入相对应的卷积运算处理单元。
3.根据权利要求1所述的基于FPGA的目标检测网络,其特征在于:FPGA中还包括图像缩放模块,用于交替地从两SRAM中读数,将图像缩放为适合YOLO V3_tiny网络处理的尺寸。
4.根据权利要求1所述的基于FPGA的目标检测网络,其特征在于:目标检测网络包括依次连接的卷积层、池化层、卷积层、池化层、卷积层、池化层、卷积层、池化层、卷积层、池化层、卷积层、卷积层、上采样层、Route层、卷积层、YOLO输出层。
5.一种基于FPGA的目标检测网络的实现方法,其特征在于,包括如下步骤:
步骤1:首先采集的图像数据进入SDRAM缓存,数据调度模块操纵SDRAM发送整帧图像数据到FPGA外部存储器SRAM中,双缓存器实现乒乓操作;
步骤2:由握手信号启动的图像缩放模块交替地从两SRAM中读数,将图像缩放为适合YOLOV3_tiny网络处理的尺寸;
步骤3:由握手信号启动的卷积层和池化层交替地从两SRAM中读数,处理的结果送入下一级网络层,最终的YOLO输出层输出目标检测结果。
6.根据权利要求5所述的基于FPGA的目标检测网络的实现方法,其特征在于:卷积层加速器包括四组移位寄存器和12个卷积运算操作单元,由计数器控制,按次序由12个卷积操作运算单元输出卷积结果。
7.根据权利要求5所述的基于FPGA的目标检测网络的实现方法,其特征在于:卷积层的二维卷积操作方法由四组移位寄存器实现,当采用3*3权值矩阵时,卷积层通过最前面的三组相连接的移位寄存器的输出与权值矩阵进行卷积运算,随着时钟信号的触发,移位寄存器的数据不停的向前移动,三组相连接的移位寄存器输出的不同的图像数据进入相对应的卷积运算处理单元。
8.根据权利要求5所述的基于FPGA的目标检测网络的实现方法,其特征在于:输入权值矩阵和输入的图像数据均经过固定精度的定点化处理。
9.根据权利要求8所述的基于FPGA的目标检测网络的实现方法,其特征在于:所述固定精度为8位二进制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811213005.7A CN109472734B (zh) | 2018-10-18 | 2018-10-18 | 一种基于fpga的目标检测网络及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811213005.7A CN109472734B (zh) | 2018-10-18 | 2018-10-18 | 一种基于fpga的目标检测网络及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109472734A true CN109472734A (zh) | 2019-03-15 |
CN109472734B CN109472734B (zh) | 2022-12-27 |
Family
ID=65664699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811213005.7A Active CN109472734B (zh) | 2018-10-18 | 2018-10-18 | 一种基于fpga的目标检测网络及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109472734B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111199277A (zh) * | 2020-01-10 | 2020-05-26 | 中山大学 | 一种卷积神经网络加速器 |
CN111783967A (zh) * | 2020-05-27 | 2020-10-16 | 上海赛昉科技有限公司 | 一种适用于专用神经网络加速器的数据双层缓存方法 |
CN116596043A (zh) * | 2023-07-13 | 2023-08-15 | 杭州菲数科技有限公司 | 一种卷积神经网络计算方法、系统、电子设备和存储介质 |
US12008743B2 (en) * | 2020-05-22 | 2024-06-11 | Robert Bosch Gmbh | Hazard detection ensemble architecture system and method |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289828A (zh) * | 2011-06-10 | 2011-12-21 | 中国科学院空间科学与应用研究中心 | 一种基于fpga的星载图像压缩的小波变换系统及方法 |
CN104035750A (zh) * | 2014-06-11 | 2014-09-10 | 西安电子科技大学 | 一种基于fpga的实时模板卷积实现方法 |
CN106951395A (zh) * | 2017-02-13 | 2017-07-14 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
CN107134144A (zh) * | 2017-04-27 | 2017-09-05 | 武汉理工大学 | 一种用于交通监控的车辆检测方法 |
CN107656899A (zh) * | 2017-09-27 | 2018-02-02 | 深圳大学 | 一种基于fpga的模板卷积实现方法和系统 |
CN207458128U (zh) * | 2017-09-07 | 2018-06-05 | 哈尔滨理工大学 | 一种基于fpga在视觉应用中的卷积神经网络加速器 |
CN108470190A (zh) * | 2018-03-09 | 2018-08-31 | 北京大学 | 基于fpga定制脉冲神经网络的图像识别方法 |
-
2018
- 2018-10-18 CN CN201811213005.7A patent/CN109472734B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289828A (zh) * | 2011-06-10 | 2011-12-21 | 中国科学院空间科学与应用研究中心 | 一种基于fpga的星载图像压缩的小波变换系统及方法 |
CN104035750A (zh) * | 2014-06-11 | 2014-09-10 | 西安电子科技大学 | 一种基于fpga的实时模板卷积实现方法 |
CN106951395A (zh) * | 2017-02-13 | 2017-07-14 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
CN107134144A (zh) * | 2017-04-27 | 2017-09-05 | 武汉理工大学 | 一种用于交通监控的车辆检测方法 |
CN207458128U (zh) * | 2017-09-07 | 2018-06-05 | 哈尔滨理工大学 | 一种基于fpga在视觉应用中的卷积神经网络加速器 |
CN107656899A (zh) * | 2017-09-27 | 2018-02-02 | 深圳大学 | 一种基于fpga的模板卷积实现方法和系统 |
CN108470190A (zh) * | 2018-03-09 | 2018-08-31 | 北京大学 | 基于fpga定制脉冲神经网络的图像识别方法 |
Non-Patent Citations (2)
Title |
---|
NALLATECH(MOLEX旗下公司): "二进制神经网络的 FPGA 加速", 《今日电子》 * |
谢文遨: "基于FPGA嵌入式平台的高能效CNN应用系统", 《中国优秀硕士论文全文数据库》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111199277A (zh) * | 2020-01-10 | 2020-05-26 | 中山大学 | 一种卷积神经网络加速器 |
CN111199277B (zh) * | 2020-01-10 | 2023-05-23 | 中山大学 | 一种卷积神经网络加速器 |
US12008743B2 (en) * | 2020-05-22 | 2024-06-11 | Robert Bosch Gmbh | Hazard detection ensemble architecture system and method |
CN111783967A (zh) * | 2020-05-27 | 2020-10-16 | 上海赛昉科技有限公司 | 一种适用于专用神经网络加速器的数据双层缓存方法 |
CN111783967B (zh) * | 2020-05-27 | 2023-08-01 | 上海赛昉科技有限公司 | 一种适用于专用神经网络加速器的数据双层缓存方法 |
CN116596043A (zh) * | 2023-07-13 | 2023-08-15 | 杭州菲数科技有限公司 | 一种卷积神经网络计算方法、系统、电子设备和存储介质 |
CN116596043B (zh) * | 2023-07-13 | 2023-10-13 | 杭州菲数科技有限公司 | 一种卷积神经网络计算方法、系统、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109472734B (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liang et al. | Evaluating fast algorithms for convolutional neural networks on FPGAs | |
CN109472734A (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
Ma et al. | Scalable and modularized RTL compilation of convolutional neural networks onto FPGA | |
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
Jin et al. | An efficient implementation of deep convolutional neural networks on a mobile coprocessor | |
CN103049241B (zh) | 一种提高cpu+gpu异构装置计算性能的方法 | |
CN108537331A (zh) | 一种基于异步逻辑的可重构卷积神经网络加速电路 | |
CN105335331B (zh) | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 | |
CN109871949A (zh) | 卷积神经网络加速器及加速方法 | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN101937425B (zh) | 基于gpu众核平台的矩阵并行转置方法 | |
CN110543936B (zh) | 一种cnn全连接层运算的多并行加速方法 | |
CN112269992B (zh) | 基于人工智能处理器的实时恶意样本检测方法及电子装置 | |
CN109146065A (zh) | 二维数据的卷积运算方法及装置 | |
CN108664447A (zh) | 一种矩阵与矢量的乘法运算方法及装置 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
Huang et al. | A high performance multi-bit-width booth vector systolic accelerator for NAS optimized deep learning neural networks | |
Xie et al. | High throughput CNN accelerator design based on FPGA | |
Duan et al. | Energy-efficient architecture for FPGA-based deep convolutional neural networks with binary weights | |
Wu | Review on FPGA-based accelerators in deep learning | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
Cao et al. | FPGA-based accelerator for convolution operations | |
CN107256203A (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 |