CN109214504B - 一种基于fpga的yolo网络前向推理加速器设计方法 - Google Patents
一种基于fpga的yolo网络前向推理加速器设计方法 Download PDFInfo
- Publication number
- CN109214504B CN109214504B CN201810970836.2A CN201810970836A CN109214504B CN 109214504 B CN109214504 B CN 109214504B CN 201810970836 A CN201810970836 A CN 201810970836A CN 109214504 B CN109214504 B CN 109214504B
- Authority
- CN
- China
- Prior art keywords
- layer
- convolution
- bram
- network
- fpga
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本发明提出了一种基于FPGA的YOLO网络前向推理加速器设计方法,所述加速器包括FPGA芯片和DRAM,所述FPGA芯片中的存储器BRAM作为数据缓冲器,所述DRAM作为主要存储设备;所述加速器设计方法包括以下步骤:(1)对原网络数据进行8bit定点数量化,得到对检测精度影响最小的小数点位置,形成量化方案,该量化过程是逐层进行的;(2)FPGA芯片对YOLO的九层卷积网络作并行计算;(3)位置映射。解决了现有技术中FPGA芯片上的存储资源的增长速度不及神经网络规模增长迅速,一般的目标检测网络很难按照传统的设计思路移植到FPGA芯片上的技术问题,实现使用更少片上资源达到更快速度的目的。
Description
技术领域
本发明涉及深度学习和硬件结构设计的技术领域,尤其是涉及一种目标检测网络在FPGA上进行前向推理加速的设计方法。
背景技术
近年来,基于卷积神经网络(Convolutional Neutral Network)的机器学习算法已经被广泛的应用到计算机视觉的任务中。但是对于大规模的CNN网络来说,计算密集,存储密集,资源消耗大的特点给上述任务带来了巨大的挑战。传统的通用处理器在面对这类高计算压力和大的数据吞吐时,性能很难达到实用的要求,因此基于GPU、FPGA、ASIC的硬件加速器被提出并广泛的投入使用。
FPGA(Field Programmable Gate Array)现场可编程门阵列,是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路数量有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB、输出输入模块IOB、和内部连线三个部分,可以支持一篇PROM编程多片FPGA。由于灵活的可重配置能力,和出色的性能功耗比,使FPGA成为当今一种重要的深度学习处理器。
目前适合硬件实现的主流目标检测网络为YOLO(You Only Look Once),这种网络速度较快且结构简单,这种算法把物体检测问题处理成回归问题,用一个卷积神经网络结构就可以从输入图像直接预测目标框的位置和类别概率,实现端到端的物体检测,这种结构比较适合于FPGA上的硬件实现。现有发明CN107392309A中公开了一种基于FPGA的通用定点数神经网络卷积加速器硬件结构,包括:通用AXI4高速总线接口,高并行卷积核与特征图数据缓存区、分段式卷积结果缓存区、卷积计算器、缓存区控制器、状态控制器和直接存取控制器。该发明使用片上存储作为缓冲,片外的存储器作为数据的主要存储设备,通过一个片外的通用处理器进行内存管理的从而完成整个卷积网络的计算,这种结构的设计只用一片FPGA无法完成目标检测网络的前向推理。现有发明CN107463990A中提出了一种卷积神经网络的FPGA并行加速方法,包括如下步骤:(1)建立CNN模型;(2)配置硬件架构;(3)配置卷积运算单元。该发明使用片上存储装载整个网络的临时计算结果,因此所能部署的网络规模有限。
现有的基于FPGA的神经网络加速器,往往把网络层的中间计算结果全部存到片上的静态存储器中,网络所需要的权重存到片外的动态存储器中,这样的设计会导致片上的存储器空间限制了所能加速的网络规模。在现阶段,随着任务复杂度和精度的需求变高,卷积神经网络规模越来越大,参数总量也越来越大,但是FPGA芯片的工艺和片上可容纳的存储资源的增长却没有这么迅速,如果仍按照之前的设计方法,则FPGA完全不能容纳这种规模的网络。
如果把片上的静态存储器BRAM作为数据的缓冲区域,而把片外的动态存储器DRAM作为网络的主要数据存储,由于动态存储器的存储空间巨大,因此可容纳参数数量很大的网络,通过合理的分配存储器的带宽来实现各个卷积模块的并行计算。这种设计方法的性能依赖于存储器的带宽,但是相比于在片上堆叠存储资源,提升通信的带宽是更容易实现的。本发明所参考的网络为YOLO-tiny的版本,这个网络的输入大小为416*416*3,网络共9层卷积,最终的输出为带有类别、位置和置信度信息的候选框,并通过区域映射(region操作)算法把计算结果映射到原始图像中去。
发明内容
为解决现有技术中FPGA芯片上的存储资源的增长速度不及神经网络规模增长迅速,一般的目标检测网络很难按照传统的设计思路移植到FPGA芯片上的技术问题,本发明针对YOLO-tiny网络和KC705的开发平台提出了一种基于FPGA的YOLO网络前向推理加速器,具体技术方案如下:
一种基于FPGA的YOLO网络前向推理加速器设计方法,所述加速器包括FPGA芯片和DRAM,所述FPGA芯片中的存储器BRAM作为数据缓冲器,所述DRAM作为主要存储设备,在DRAM中使用乒乓结构;其特征在于,所述加速器设计方法包括以下步骤:
(1)对原网络数据进行8bit定点数量化,得到对检测精度影响最小的小数点位置,形成量化方案,该量化过程是逐层进行的;
(2)FPGA芯片对YOLO的九层卷积网络作并行计算;
(3)位置映射。
具体地,所述步骤(1)中某一层的量化过程为:
a)量化原网络的权值数据:先建立8bit定点数的某一种小数点位置对应的256种十进制的值,其中包含正零和负零,再使用就近原则对原始数据进行量化,量化后的数值仍采用32bit的浮点型进行表示以便于计算,得到此种量化方案的检测精度,然后遍历8种小数点位置后得到对检测精度影响最小的小数点位置,最后形成该层的权重量化方案;
b)对输入特征图先进行归一化0-1的分布,然后使用步骤a)中所述的方法进行该层输入特征图的量化;
c)把所述步骤b)中量化后的特征图作为输入,仅对该层卷积进行所有图片的前向传播,参数使用量化后的32bit值进行载入,得到的输出量作为下一层网络的输入量。
d)按照步骤a)-c)所述方法交替的量化每层的权重和输入特征图,最终得到所有层的量化方案。
具体地,所述步骤(2)中每一层卷积网络的计算过程为:
a)从DRAM中读取本轮计算所需要的权重数据,放置到BRAM中;
b)读取本层待卷积的特征图数据(FM),完成所有输入数据准备;
c)进行卷积计算,在一轮卷积计算完成后,把BRAM中的数据再上传到DRAM中去,清空临时结果数据,然后开始下一轮的计算。
具体地,所述步骤(2)中进行第一层卷积时,首先从DRAM中加载输入特征图三通道中的一个进行卷积计算,将得到的卷积结果累加到切换输入通道后的卷积计算中,每次加载的输入特征图需要跟所有的卷积核计算完一遍后才会切换下一个输入特征区域。
具体地,所述步骤(2)中还包括当计算到某一输出通道的最终结果时,需要进行池化操作和激活操作,具体过程如下,当对某一行逐个计算卷积结果时,把这一行结果两两划分,并把两个值中最大值记录下来,使用FPGA芯片上的逻辑资源进行保存,当计算到下一行的时候,同样对输出结果两两划分,取其中的较大值,并且与上一行中选出来的最大值进行比较,把这两个最大值中更大的那个值作为某一2*2区域中的最大值,然后与RELU激活函数的门限值进行比较,把结果保存到BRAM中,这样当对输出的某一通道进行最终结果的卷积后,同时也完成了该通道的池化操作和激活操作。
所述步骤(2)a)和b)中的BRAM设置为512数据宽度,深度设计为512个点,一块BRAM消耗7.5片RAMB36E1,输出最小设置为16bit;c)中的BRAM设置成真双端口模式,端口宽度为16bit;整个卷积网络中数据存储的开销为特征图和权重两部分,共计425片RAM36E1。
具体地,所述步骤(2)中权重数据的存储方案为:第1-3层卷积网络共用一块BRAM,消耗7.5个RAM36E1;第4-8层的卷积网络每层各使用一块BRAM,每个BRAM消耗14.5个RAM36E1;第9层使用一块BRAM,消耗7.5个RAM36E1。
具体地,所述步骤(2)中特征图数据的存储方案为:对于a)和b)中第1层卷积网络使用一块BRAM,第2-6层的卷积网络每层各使用二块BRAM,第7层使用八块BRAM,第8层使用十块BRAM,第9层使用九块BRAM;对于c)中每层使用一块BRAM;每块BRAM消耗7.5个RAM36E1。
具体地,所述卷积网络的输出包含13*13*5个候选框的位置信息,每个候选框的位置信息由x、y、w、h值组成,分别表示候选框中心点的横坐标相对值,纵坐标相对值,宽度相对值,高度相对值;横、纵坐标相对值通过sigmoid函数映射到绝对坐标中,宽、高坐标相对值通过e指数映射到绝对值中。
所述卷积网络的输出候选框带有置信度信息,用来进行NMS操作,具体的计算步骤如下:
a)按顺序提取各个候选框的中心点坐标,并给每个候选框设置标志位,用于表示整个候选框是否保留。
b)选第一个候选框为比较对象计算域后面被比较对象候选框的中心点距离,当超过一个阈值时,被比较的那个候选框标志位为有效状态,表示这个候选框是需要保留的,否则把该框的标志位置为无效,不再参与后续距离的比较,当被比较对象遍历到队列的最后一个时,更换比较对象,即刚才的比较对象的下一个标志位有效的候选框。
c)把所有标志位有效的候选框从结果存储器中提取出来,并生成一个标识框打印到原图中作为最终的检测结果。
本发明具有以下有益效果:
一、本发明把FPGA芯片上的存储器作为卷积计算的数据缓冲区,FPGA芯片外的存储器作为主要的存储设备,各个卷积层通过片外的存储器耦合在一起,这种设计方法不止适用于YOLO网络,同样适用于别的神经网络。
二、本发明所进行的各层卷积计算的资源分配方法能最大限度的发挥整个网络并行计算的能力,相较与串行的卷积计算结构,本方案的设计使用的片上资源更少,前向推理的速度更快。
三、在FPGA芯片上,各层之间没有直接的数据交互,各层的连接属于松耦合关系,这样可以保证***的稳定性。
四、本发明使用了简化版本来加速整个网络的计算,不使用重合面积的方法进行计算而是用两个框的中心点距离来简化,可以极大的提高NMS步骤的速度。
附图说明
图1为本发明每一层的计算结构与存储结构示意图
图2为本发明单层网络计算流程图
具体实施例
实施例1
一种基于FPGA的YOLO网络前向推理加速器设计方法,所述加速器包括FPGA芯片和DRAM,所述FPGA芯片中的存储器BRAM作为数据缓冲器,所述DRAM作为主要存储设备,在DRAM中使用乒乓结构;其特征在于,所述加速器设计方法包括以下步骤:
(1)对原网络数据进行8bit定点数量化,得到对检测精度影响最小的小数点位置,形成量化方案,该量化过程是逐层进行的;
(2)FPGA芯片对YOLO的九层卷积网络作并行计算;
(3)位置映射。
具体地,所述步骤(1)中某一层的量化过程为:
a)量化原网络的权值数据:按照8bit定点数的某一种小数位置进行量化时,先建立该位置下的十进制值对照表,即256种十进制数,其中包含正零和负零,然后使用就近原则对原始数据进行量化,量化后值虽然发生改变,但是数据仍是32bit的浮点型,便于后面在GPU中进行计算,得到此种量化方案的检测精度,然后遍历8种小数点位置后得到对检测精度影响最小的小数点位置,最后形成该层的权重量化方案;
b)对所有集中测试输入特征图先进行归一化0-1的分布,然后使用步骤a)中所述的方法进行该层输入特征图的量化;
c)把所述步骤b)中量化后的特征图作为输入,仅对该层卷积进行所有图片的前向传播,参数使用量化后的32bit值进行载入,得到的输出量作为下一层网络的输入量。
d)按照步骤a)-c)所述方法交替的量化每层的权重和输入特征图,最终得到所有层的量化方案。
具体地,所述步骤(2)中每一层卷积网络的计算过程为:先从DRAM中读取本轮计算所需要的权重数据,放置到权重缓冲器BRAM中;然后读取本层待卷积的特征图数据(FM),完成所有输入数据准备后开始进行卷积计算,在一轮卷积计算完成后,把结果缓冲器BRAM中的数据再上传到DRAM中去,清空临时结果数据,然后开始下一轮的计算。由于下一层的计算依赖上一层的计算结果,为了让每层能同时进行计算而不是相互等待,在DRAM中使用乒乓结构,以发挥FPGA内的并行计算能力。在FPGA芯片上,各层之间没有直接的数据交互,各层的连接属于松耦合关系,这样可以保证***的稳定性。
具体地,所述步骤(2)中进行第一层卷积时,首先从DRAM中加载输入特征图三通道中的一个进行卷积计算,由于FPGA芯片上BRAM资源受限,而该层图片的尺寸比较大,因此只先加载图片中连续的几行,根据卷积计算的原理,此时这几行的卷积结果只是最终输出的某一通道中对应区域(相同位置的那几行)的临时结果,当切换输入的通道后,在计算到相同位置处的卷积时,需要与之前的临时结果进行累加,所以在该层模块执行卷积计算之前,需要先从DDR中取回之前该输出通道所对应的相同位置处的临时卷积计算结果,这样在每次卷积模块计算出结果后,可以与结果存储器BRAM中的值相加再存到结果存储器BRAM中。每次加载的输入特征图需要跟所有的卷积核计算完一遍后才会切换下一个输入特征区域。
具体地,所述步骤(2)中还包括当计算到某一输出通道的最终结果时,需要进行池化操作和激活操作,具体过程如下,当对某一行逐个计算卷积结果时,把这一行结果两两划分,并把两个值中最大值记录下来,使用FPGA芯片上的逻辑资源进行保存,当计算到下一行的时候,同样对输出结果两两划分,取其中的较大值,并且与上一行中选出来的最大值进行比较,把这两个最大值中更大的那个值作为某一2*2区域中的最大值,然后与RELU激活函数的门限值进行比较,把结果保存到BRAM中,这样当对输出的某一通道进行最终结果的卷积后,同时也完成了该通道的池化操作和激活操作。
所述步骤(2)作为数据缓冲器的BRAM需要接收DRAM中读取出来的数据,为了发挥DRAM的最大带宽,BRAM的写入端设置为512数据宽度,深度设计为512个点,一块BRAM消耗7.5片RAMB36E1,输出最小设置为16bit,作为卷积操作的输入宽度;作为结果缓冲器的BRAM不仅要从DRAM中读取数据同时还要写入DRAM中去,因此设置成真双端口模式,端口宽度为16bit;整个卷积网络中数据存储的开销为特征图和权重两部分,共计425片RAM36E1。
具体地,所述步骤(2)中权重数据的存储方案为:第1-3层卷积网络共用一块BRAM,消耗7.5个RAM36E1;第4-8层的卷积网络每层各使用一块BRAM,每个BRAM消耗14.5个RAM36E1;第9层使用一块BRAM,消耗7.5个RAM36E1。
具体地,所述步骤(2)中特征图数据的存储方案为:对于输入数据缓冲器,第1层卷积网络使用一块BRAM,第2-6层的卷积网络每层各使用二块BRAM,第7层使用八块BRAM,第8层使用十块BRAM,第9层使用九块BRAM;对于输出数据缓冲器,每层使用一块BRAM;每块BRAM消耗7.5个RAM36E1,总的特征图数据缓冲器需要337.5个RAM36E1。由于BRAM资源受限,只在输出缓冲器处做乒乓操作,每一层在输入缓冲器中的数据没准备好之前不进行卷积计算。根据每层的乘加计算量来等比的分配每层并行计算的通道数,和所对应的每层并行通道数见表1,对于输入的并行通道来说,每个通道都需要一块单独的BRAM做存储,但是结果缓存器只需要一片等大的BRAM做存储即可。
表1并行计算每层计算量比例及每层并行通道数的分配
层 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 九 |
比例 | 1 | 2.5 | 2.5 | 2.5 | 2.5 | 2.5 | 10 | 20 | 1 |
PE数量 | 1 | 2 | 2 | 2 | 2 | 2 | 8 | 16 | 1 |
具体地,卷积部分后面是位置映射的region层操作,所述卷积网络的输出包含13*13*5个候选框的位置信息,每个候选框的位置信息由x、y、w、h值组成,分别表示候选框中心点的横坐标相对值,纵坐标相对值,宽度相对值,高度相对值;这四个值需要经过一些处理才能映射到实际的图片位置中去,横、纵坐标相对值通过sigmoid函数映射到绝对坐标中,由于输出结果是8bit定点表示,因此对应的输出结果可以量化到一个查找表中,加速这一映射过程;宽、高坐标相对值通过e指数映射到绝对值中,同样适用查找表的形式得到结果。
所述卷积网络的输出候选框带有置信度信息,用来进行NMS操作,具体的计算步骤如下:先按顺序提取各个候选框的中心点坐标,并给每个候选框设置标志位,用于表示整个候选框是否保留;由于采用中心点距离为指标进行判断,根据先验信息可知,在网络输出的候选框中,顺序较近的框是比较的对象,顺序较远的可以忽略比较,然后选第一个候选框为比较对象计算域后面被比较对象候选框的中心点距离,当超过一个阈值时,被比较的那个候选框标志位为有效状态,表示这个候选框是需要保留的,否则把该框的标志位置为无效,不再参与后续距离的比较,当被比较对象遍历到队列的最后一个时,更换比较对象,即刚才的比较对象的下一个标志位有效的候选框;最后把所有标志位有效的候选框从结果存储器中提取出来,并生成一个标识框打印到原图中作为最终的检测结果。
上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (8)
1.一种基于FPGA的YOLO网络前向推理加速器设计方法,所述加速器包括FPGA芯片和DRAM,所述FPGA芯片中的存储器BRAM作为数据缓冲器,所述DRAM作为主要存储设备,在DRAM中使用乒乓结构;其特征在于,所述加速器设计方法包括以下步骤:
(1)对原网络数据进行8bit定点数量化,得到对检测精度影响最小的小数点位置,形成量化方案,该量化过程是逐层进行的;
(2)FPGA芯片对YOLO的九层卷积网络作并行计算;所述步骤(2)中每一层卷积网络的计算过程为:
a)从DRAM中读取本轮计算所需要的权重数据,放置到BRAM中;
b)读取本层待卷积的特征图数据(FM),完成所有输入数据准备;
c)进行卷积计算,在一轮卷积计算完成后,把BRAM中的数据再上传到DRAM中去,清空临时结果数据,然后开始下一轮的计算;
所述步骤(2)中还包括当计算到某一输出通道的最终结果时,需要进行池化操作和激活操作,具体过程如下,当对某一行逐个计算卷积结果时,把这一行结果两两划分,并把两个值中最大值记录下来,使用FPGA芯片上的逻辑资源进行保存,当计算到下一行的时候,同样对输出结果两两划分,取其中的较大值,并且与上一行中选出来的最大值进行比较,把这两个最大值中更大的那个值作为某一2*2区域中的最大值,然后与RELU激活函数的门限值进行比较,把结果保存到BRAM中,这样当对输出的某一通道进行最终结果的卷积后,同时也完成了该通道的池化操作和激活操作;
(3)位置映射。
2.根据权利要求1所述的一种基于FPGA的YOLO网络前向推理加速器设计方法,其特征在于,所述步骤(1)中某一层的量化过程为:
a)量化原网络的权值数据:先建立8bit定点数的某一种小数点位置对应的256种十进制的值,其中包含正零和负零,再使用就近原则对原始数据进行量化,量化后的数值仍采用32bit的浮点型进行表示以便于计算,得到此种量化方案的检测精度,然后遍历8种小数点位置后得到对检测精度影响最小的小数点位置,最后形成该层的权重量化方案;
b)对输入特征图先进行归一化0-1的分布,然后使用步骤a)中所述的方法进行该层输入特征图的量化;
c)把所述步骤b)中量化后的特征图作为输入,仅对该层卷积进行所有图片的前向传播,参数使用量化后的32bit值进行载入,得到的输出量作为下一层网络的输入量;
d)按照步骤a)-c)所述方法交替的量化每层的权重和输入特征图,最终得到所有层的量化方案。
3.根据权利要求1所述的一种基于FPGA的YOLO网络前向推理加速器设计方法,其特征在于,所述步骤(2)中进行第一层卷积时,首先从DRAM中加载输入特征图三通道中的一个进行卷积计算,将得到的卷积结果累加到切换输入通道后的卷积计算中,每次加载的输入特征图需要跟所有的卷积核计算完一遍后才会切换下一个输入特征区域。
4.根据权利要求1所述的一种基于FPGA的YOLO网络前向推理加速器设计方法,其特征在于,所述步骤(2)a)和b)中的BRAM设置为512数据宽度,深度设计为512个点,一块BRAM消耗7.5片RAMB36E1,输出最小设置为16bit;c)中的BRAM设置成真双端口模式,端口宽度为16bit;整个卷积网络中数据存储的开销为特征图和权重两部分,共计425片RAM36E1。
5.根据权利要求1所述的一种基于FPGA的YOLO网络前向推理加速器设计方法,其特征在于,所述步骤(2)中权重数据的存储方案为:第1-3层卷积网络共用一块BRAM,消耗7.5个RAM36E1;第4-8层的卷积网络每层各使用一块BRAM,每个BRAM消耗14.5个RAM36E1;第9层使用一块BRAM,消耗7.5个RAM36E1。
6.根据权利要求1所述的一种基于FPGA的YOLO网络前向推理加速器设计方法,其特征在于,所述步骤(2)中特征图数据的存储方案为:对于a)和b)中第1层卷积网络使用一块BRAM,第2-6层的卷积网络每层各使用二块BRAM,第7层使用八块BRAM,第8层使用十块BRAM,第9层使用一块BRAM;对于c)中每层使用一块BRAM;每块BRAM消耗7.5个RAM36E1。
7.根据权利要求1所述的一种基于FPGA的YOLO网络前向推理加速器设计方法,其特征在于,所述卷积网络的输出包含13*13*5个候选框的位置信息,每个候选框的位置信息由x、y、w、h值组成,分别表示候选框中心点的横坐标相对值,纵坐标相对值,宽度相对值,高度相对值;横、纵坐标相对值通过sigmoid函数映射到绝对坐标中,宽、高坐标相对值通过e指数映射到绝对值中。
8.根据权利要求1所述的一种基于FPGA的YOLO网络前向推理加速器设计方法,其特征在于,所述卷积网络的输出候选框带有置信度信息,用来进行NMS操作,具体的计算步骤如下:
a)按顺序提取各个候选框的中心点坐标,并给每个候选框设置标志位,用于表示整个候选框是否保留;
b)选第一个候选框为比较对象计算域后面被比较对象候选框的中心点距离,当超过一个阈值时,被比较的那个候选框标志位为有效状态,表示这个候选框是需要保留的,否则把该框的标志位置为无效,不再参与后续距离的比较,当被比较对象遍历到队列的最后一个时,更换比较对象,即刚才的比较对象的下一个标志位有效的候选框;
c)把所有标志位有效的候选框从结果存储器中提取出来,并生成一个标识框打印到原图中作为最终的检测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810970836.2A CN109214504B (zh) | 2018-08-24 | 2018-08-24 | 一种基于fpga的yolo网络前向推理加速器设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810970836.2A CN109214504B (zh) | 2018-08-24 | 2018-08-24 | 一种基于fpga的yolo网络前向推理加速器设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109214504A CN109214504A (zh) | 2019-01-15 |
CN109214504B true CN109214504B (zh) | 2020-09-04 |
Family
ID=64989693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810970836.2A Active CN109214504B (zh) | 2018-08-24 | 2018-08-24 | 一种基于fpga的yolo网络前向推理加速器设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109214504B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175670B (zh) * | 2019-04-09 | 2020-12-08 | 华中科技大学 | 一种基于FPGA实现YOLOv2检测网络的方法及*** |
CN110033086B (zh) * | 2019-04-15 | 2022-03-22 | 广州异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
CN110222835A (zh) * | 2019-05-13 | 2019-09-10 | 西安交通大学 | 一种基于零值检测的卷积神经网络硬件***及运算方法 |
CN110263925B (zh) * | 2019-06-04 | 2022-03-15 | 电子科技大学 | 一种基于fpga的卷积神经网络前向预测的硬件加速实现装置 |
CN112052935B (zh) * | 2019-06-06 | 2024-06-14 | 奇景光电股份有限公司 | 卷积神经网络*** |
CN112085190B (zh) * | 2019-06-12 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 一种神经网络的量化参数确定方法及相关产品 |
CN110555516B (zh) * | 2019-08-27 | 2023-10-27 | 合肥辉羲智能科技有限公司 | 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法 |
CN112470138A (zh) * | 2019-11-29 | 2021-03-09 | 深圳市大疆创新科技有限公司 | 计算装置、方法、处理器和可移动设备 |
CN113297128B (zh) * | 2020-02-24 | 2023-10-31 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111752713B (zh) * | 2020-06-28 | 2022-08-05 | 浪潮电子信息产业股份有限公司 | 模型并行训练任务负载均衡方法、装置、设备及存储介质 |
CN111814675B (zh) * | 2020-07-08 | 2023-09-29 | 上海雪湖科技有限公司 | 基于fpga支持动态分辨率的卷积神经网络特征图组装*** |
CN113065303B (zh) * | 2021-03-06 | 2024-02-02 | 杭州电子科技大学 | 一种基于fpga的dscnn加速器分层验证方法 |
CN115049907B (zh) * | 2022-08-17 | 2022-10-28 | 四川迪晟新达类脑智能技术有限公司 | 一种基于fpga的yolov4目标检测网络实现方法 |
CN116737382B (zh) * | 2023-06-20 | 2024-01-02 | 中国人民解放军国防科技大学 | 一种基于面积折叠的神经网络推理加速方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454546B1 (en) * | 2006-01-27 | 2008-11-18 | Xilinx, Inc. | Architecture for dynamically reprogrammable arbitration using memory |
CN106529517A (zh) * | 2016-12-30 | 2017-03-22 | 北京旷视科技有限公司 | 图像处理方法和图像处理设备 |
CN106650592A (zh) * | 2016-10-05 | 2017-05-10 | 北京深鉴智能科技有限公司 | 目标追踪*** |
CN107066239A (zh) * | 2017-03-01 | 2017-08-18 | 智擎信息***(上海)有限公司 | 一种实现卷积神经网络前向计算的硬件结构 |
CN107451659A (zh) * | 2017-07-27 | 2017-12-08 | 清华大学 | 用于位宽分区的神经网络加速器及其实现方法 |
CN108108809A (zh) * | 2018-03-05 | 2018-06-01 | 山东领能电子科技有限公司 | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 |
CN108182471A (zh) * | 2018-01-24 | 2018-06-19 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
EP3352113A1 (en) * | 2017-01-18 | 2018-07-25 | Hitachi, Ltd. | Calculation system and calculation method of neural network |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10540588B2 (en) * | 2015-06-29 | 2020-01-21 | Microsoft Technology Licensing, Llc | Deep neural network processing on hardware accelerators with stacked memory |
-
2018
- 2018-08-24 CN CN201810970836.2A patent/CN109214504B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454546B1 (en) * | 2006-01-27 | 2008-11-18 | Xilinx, Inc. | Architecture for dynamically reprogrammable arbitration using memory |
CN106650592A (zh) * | 2016-10-05 | 2017-05-10 | 北京深鉴智能科技有限公司 | 目标追踪*** |
CN106529517A (zh) * | 2016-12-30 | 2017-03-22 | 北京旷视科技有限公司 | 图像处理方法和图像处理设备 |
EP3352113A1 (en) * | 2017-01-18 | 2018-07-25 | Hitachi, Ltd. | Calculation system and calculation method of neural network |
CN107066239A (zh) * | 2017-03-01 | 2017-08-18 | 智擎信息***(上海)有限公司 | 一种实现卷积神经网络前向计算的硬件结构 |
CN107451659A (zh) * | 2017-07-27 | 2017-12-08 | 清华大学 | 用于位宽分区的神经网络加速器及其实现方法 |
CN108182471A (zh) * | 2018-01-24 | 2018-06-19 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
CN108108809A (zh) * | 2018-03-05 | 2018-06-01 | 山东领能电子科技有限公司 | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 |
Non-Patent Citations (3)
Title |
---|
Hardware Implementation and Optimization of Tiny-YOLO Network;Jing Ma et al;《International Forum on Digital TV and Wireless Multimedia Communications》;20180203;第1、2、3.1、6.2节,图1、2、6,表3 * |
Improving the speed of neural networks on CPUs;Vincent Vanhoucke et al;《Deep learning and unsupervised feature learning workshop》;20111231;1-8 * |
基于FPGA的卷积神经网络并行结构研究;陆志坚;《中国博士学位论文全文数据库信息科技辑》;20140415;第2014年卷(第4期);I140-12 * |
Also Published As
Publication number | Publication date |
---|---|
CN109214504A (zh) | 2019-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109214504B (zh) | 一种基于fpga的yolo网络前向推理加速器设计方法 | |
CN110097174B (zh) | 基于fpga和行输出优先的卷积神经网络实现方法、***及装置 | |
US20230325348A1 (en) | Performing concurrent operations in a processing element | |
US11907760B2 (en) | Systems and methods of memory allocation for neural networks | |
US11580367B2 (en) | Method and system for processing neural network | |
US11775430B1 (en) | Memory access for multiple circuit components | |
CN108665063B (zh) | 用于bnn硬件加速器的双向并行处理卷积加速*** | |
CN107203807B (zh) | 神经网络加速器的片上缓存带宽均衡方法、***及其装置 | |
CN110070178A (zh) | 一种卷积神经网络计算装置及方法 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的***和方法 | |
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN111199273A (zh) | 卷积计算方法、装置、设备及存储介质 | |
CN110175670B (zh) | 一种基于FPGA实现YOLOv2检测网络的方法及*** | |
CN105739951B (zh) | 一种基于gpu的l1最小化问题快速求解方法 | |
CN113361695B (zh) | 卷积神经网络加速器 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
US20220351490A1 (en) | Convolution calculation method, convolution calculation apparatus, and terminal device | |
WO2021147276A1 (zh) | 数据处理方法、装置及芯片、电子设备、存储介质 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
CN112966807B (zh) | 基于存储资源受限fpga的卷积神经网络实现方法 | |
CN115394336A (zh) | 一种存算fpga架构 | |
JP2020021208A (ja) | ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム |
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 |