CN113051216A - 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 - Google Patents
一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 Download PDFInfo
- Publication number
- CN113051216A CN113051216A CN202110434593.2A CN202110434593A CN113051216A CN 113051216 A CN113051216 A CN 113051216A CN 202110434593 A CN202110434593 A CN 202110434593A CN 113051216 A CN113051216 A CN 113051216A
- Authority
- CN
- China
- Prior art keywords
- ssd
- data
- representing
- target
- neural 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
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
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- 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
Abstract
本发明提供了一种基于FPGA加速的MobileNet‑SSD目标检测装置及方法,方法包括如下步骤:Step1:获取待检测目标初始图像,存储目标初始图像数据和卷积神经网络权值文件;Step2:在Mobilenet‑SSD卷积神经网络中加入检测层,在不同网络层间共享加速器,加速器上设置片上缓冲区;Step3:通过并行分块参数优化法运行Mobilenet‑SSD卷积神经网络,输出目标图像的特征图通道和卷积核通道的分块系数;Step4:通过流水线算法,完成Mobilenet‑SSD卷积神经网络的目标特征提取、边界框回归及物体类别预测;Step5:对卷积神经网络得到的目标特征提取、边界框回归及物体类别预测信息进行后处理;Stsp6:在待检测目标图像上测试目标检测结果。本发明采用改进的Mobilenet‑SSD作为目标检测算法,实现高精度目标检测。
Description
技术领域
本发明涉及目标检测识别技术领域,具体涉及一种基于FPGA加速的MobileNet-SSD目标检测装置及方法。
背景技术
目标检测在人工智能、医疗研究和国防安全等民用和军用领域等都应用广泛,基于深度学习的目标检测算法是利用卷积神经网络CNN(Convolutional Neural Network)提取特征并完成图像分类和定位,精度和速度相较于传统算法都大幅度提升,但卷积神经网络往往存在庞大的参数量和计算量,并且网络层参数和结构多变,这导致目标检测算法很难应用在资源有限、要求高处理速度和低功耗的嵌入式场合。相较于GPU和ASIC嵌入式平台,FPGA具有低成本、可重构、能效比高等优势,故在FPGA硬件平台上完成基于深度学习的目标检测算法硬件加速实现。
将目前最先进的基于CNN的目标检测算法部署到FPGA中以达到硬件加速的目的主要存在以下两个难点:(1)以卷积神经网络为基础的目标检测算法通常网络模型较复杂、参数量和计算量较大,而FPGA存储资源、计算资源和系统带宽都极其有限,这造成了系统在实时性方面的问题。(2)大多数的基于CNN的目标检测算法模型具有不同的网络规模和结构,并且由于卷积神经网络的层次化结构,不同的网络层参数也可能是不同的(例如不同的卷积层具有不同大小的卷积核和步长等)。故需要更合适的嵌入式硬件平台和更准确且轻量化的目标检测算法应用改善目前的难点。
发明内容
本发明的目的是针对现有技术存在的上述问题,克服现有技术的不足之处,采用改进的Mobilenet-SSD作为目标检测算法,通过并行分块参数优化法和流水线算法运行Mobilenet-SSD卷积神经网络,对目标类别进行预测,并回归检测目标位置,从而实现高精度目标检测。
为解决上述技术问题,本发明采用的技术方案为:
一种基于FPGA加速的MobileNet-SSD目标检测方法,包括如下步骤:
Step1:获取待检测目标初始图像,将目标初始图像数据和卷积神经网络权值文件存储于外部储存器DDR中;
Step2:在Mobilenet-SSD卷积神经网络中加入检测层,在不同网络层间共享加速器,CNN加速器上设置片上缓冲区;
Step3:通过并行分块参数优化法运行Mobilenet-SSD卷积神经网络,输出目标图像的特征图通道和卷积核通道的分块系数;
Step4:通过流水线算法,完成Mobilenet-SSD卷积神经网络的目标特征提取、边界框回归及物体类别预测;
Step5:对卷积神经网络得到的目标特征提取、边界框回归及物体类别预测信息进行后处理;
Stsp6:在待检测目标图像上测试目标检测结果。
进一步的,step2中片上缓冲区包括:①输入缓存区,用来储存输入特征图数据;②权值缓存区,用来存储权重;③输出缓存区,用来储存中间结果和最终输出特征图数据。
优选的,Step2中Mobilenet-SSD卷积神经网络是以Mobilenet作为主干网络,仿照VGG-SSD的结构,在Mobilenet的conv13后面添加8个卷积层,然后抽取6层用作检测,Mobilenet包含深度上可分离的卷积运算,减少卷积核的冗余表达,减少网络的参数量和计算量。
进一步的,Step3中并行分块参数优化法包括如下步骤:
Step3.1:分别计算输入特征值的宽和高的分块系数Twi和Thi:
Twi=S*Tw+K-S (1)
Thi=S*Th+K-S (2)
其中,Twi表示输入特征值的宽的分块系数,Thi表示输入特征值的高的分块系数,Tw表示输出特征图的宽的分块系数,Th表示输出特征图的高的分块系数,K表示卷积核的大小,S表示卷积步长,
Step3.2:基于分块系数,计算通信比CR:
其中,CR表示通信比,W表示输出特征图的宽,H表示输出特征图的高,M表示输出特征图的通道数,N表示输出特征图的卷积核通道数,K表示卷积核的大小,αin表示输入层所需计算存储的所有分块数,βin表示输入层所需计算存储的分块数大小,αw表示卷积层所需计算存储的所有分块数,βw表示卷积层所需计算存储的分块数的大小,αout表示输出层所需计算存储的所有分块数,βout表示输出层所需计算存储的分块数的大小,
上述公式中,αin、βin、αw、βw、αout和βout分别基于下述公式求解:
βin=TniTwiThi (4)
βw=TmTnK2 (5)
βout=TmTwTh (6)
其中,Tni表示输入特征图的通道对应的分块系数,Tw表示输出特征图的宽的分块系数,表示,Th表示输出特征图的高的分块系数,Tm表示输出特征图的通道数的分块系数,Tn表示输出特征图的卷积核通道数的分块系数,
Step3.3:按照资源瓶颈近似公式,计算资源瓶颈R:
其中,R表示资源瓶颈,与总操作数和系统时钟频率正向相关,与执行周期数反向相关,
Step3.4:基于约束条件,在Mobilenet-SSD卷积神经网络下求解全局最优的Tm和Tn:
其中,C0为片上缓存量,AP表示可取的计算能力,TW表示带宽。
优选的,对于标准卷积,N=Ni,Tni=Tn,其中,Ni表示输入特征图的通道数;而对于DW卷积,N=1,M=Ni,Tni=Tm。
进一步的,Step4中流水线包括如下步骤:
Step4.1:将Mobilenet-SSD卷积神经网络中不同数据流的计算步骤在一个时钟周期内完成;
Step4.2:在一定阈值下回归出类别概率较高的预测框的真实位置并进行降序排列;
Step4.3:不同数据缓冲模块在不同时钟周期分别读写数据;
Step4.4:每达到时钟周期的一半时,每个数据缓冲模块一边继续读数据,一边将前半个时钟周期读取的数据开始向数据处理模块写入。
优选的,Mobilenet-SSD卷积神经网络的标准卷积和深度分离卷积层共有47层,检测层中决定算法可检测类别的的卷积核个数为21,表明算法除去背景,用于检测20类物体。
进一步的,Step5中后处理包括如下步骤:
Step5.1:确定每个预测框的类别和类别概率,过滤掉属于背景的预测框;
Step5.2:通过增加数据缓冲模块和数据处理模块,在不同时钟周期切换各个缓冲模块的读写操作;
Step5.3:对保留下来的预测框进行非极大值抑制算法处理,得到最终的检测结果。
进一步的,本发明还提供一种基于FPGA加速的MobileNet-SSD目标检测方法的装置,包括:外部储存器DDR1,外部储存器DDR1与控制器DDR2互联、控制器DDR2设置在处理单元PS中,处理单元PS与加速单元PL互联,加速单元PL与CPU相连,加速单元PL内设有加速器accelerator和片上缓存、连接单元AXI Interconnect和直接存储访问单元AXI DMA,加速器accelerator、连接单元AXI Interconnect和直接存储访问单元AXI DMA相互连通。
初始图像数据储存在外部存储器DDR1中,通过第一总线AXI4实现处理单元PS和加速单元PL部分的互联,加速单元PL通过第二总线AXI4_Lite接收来自CPU的配置信号,在处理单元PS中的控制器DDR2的作用下,加速器accelerator所需要的当前层的权重和输入数据从外部储存器DDR1中读出,并通过内存映射接口AXI4_memory_map经直接存储访问单元AXI DMA作用后转换为高速数据流接口AXI4_streaming数据流格式进入片上缓存,经加速单元PL处理后,输出再通过第一总线将加速单元PL的信息传回外部储存器DDR1,重复上述操作直至完成整个网络模型的计算,之后在对储存在外部储存器DDR1中的Mobilenet-SSD卷积神经网络若干检测层得到的预测数据进行软件后处理,最终得到目标检测结果。
本发明的有益效果:
本发明的目的是针对现有技术存在的上述问题,克服现有技术的不足之处,采用改进的Mobilenet-SSD作为目标检测算法,通过并行分块参数优化法和流水线算法运行Mobilenet-SSD卷积神经网络,对目标类别进行预测,并回归检测目标位置,从而实现高精度目标检测。
(1)本发明同时考虑硬件平台计算资源、存储资源和带宽三个限制因素,采用并行分块参数优化方法确定输出特征图通道和卷积核通道的分块系数,以及硬件优化技术完成硬件加速器的设计与实现,使得MobileNet-SSD目标检测算法在硬件平台上能达到高处理速度、低功耗的设计要求。同时,基于总体架构和软硬件任务的划分,完成完整的目标检测算法功能实现。
(2)采用流水线操作,而不是顺序完成,使得图像数据和权重输入,卷积计算和结果输出三个进程能同时进行。Mobilenet-SSD网络的性能瓶颈位于带宽受限区域,所以为了最大利用外部储存带宽,三者的接口为流数据接口且都采用乒乓模式,设置了双缓冲区,即一个缓存区用于缓存数据,另一个缓存区的数据用于处理,下一阶段两个缓存区的功能调换。
(3)本发明在数据存储上的优化,默认上数据是按照顺序存储在BRAM存储器中的,对于双口BRAM存储器在一个时钟周期内在最多只能进行两个数据的操作,如果按照这种存储模式,缓存区的数据供给显然不能满足之前所设计的计算并行的要求。需要进行数据的分割存储,包括输入缓存数组的分割和权重缓存数组的分割,从而在一个时钟周期取出所需计算的数据。。
(4)本发明在计算顺序上进行优化,卷积神经网络的计算主要是乘累加,默认来说是按照取数据、点乘、累加、写回数据顺序操作,计算速率太慢。使用流水线思想将四个来自不同数据流的计算步骤在一个时钟周期内完成,比如同时完成数据1的读取,数据2的点乘,数据3的累加,数据4的写回。还有总体输入输出数据上的传输优化,使用乒乓操作实现数据的串并转换,通过增加数据缓冲模块和数据处理模块,在不同时钟周期切换各个缓冲模块的读写操作,比如数据传输速率100Mbit/s,缓冲模块传输速率50Mbit/s,首先不同数据缓冲模块在不同时钟周期分别读写数据,其次每达到时钟周期的一半时每个数据缓冲模块又可以一边继续读数据,一边将前半个时钟周期读取的数据开始向数据处理模块写入,每隔一个时钟周期可以多读写半个时钟周期,实现低时钟频率的低速模块处理高速数据,降低了系统功耗。
(5)本发明从目标检测处理速度的要求出发,以检测吞吐量(FPS)为表征速度的核心指标,协同考虑算法准确率等设计要求,评估主流的基于卷积神经网络的目标检测算法是否适合在已定的硬件平台完成加速实现,选择MobileNet-SSD目标检测算法移植到该平台上,实现效果进行板级验证,验证其功能的正确性,并进行性能测试和分析。
附图说明
图1是步长为1和2的分块卷积图;
图2是计算引擎示意图;
图3是系统总体架构图;
图4是加速器结构图;
图5是点乘并行计算示意图;
图6是MACC流水线图;
图7是多进程流水线图。
具体实施方式
下面结合附图以及具体实施方法对本发明一种基于FPGA加速的MobileNet-SSD目标检测方法作进一步详细说明。
一种基于FPGA加速的MobileNet-SSD目标检测方法,包括如下步骤:
Step1:获取待检测目标初始图像,将目标初始图像数据和卷积神经网络CNN权值文件存储于外部储存器DDR中;
Step2:在Mobilenet-SSD卷积神经网络中加入检测层,在不同网络层间共享CNN加速器,CNN加速器上设置片上缓冲区,优化Mobilenet-SSD卷积神经网络;
Step3:通过并行分块参数优化法运行Mobilenet-SSD卷积神经网络,输出目标图像的特征图通道和卷积核通道的分块系数;
Step4:通过流水线算法,完成Mobilenet-SSD卷积神经网络的目标特征提取、边界框回归及物体类别预测;
Step5:对卷积神经网络得到的目标特征提取、边界框回归及物体类别预测信息进行后处理;
Stsp6:在待检测目标图像上测试目标检测结果。
进一步的,step2中片上缓冲区包括:①输入缓存区,用来储存输入特征图数据;②权值缓存区,用来存储权重;③输出缓存区,用来储存中间结果和最终输出特征图数据。
优选的,Step2中Mobilenet-SSD卷积神经网络是以Mobilenet作为主干网络,仿照VGG-SSD的结构,在Mobilenet的conv13后面添加8个卷积层,然后抽取6层用作检测,Mobilenet包含深度上可分离的卷积运算,减少卷积核的冗余表达,减少网络的参数量和计算量。
进一步的,Step3中并行分块参数优化法包括如下步骤:
Step3.1:分别计算输入特征值的宽和高的分块系数Twi和Thi:
Twi=S*Tw+K-S (1)
Thi=S*Th+K-S (2)
其中,Twi表示输入特征值的宽的分块系数,Thi表示输入特征值的高的分块系数,Tw表示输出特征图的宽的分块系数,Th表示输出特征图的高的分块系数,K表示卷积核的大小,S表示卷积步长,
Step3.2:基于分块系数,计算通信比CR:
其中,CR表示通信比,W表示输出特征图的宽,H表示输出特征图的高,M表示输出特征图的通道数,N表示输出特征图的卷积核通道数,K表示卷积核的大小,αin表示输入层所需计算存储的所有分块数,βin表示输入层所需计算存储的分块数大小,αw表示卷积层所需计算存储的所有分块数,βw表示卷积层所需计算存储的分块数的大小,αout表示输出层所需计算存储的所有分块数,βout表示输出层所需计算存储的分块数的大小,
上述公式中,αin、βin、αw、βw、αout和βout分别基于下述公式求解:
βin=TniTwiThi (4)
βw=TmTnK2 (5)
βout=TmTwTh (6)
其中,Tni表示输入特征图的通道对应的分块系数,Tw表示输出特征图的宽的分块系数,表示,Th表示输出特征图的高的分块系数,Tm表示输出特征图的通道数的分块系数,Tn表示输出特征图的卷积核通道数的分块系数,
Step3.3:按照资源瓶颈近似公式,计算资源瓶颈R:
其中,R表示资源瓶颈,与总操作数和系统时钟频率正向相关,与执行周期数反向相关,
Step3.4:基于约束条件,在Mobilenet-SSD卷积神经网络下求解全局最优的Tm和Tn:
其中,C0为片上缓存量,AP表示可取的计算能力,TW表示带宽。
优选的,对于标准卷积,N=Ni,Tni=Tn,其中,Ni表示输入特征图的通道数;而对于DW卷积,N=1,M=Ni,Tni=Tm。
进一步的,Step4中流水线包括如下步骤:
Step4.1:将Mobilenet-SSD卷积神经网络中不同数据流的计算步骤在一个时钟周期内完成;
Step4.2:在一定阈值下回归出类别概率较高的预测框的真实位置并进行降序排列;
Step4.3:不同数据缓冲模块在不同时钟周期分别读写数据;
Step4.4:每达到时钟周期的一半时,每个数据缓冲模块一边继续读数据,一边将前半个时钟周期读取的数据开始向数据处理模块写入。
优选的,Mobilenet-SSD卷积神经网络的标准卷积和深度分离卷积层共有47层,检测层中决定算法可检测类别的的卷积核个数为21,表明算法除去背景,用于检测20类物体。
进一步的,Step5中后处理包括如下步骤:
Step5.1:确定每个预测框的类别和类别概率,过滤掉属于背景的预测框;
Step5.2:通过增加数据缓冲模块和数据处理模块,在不同时钟周期切换各个缓冲模块的读写操作;
Step5.3:对保留下来的预测框进行非极大值抑制算法处理,得到最终的检测结果。
进一步的,本发明还提供一种基于FPGA加速的MobileNet-SSD目标检测方法的装置,包括:外部储存器DDR1,外部储存器DDR1与控制器DDR2互联、控制器DDR2设置在处理单元PS中,处理单元PS与加速单元PL互联,加速单元PL与CPU相连,加速单元PL内设有加速器accelerator和片上缓存、连接单元AXI Interconnect和直接存储访问单元AXI DMA,加速器accelerator、连接单元AXI Interconnect和直接存储访问单元AXI DMA相互连通。
初始图像数据储存在外部存储器DDR1中,通过第一总线AXI4实现处理单元PS和加速单元PL部分的互联,加速单元PL通过第二总线AXI4_Lite接收来自CPU的配置信号,在处理单元PS中的控制器DDR2的作用下,加速器accelerator所需要的当前层的权重和输入数据从外部储存器DDR1中读出,并通过内存映射接口AXI4_memory_map经直接存储访问单元AXI DMA作用后转换为高速数据流接口AXI4_streaming数据流格式进入片上缓存,经加速单元PL处理后,输出再通过第一总线将加速单元PL的信息传回外部储存器DDR1,重复上述操作直至完成整个网络模型的计算,之后在对储存在外部储存器DDR1中的Mobilenet-SSD卷积神经网络若干检测层得到的预测数据进行软件后处理,最终得到目标检测结果。
如图5所示,FPGA在计算6个通道的特征图数据与64个卷积核对应6个通道的权值数据的点乘运算时,可以在一个时钟周期内同时取出所有数据,从而在空间上达到了设计所要求的并行度。
进一步,对卷积层大量的MACC(乘累加)操作优化,正常为顺序依次为取出数据、点乘、累加、写回数据,顺序执行无时间并行性,不同MACC操作间无数据相关性,通过加以流水线技术,增大系统的数据吞吐量。在Vivado HLS中,通过添加预编译指令,即可实现延迟间隔为1的流水线操作,如图6所示。
进一步,对输入缓存区、权值缓存区和输出缓冲区的AXI_Streaming接口使用双缓冲模式优化设计,最大化系统片内外存储带宽,并使得不同卷积块的数据输入、卷积计算和结果输出三个进程在时间上能最大程度的并行。从外部载入特征图数据和权值数据、将当前块的数据进行卷积计算和最终结果通过AXI_Streaming接口送出,这三个功能函数的时间并行优化,如图7所示,缓存区流接口以及功能函数优化。
进一步,为CNN加速器设计8个AXI_Streaming接口,在数据通路上采用8个DMA,其中4个DMA为CNN加速器提供输入数据,需要将Memory Map数据格式转换为Stream数据格式,而另外4个DMA需要将加速器Stream数据格式的输出数据转换为Memory Map数据格式。采用Xilinx官方提供的AXI DMA IP软核(配置为Simple模式,缓存寄存器设置值23),将AXIStream格式与Memory Map格式之间的数据转换,实现自定义CNN IP核与DDR3间的数据通信,实现AXI4-Stream流接口和AXI4接口之间的数据传输。
进一步,在PS部分实现检测算法的后处理,对PL部分的卷积神经网络最终输出结果进行后处理,包括检测数据的连接合并、类别置信度值的softmax处理、预测框解码、非极大值抑制操作。
首先,使用深度学习框架Caffe产生Mobilenet-SSD算法的先验框位置数据,将图片的mdb格式文件、训练好权值的caffemodel文件和网络描述prototxt文件作为输入运行,抽取priorbox层的输出结果转换为二进制文件存储在DDR中,即为先验框位置数据。
然后,从PL部分得到6个位置预测的location层和6个类别预测的confidence层,即为Mobilenet-SSD的6个检测层,按照类别置信度值、预测框个数的维度顺序将confidence层的预测数据展开成一个一维数组,并将6个confidence层拼接在一起。
接下来,以预测框为基本单位对预测框的类别置信度值进行softmax操作,将各个类别的置信度值归一化和概率化,将最高的置信度值所属的类别和概率值作为该预测框的类别和类别概率值。之后对6个location层的预测数据按照位置预测值、预测框个数维度顺序展开拼接成一个一维数组,由这些位置预测值和先验框的位置信息,在置信度阈值为0.25的前提下得到每个预测框的真实位置信息,为方便后续的非极大值抑制处理,再经过处理直接得到的边界框四条边在输入图像中的位置,即边框左上角和右下角的坐标值。
最后,以排序好的第一个预测框为基准预测框,排序在该基准预测框后面的为对比预测框,基准预测框分别与所有对比预测框进行IOU(交并比)衡量,决定对比预测框是否保留和下一个基准预测框的位置。在非极大值抑制阈值为0.4的作用下,得到最终检测结果。
本发明还提供一种基于FPGA加速的MobileNet-SSD目标检测方法的装置,如图3所示,包括:外部储存器DDR1,外部储存器DDR1与控制器DDR2互联、控制器DDR2设置在处理单元PS中,处理单元PS与加速单元PL互联,加速单元PL与CPU相连,加速单元PL内设有加速器accelerator和片上缓存、连接单元AXI Interconnect和直接存储访问单元AXI DMA,加速器accelerator、连接单元AXI Interconnect和直接存储访问单元AXI DMA相互连通。
初始图像数据储存在外部存储器DDR1中,通过第一总线AXI4实现处理单元PS和加速单元PL部分的互联,加速单元PL通过第二总线AXI4_Lite接收来自CPU的配置信号(如当前层卷积核大小、步长、是进行标准卷积还是深度分离卷积等),在处理单元PS中的控制器DDR2的作用下,加速器accelerator所需要的当前层的权重和输入数据从外部储存器DDR1中读出,并通过内存映射接口AXI4_memory_map经直接存储访问单元AXI DMA作用后转换为高速数据流接口AXI4_streaming数据流格式进入片上缓存,经加速单元PL处理后,输出再通过第一总线将加速单元PL的信息传回外部储存器DDR1,重复上述操作直至完成整个网络模型的计算,之后在对储存在外部储存器DDR1中的Mobilenet-SSD卷积神经网络若干检测层得到的预测数据进行软件后处理,最终得到目标检测结果。
其次是CNN加速器IP核设计,如图4所示,片上缓冲区分为三部分(1)输入缓存区,用来储存输入特征图数据(2)权值缓存区,用来存储权重(3)输出缓存区,用来储存中间结果和最终输出特征图数据。Mobilenet-SSD网络的性能瓶颈位于带宽受限区域,所以为了最大利用外部储存带宽,三者的接口为流数据接口且都采用乒乓模式,设置了双缓冲区,即一个缓存区用于缓存数据,另一个缓存区的数据用于处理,下一阶段两个缓存区的功能调换。这种模式使得图像数据和权重输入,卷积计算和结果输出三个进程能同时进行,而不是顺序完成,实现流水线操作。
CNN加速器的计算引擎部分需要完成输入特征图数据和对应权值之间的卷积操作。卷积操作是通过多个不同的卷积核与输入数据或者上一层输出数据进行卷积计算,并在激活函数的作用下,得到新的二维输出的过程,这个新的二维输出便是下一层的输入,单次二维卷积的计算公式见式(1)。
式中px+i,y+i——输入特征图在点(x+i,y+j)处的像素值;
k——卷积核的维度大小;
W——输入特征图的宽;
H——输入特征图的高;
wij——卷积核内对应的权重值;
b——偏置项;
f——激活函数;
Oxy——以点(x,y)为中心,卷积窗大小为k*k的二维卷积输出值。
卷积层的计算是有很多个二维卷积操作组成的,其计算见式(12)
N——卷积核个数;
*——卷积操作;
f——激活函数。
上述卷积操作的过程可以概括为特征图数据和权重或偏置数据间的乘法加法运算和一些激活操作,Mobilenet-SSD中的激活函数为Relu,即是一个条件运算,所以计算引擎部分主要由大量的乘累加运算单元构成。设定的Mobilenet-SSD网络层为47层卷积层,包含标准卷积层和深度分离卷积层中的DW(depthwise)层。由于这两者的卷积操作过程的不同,所以按照一定并行度进行卷积任务划分时也会有所不同,需保证标准卷积和DW卷积计算并行度一致。
进一步,根据之前对加速器的分析,在并行设计方面可同时处理6个通道数据和64个卷积核对应权重的乘法操作。在HLS中,片上缓存区声明为数组时会默认映射为BRAM单元,在不采取任何优化指令的情况下,数据是按顺序存储在BRAM中,而每块BRAM在一个时钟周期内在最多只能进行两个数据的操作(双端口BRAM)。故按照卷积时取数的维度分割存储在不同的BRAM块中,输入缓存数组IBRAM在通道维度(数组对应维度为3)上完全分割,权重缓存数组WBRAM在通道维度和维度(数组对应维度为3和4)完全分割,从而达到空间上的并行性。
本发明在ZYNQ7100开发板上实现了Mobilenet-SSD算法,能对20类物体进行目标检测,在VOC07+12数据集上检测准确率为72.7mAP。检测图像像素为300*300,允许100像素以内的浮动。在处理速度方面,相比不采用硬件加速的双核Cortex A9 ARM,硬件加速效果约为109.23倍,标准卷积的平均计算性能和峰值计算性能分别为12.47Gop/s和26.67Gop/s。功耗约为8.527W。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种基于FPGA加速的MobileNet-SSD目标检测方法,其特征在于,包括如下步骤:
Step1:获取待检测目标初始图像,存储目标初始图像数据和卷积神经网络权值文件;
Step2:在Mobilenet-SSD卷积神经网络中加入检测层,在不同网络层间共享加速器,加速器上设置片上缓冲区;
Step3:通过并行分块参数优化法运行Mobilenet-SSD卷积神经网络,输出目标图像的特征图通道和卷积核通道的分块系数;
Step4:通过流水线算法,完成Mobilenet-SSD卷积神经网络的目标特征提取、边界框回归及物体类别预测;
Step5:对卷积神经网络得到的目标特征提取、边界框回归及物体类别预测信息进行后处理;
Stsp6:在待检测目标图像上测试目标检测结果。
2.根据权利要求1所述的一种基于FPGA加速的MobileNet-SSD目标检测方法,其特征在于,step2中片上缓冲区包括:①输入缓存区,用来储存输入特征图数据;②权值缓存区,用来存储权重;③输出缓存区,用来储存中间结果和最终输出特征图数据。
3.根据权利要求1所述的一种基于FPGA加速的MobileNet-SSD目标检测方法,其特征在于,Step2中Mobilenet-SSD卷积神经网络是以Mobilenet作为主干网络,仿照VGG-SSD的结构,在Mobilenet的conv13后面添加8个卷积层,然后抽取6层用作检测,Mobilenet包含深度上可分离的卷积运算,减少卷积核的冗余表达,减少网络的参数量和计算量。
4.根据权利要求1所述的一种基于FPGA加速的MobileNet-SSD目标检测方法,其特征在于,Step3中并行分块参数优化法包括如下步骤:
Step3.1:分别计算输入特征值的宽和高的分块系数Twi和Thi:
Twi=S*Tw+K-S (1)
Thi=S*Th+K-S (2)
其中,Twi表示输入特征值的宽的分块系数,Thi表示输入特征值的高的分块系数,Tw表示输出特征图的宽的分块系数,Th表示输出特征图的高的分块系数,K表示卷积核的大小,S表示卷积步长,
Step3.2:基于分块系数,计算通信比CR:
其中,CR表示通信比,W表示输出特征图的宽,H表示输出特征图的高,M表示输出特征图的通道数,N表示输出特征图的卷积核通道数,K表示卷积核的大小,αin表示输入层所需计算存储的所有分块数,βin表示输入层所需计算存储的分块数大小,αw表示卷积层所需计算存储的所有分块数,βw表示卷积层所需计算存储的分块数的大小,αout表示输出层所需计算存储的所有分块数,βout表示输出层所需计算存储的分块数的大小,上述公式中,αin、βin、αw、βw、αout和βout分别基于下述公式求解:
βin=TniTwiThi (4)
βw=TmTnK2 (5)
βout=TmTwTh (6)
其中,Tni表示输入特征图的通道对应的分块系数,Tw表示输出特征图的宽的分块系数,表示,Th表示输出特征图的高的分块系数,Tm表示输出特征图的通道数的分块系数,Tn表示输出特征图的卷积核通道数的分块系数,
Step3.3:按照资源瓶颈近似公式,计算资源瓶颈R:
其中,R表示资源瓶颈,与总操作数和系统时钟频率正向相关,与执行周期数反向相关,
Step3.4:基于约束条件,在Mobilenet-SSD卷积神经网络下求解全局最优的Tm和Tn:
其中,C0为片上缓存量,AP表示可取的计算能力,TW表示带宽。
5.根据权利要求4所述的一种基于FPGA加速的MobileNet-SSD目标检测方法,其特征在于,对于标准卷积,N=Ni,Tni=Tn,其中,Ni表示输入特征图的通道数;而对于DW卷积,N=1,M=Ni,Tni=Tm。
6.根据权利要求1所述的一种基于FPGA加速的MobileNet-SSD目标检测方法,其特征在于,Step4中流水线包括如下步骤:
Step4.1:将Mobilenet-SSD卷积神经网络中不同数据流的计算步骤在一个时钟周期内完成;
Step4.2:在一定阈值下回归出类别概率较高的预测框的真实位置并进行降序排列;
Step4.3:不同数据缓冲模块在不同时钟周期分别读写数据;
Step4.4:每达到时钟周期的一半时,每个数据缓冲模块一边继续读数据,一边将前半个时钟周期读取的数据开始向数据处理模块写入。
7.根据权利要求1所述的一种基于FPGA加速的MobileNet-SSD目标检测方法,其特征在于,Mobilenet-SSD卷积神经网络的标准卷积和深度分离卷积层共有47层,检测层中决定算法可检测类别的的卷积核个数为21,表明算法除去背景,用于检测20类物体。
8.根据权利要求1所述的一种基于FPGA加速的MobileNet-SSD目标检测方法,其特征在于,Step5中后处理包括如下步骤:
Step5.1:确定每个预测框的类别和类别概率,过滤掉属于背景的预测框;
Step5.2:通过增加数据缓冲模块和数据处理模块,在不同时钟周期切换各个缓冲模块的读写操作;
Step5.3:对保留下来的预测框进行非极大值抑制算法处理,得到最终的检测结果。
9.实现权利要求1-8任一所述的一种基于FPGA加速的MobileNet-SSD目标检测方法的装置,其特征在于,包括:外部储存器DDR1,外部储存器DDR1与控制器DDR2互联、控制器DDR2设置在处理单元PS中,处理单元PS与加速单元PL互联,加速单元PL与CPU相连,加速单元PL内设有加速器accelerator和片上缓存、连接单元AXI Interconnect和直接存储访问单元AXI DMA,加速器accelerator、连接单元AXI Interconnect和直接存储访问单元AXIDMA相互连通。
10.根据权利要求9所述的一种基于FPGA加速的MobileNet-SSD目标检测方法的装置,其特征在于,初始图像数据储存在外部存储器DDR1中,通过第一总线AXI4实现处理单元PS和加速单元PL部分的互联,加速单元PL通过第二总线AXI4_Lite接收来自CPU的配置信号,在处理单元PS中的控制器DDR2的作用下,加速器accelerator所需要的当前层的权重和输入数据从外部储存器DDR1中读出,并通过内存映射接口AXI4_memory_map经直接存储访问单元AXIDMA作用后转换为高速数据流接口AXI4_streaming数据流格式进入片上缓存,经加速单元PL处理后,输出再通过第一总线将加速单元PL的信息传回外部储存器DDR1,重复上述操作直至完成整个网络模型的计算,之后在对储存在外部储存器DDR1中的Mobilenet-SSD卷积神经网络若干检测层得到的预测数据进行软件后处理,最终得到目标检测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110434593.2A CN113051216B (zh) | 2021-04-22 | 2021-04-22 | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110434593.2A CN113051216B (zh) | 2021-04-22 | 2021-04-22 | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113051216A true CN113051216A (zh) | 2021-06-29 |
CN113051216B CN113051216B (zh) | 2023-07-11 |
Family
ID=76520251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110434593.2A Active CN113051216B (zh) | 2021-04-22 | 2021-04-22 | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113051216B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113592702A (zh) * | 2021-08-06 | 2021-11-02 | 厘壮信息科技(苏州)有限公司 | 基于深度卷积神经网络的图像算法加速器及系统和方法 |
CN113837054A (zh) * | 2021-09-18 | 2021-12-24 | 兰州大学 | 一种基于单目视觉的铁道路口火车识别预警系统 |
CN114662681A (zh) * | 2022-01-19 | 2022-06-24 | 北京工业大学 | 一种面向yolo算法可快速部署的通用硬件加速器系统平台 |
CN116303108A (zh) * | 2022-09-07 | 2023-06-23 | 芯砺智能科技(上海)有限公司 | 一种适用于并行计算架构的卷积神经网络权重地址排布方法 |
CN116679890A (zh) * | 2023-08-02 | 2023-09-01 | 湖南惟储信息技术有限公司 | 存储设备安全管理系统及其方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104361068A (zh) * | 2014-11-06 | 2015-02-18 | 华中科技大学 | 一种数据去重过程中的并行分块方法与系统 |
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
CN111967468A (zh) * | 2020-08-10 | 2020-11-20 | 东南大学 | 一种基于fpga的轻量级目标检测神经网络的实现方法 |
CN112070009A (zh) * | 2020-09-08 | 2020-12-11 | 南京工业大学 | 基于改进的lbp算子的卷积神经网络表情识别方法 |
WO2020258529A1 (zh) * | 2019-06-28 | 2020-12-30 | 东南大学 | 一种基于bnrp的可配置并行通用卷积神经网络加速器 |
-
2021
- 2021-04-22 CN CN202110434593.2A patent/CN113051216B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104361068A (zh) * | 2014-11-06 | 2015-02-18 | 华中科技大学 | 一种数据去重过程中的并行分块方法与系统 |
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
WO2020258529A1 (zh) * | 2019-06-28 | 2020-12-30 | 东南大学 | 一种基于bnrp的可配置并行通用卷积神经网络加速器 |
CN111967468A (zh) * | 2020-08-10 | 2020-11-20 | 东南大学 | 一种基于fpga的轻量级目标检测神经网络的实现方法 |
CN112070009A (zh) * | 2020-09-08 | 2020-12-11 | 南京工业大学 | 基于改进的lbp算子的卷积神经网络表情识别方法 |
Non-Patent Citations (1)
Title |
---|
齐榕;贾瑞生;徐志峰;毛其超;: "基于YOLOv3的轻量级目标检测网络", 计算机应用与软件, no. 10 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113592702A (zh) * | 2021-08-06 | 2021-11-02 | 厘壮信息科技(苏州)有限公司 | 基于深度卷积神经网络的图像算法加速器及系统和方法 |
CN113837054A (zh) * | 2021-09-18 | 2021-12-24 | 兰州大学 | 一种基于单目视觉的铁道路口火车识别预警系统 |
CN114662681A (zh) * | 2022-01-19 | 2022-06-24 | 北京工业大学 | 一种面向yolo算法可快速部署的通用硬件加速器系统平台 |
CN116303108A (zh) * | 2022-09-07 | 2023-06-23 | 芯砺智能科技(上海)有限公司 | 一种适用于并行计算架构的卷积神经网络权重地址排布方法 |
CN116679890A (zh) * | 2023-08-02 | 2023-09-01 | 湖南惟储信息技术有限公司 | 存储设备安全管理系统及其方法 |
CN116679890B (zh) * | 2023-08-02 | 2023-09-29 | 湖南惟储信息技术有限公司 | 存储设备安全管理系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113051216B (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113051216B (zh) | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 | |
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN109284817B (zh) | 深度可分离卷积神经网络处理架构/方法/系统及介质 | |
CN111967468A (zh) | 一种基于fpga的轻量级目标检测神经网络的实现方法 | |
Pestana et al. | A full featured configurable accelerator for object detection with YOLO | |
CN111178518A (zh) | 一种基于fpga的软硬件协同的加速方法 | |
Lu et al. | A resource-efficient pipelined architecture for real-time semi-global stereo matching | |
CN111210019B (zh) | 一种基于软硬件协同加速的神经网络推断方法 | |
CN104915322A (zh) | 一种卷积神经网络硬件加速方法及其axi总线ip核 | |
CN110766127B (zh) | 神经网络计算专用电路及其相关计算平台与实现方法 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
US20230289601A1 (en) | Integrated circuit that extracts data, neural network processor including the integrated circuit, and neural network | |
Li et al. | An improved algorithm for deep learning YOLO network based on Xilinx ZYNQ FPGA | |
CN111460906B (zh) | 一种基于集成学习的脉冲神经网络模式识别方法及系统 | |
Wang et al. | Briefly Analysis about CNN Accelerator based on FPGA | |
Ngo et al. | A high-performance HOG extractor on FPGA | |
Sivasankari et al. | High-throughput and power-efficient convolutional neural network using one-pass processing elements | |
Yu et al. | Optimizing FPGA-based convolutional encoder-decoder architecture for semantic segmentation | |
Yan et al. | Acceleration and optimization of artificial intelligence CNN image recognition based on FPGA | |
Zhao et al. | HLS-based FPGA implementation of convolutional deep belief network for signal modulation recognition | |
Zhao et al. | A 307-fps 351.7-GOPs/W deep learning FPGA accelerator for real-time scene text recognition | |
CN109710562A (zh) | 一种基于selectmap的可配置且高速的fpga配置电路及实现方法 | |
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 | |
Boyang | Research on Constructional Neural Network Accelerator Based on FPGA |
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 |