一种基于FPGA的Yolov3网络计算加速系统及其加速方法技术方案

技术编号:24889938 阅读:46 留言:0更新日期:2020-07-14 18:16
本发明专利技术是一种基于FPGA的Yolov3网络计算加速系统及其加速方法。所述系统包括ARM和FPGA平台架构、片外存储区、AXI_M接口和AXI_S接口,所述ARM平台架构包括核心处理器和数据和内存控制器,所述FPGA平台架构包括加速核心单元、输入缓存端和输出缓存端;所述核心处理器包括ARM Cortex‑A53CPU和L2缓存区,所述片外存储区包括SD卡和外部DDR4,所述加速核心单元包括数据矩阵向量阵列和计算模块。本发明专利技术输入和输出缓存端采用多通道并行读取写回的方式代替传统的单通道读写方式,最大化利用了Zynq芯片的带宽。输入缓存端设计双缓存区和寄存器阵列,实现高效的数据复用,成倍提高带宽。

【技术实现步骤摘要】
一种基于FPGA的Yolov3网络计算加速系统及其加速方法
本专利技术涉及Yolov3网络计算加速
,是一种基于FPGA的Yolov3网络计算加速系统及其加速方法。
技术介绍
深度学习作为新一代计算模式,近年来在众多领域中发挥了重要作用。以卷积神经网络为代表的深度学习算法在计算机视觉领域中取得了重大突破,如图像分类、目标检测等具体应用。随着物联网时代的来临和边缘计算的兴起,未来社会的发展趋势是万物互联和万物感知,因此在嵌入式端部署深度学习算法具有重要的现实意义。深度学习算法的特点是计算密集和存储密集,需要消耗大量的计算和存储资源。而嵌入式设备往往计算和存储资源受限。因此,深度学习需要更适应此类算法的新的底层硬件来加速计算过程,目前主流的方式是使用GPU、FPGA以及ASIC芯片。GPU作为应对图像处理需求而出现的芯片,其海量数据并行运算的能力十分适合于深度学习训练,但GPU的局限性在于能效比较低且硬件结构固定。专用集成电路芯片(ASIC)由于其定制化的特点,是一种比GPU更高效的方法。但是其定制化也决定了它的可迁移性低,且其造价高昂,生产周期长。FPGA在GPU和ASIC中取得了权衡,很好的兼顾了处理速度、控制能力和能效比。一方面,FPGA是可编程重构的硬件,因此相比GPU有更强大的可调控能力;另一方面,与日增长的门资源和内存带宽使得它有更大的设计空间。更方便的是,FPGA还省去了ASIC方案中所需要的流片过程。目前,FPGA已成为当今主流的一种深度学习处理器。YOLO系列的目标检测网络是目标检测领域中的极具代表性算法,在工业界得到了广泛应用。YOLOv3作为YOLO的最新一代检测方法,在性能上具有更加优异的表现,是当今业界的主流算法。但YOLOv3计算量较大,难以部署在嵌入式端,而目前的硬件加速器缺乏针对YOLOv3网络加速的系统设计方案。因此,可结合YOLOv3网络特点,基于FPGA设计硬件加速系统。
技术实现思路
本专利技术为实现对YOLOv3网络加速,本专利技术提供了一种基于FPGA的Yolov3网络计算加速系统及其加速方法,本专利技术提供了以下技术方案:一种基于FPGA的Yolov3网络计算加速系统,所述系统包括ARM和FPGA平台架构、片外存储区、AXI_M接口和AXI_S接口,所述ARM平台架构包括核心处理器和数据和内存控制器,所述FPGA平台架构包括加速核心单元、输入缓存端和输出缓存端;所述核心处理器包括ARMCortex-A53CPU和L2缓存区,所述片外存储区包括SD卡和外部DDR4,所述加速核心单元包括数据矩阵向量阵列和计算模块;所述ARMCortex-A53CPU连接L2缓存区,所述L2缓存区连接数据和内存控制器,所述数据和内存控制器连接片外存储区,所述数据和内存控制器AXI_M接口和AXI_S接口,所述AXI_S接口连接输入缓存端和输出缓存端,所述输入缓存端连接数据矩阵向量阵列,所述数据矩阵向量阵列连接计算模块,所述计算模块连接输出缓存端;所述AXI_M接口连接计算模块。一种基于FPGA的Yolov3网络计算加速方法,包括以下步骤:步骤1:根据YOLOv3网络结构,分配ARM和FPGA的计算任务,采用ARM作为主控制器,采用FPGA作为协处理器,ARM负责外部图像输入、图像预处理、NMS算法、叠加检测信息、图像输出任务,YOLOv3网络推理中的路由层和YOLO层;FPGA负责YOLOv3网络推理中的卷积层、捷径层和上采样层步骤2:进行BN层与卷积层的融合,通过在权重文件中预先转换权值参数,实现卷积层和BN层的融合;步骤3:对YOLOv3网络进行量化,将float32型数据量化为int16动定点数据;步骤4:在ARM架构中和FPGA架构中,形成数据流,完成一次YOLOv3网络的目标检测;步骤5:对特征图和权重数据进行切分,输出切分后的特征图和权重数据;步骤6:输入缓存端缓存切分后的特征图和权重数据,采用多通道读取特征图和权重数据,实现读取乒乓过程;步骤7:对卷积层、捷径层、上采样层进行加速计算,实现维度的展开;步骤8:输出缓存端通过乒乓操作实现流水,交替将输出缓存的数据写回DDR4中;步骤9:ARM负责路由层和YOLO层,ARM端在图像上叠加检测信息,通过外部接口将图像输出。优选地,包括以下步骤:步骤3.1:量化网络的权重数据,遍历每一个卷积层的权重数据,找出每一层权重数据的最值,遍历不同的阶码,在保证量化后的整数表示范围比权重数据分布大的前提下,找到每层最优的权重阶码,使原始权重与量化后的权重绝对误差和最小,根据最值确定16位动定点量化的小数点位置,确定小数部分的位长Q;将权重数据乘以比例系数2^Q,取整数数据即为int16动定点量化的结果;反量化的过程为int16型量化结果除以比例系数2^Q,得到反量化的浮点数结果;对网络的每一卷积层权重数据进行上述操作,最后形成该网络卷积层的量化权重数据;步骤3.2:量化网络的特征图数据,准备校准数据集,数量为训练集数据的10%;遍历网络每一层的特征图输入数据,找出每一层输入特征图数据的最值,确定16位动定点量化的小数点位置,即确定小数部分的位长Q,对网络的每一层进行量化操作,确定每一层的量化小数位数Q,对校准数据集中的所有图片进行量化操作,对每一层的量化小数位数Q求均值,得出最后的网络输入特征图的量化小数位数Q。优选地,所述步骤4具体为:采用ARM读取输入图像,对图像数据进行预处理,处理后的图像存储在DDR4中,从片外Flash中读取模型结构文件,对网络模型进行解析,解析后的网络结构存储在DDR4中;从片外Flash中读取量化模型权重文件到DDR4中,完成模型加载过程,ARM对输入特征图进行量化操作,ARM通过AXI_S接口实现DDR4与FPGA片上BRAM存储区之间的数据传输;ARM读取每层的网络结构,通过AXI_S接口总线传输特征图和权重数据,计算结果经AXI_S接口写回DDR4内,经传输计算后,得出最后的结果特征图,在ARM端对结果进行解析、NMS算法和图像后处理操作,完成一次YOLOv3网络的目标检测。优选地,所述步骤5具体为:包括以下步骤:步骤5.1:对特征图数据进行切分,所述特征图数据为一个三维数据,维度分别为R、C、N;其中,R为特征图的高度、C为特征图的宽度、N为特征图的通道数,沿R、C、N三个维度对特征图进行切分,其中Tr为沿R维度切分后的长度,Tc为沿C维度切分后的长度,Tn为沿N维度切分后的长度,输出特征图的通道数为M,Tm为沿M维度切分后的长度;步骤5.2:对权重数据进行切分,所述权重数据为一个四维数据,维度分别为K、K、M、N,其中,K为卷积核的高度、K为卷积核的宽度、N为输入特征图的通道数、M为输出特征图的通道数,沿M、N两个维度对特征图进行切分,其中Tm为沿M维度切分后的长度,Tn为沿N维度切分后的长度。优选地,所述步骤6具体为:包括以下步骤:...

【技术保护点】
1.一种基于FPGA的Yolov3网络计算加速系统,其特征是:所述系统包括ARM和FPGA平台架构、片外存储区、AXI_M接口和AXI_S接口,所述ARM平台架构包括核心处理器和数据和内存控制器,所述FPGA平台架构包括加速核心单元、输入缓存端和输出缓存端;/n所述核心处理器包括ARM Cortex-A53CPU和L2缓存区,所述片外存储区包括SD卡和外部DDR4,所述加速核心单元包括数据矩阵向量阵列和计算模块;/n所述ARM Cortex-A53CPU连接L2缓存区,所述L2缓存区连接数据和内存控制器,所述数据和内存控制器连接片外存储区,所述数据和内存控制器AXI_M接口和AXI_S接口,所述AXI_S接口连接输入缓存端和输出缓存端,所述输入缓存端连接数据矩阵向量阵列,所述数据矩阵向量阵列连接计算模块,所述计算模块连接输出缓存端;所述AXI_M接口连接计算模块。/n

【技术特征摘要】
1.一种基于FPGA的Yolov3网络计算加速系统,其特征是:所述系统包括ARM和FPGA平台架构、片外存储区、AXI_M接口和AXI_S接口,所述ARM平台架构包括核心处理器和数据和内存控制器,所述FPGA平台架构包括加速核心单元、输入缓存端和输出缓存端;
所述核心处理器包括ARMCortex-A53CPU和L2缓存区,所述片外存储区包括SD卡和外部DDR4,所述加速核心单元包括数据矩阵向量阵列和计算模块;
所述ARMCortex-A53CPU连接L2缓存区,所述L2缓存区连接数据和内存控制器,所述数据和内存控制器连接片外存储区,所述数据和内存控制器AXI_M接口和AXI_S接口,所述AXI_S接口连接输入缓存端和输出缓存端,所述输入缓存端连接数据矩阵向量阵列,所述数据矩阵向量阵列连接计算模块,所述计算模块连接输出缓存端;所述AXI_M接口连接计算模块。


2.一种基于FPGA的Yolov3网络计算加速方法,所述方法基于如权利要求1所述的一种基于FPGA的Yolov3网络计算加速系统,其特征是:包括以下步骤:
步骤1:根据YOLOv3网络结构,分配ARM和FPGA的计算任务,采用ARM作为主控制器,采用FPGA作为协处理器,ARM负责外部图像输入、图像预处理、NMS算法、叠加检测信息、图像输出任务,YOLOv3网络推理中的路由层和YOLO层;FPGA负责YOLOv3网络推理中的卷积层、捷径层和上采样层
步骤2:进行BN层与卷积层的融合,通过在权重文件中预先转换权值参数,实现卷积层和BN层的融合;
步骤3:对YOLOv3网络进行量化,将float32型数据量化为int16动定点数据;
步骤4:在ARM架构中和FPGA架构中,形成数据流,完成一次YOLOv3网络的目标检测;
步骤5:对特征图和权重数据进行切分,输出切分后的特征图和权重数据;
步骤6:输入缓存端缓存切分后的特征图和权重数据,采用多通道读取特征图和权重数据,实现读取乒乓过程;
步骤7:对卷积层、捷径层、上采样层进行加速计算,实现维度的展开;
步骤8:输出缓存端通过乒乓操作实现流水,交替将输出缓存的数据写回DDR4中;
步骤9:ARM负责路由层和YOLO层,ARM端在图像上叠加检测信息,通过外部接口将图像输出。


3.根据权利要求2所述的一种基于FPGA的Yolov3网络计算加速方法,其特征是:所述步骤3具体为:包括以下步骤:
步骤3.1:量化网络的权重数据,遍历每一个卷积层的权重数据,遍历不同的阶码,在保证量化后的整数表示范围比权重数据分布大的前提下,找到每层最优的权重阶码,使原始权重与量化后的权重绝对误差和最小,根据最值确定16位动定点量化的小数点位置,确定小数部分的位长Q;将权重数据乘以比例系数2^Q,取整数数据即为int16动定点量化的结果;反量化的过程为int16型量化结果除以比例系数2^Q,得到反量化的浮点数结果;对网络的每一卷积层权重数据进行上述操作,最后形成该网络卷积层的量化权重数据;
步骤3.2:量化网络的特征图数据,准备校准数据集,数量为训练集数据的10%;遍历网络每一层的特征图输入数据,找出每一层输入特征图数据的最值,确定16位动定点量化的小数点位置,即确定小数部分的位长Q,对网络的每一层进行量化操作,确定每一层的量化小数位数Q,对校准数据集中的所有图片进行量化操作,对每一层的量化小数位数Q求均值,得出最后的网络输入特征图的量化小数位数Q。


4.根据权利要求2所述的一种基于FPGA的Yolov3网络计算加速方法,其特征是:所述步骤4具体为:
采用ARM读取输入图像,对图像数据进行预处理,处理后的图像存储在DDR4中,从片外Flash中读取模型结构文件,对网络模型进行解析,解析后的网络结构存储在DDR4中;从片外Flash中读取量化模型权重文件到DDR4中,完成模型加载过程,ARM对输入特征图进行量化操作,ARM通过AXI_S接口实现DDR4与FPGA片上BRAM存储区之间的数据传输;ARM读取每层的网络结构,通过AXI_S接口总线传输特征图和权重数据,计算结果经AXI_S接口写回DDR4内,经传输计算后,得出最后的结果特征图,在ARM端对结果进行解析、NMS算法和图像后处理操作,完成一次YOLOv3网络的目标检测。


5.根据权利要求2所述的一种基于FPGA的Yolov3网络计算加速方法,其特征是:所述步骤5具体为:包括以下步骤:
步骤5.1:对特征图数据进行切分,所述特征图数据为一个三维数据,维度分别为R、C、N;其中,R为特征图的高度、C为特征图的宽度、N为特征图的通道数,沿R、C、N三个维度对特征图进行切分,其中Tr为沿R维...

【专利技术属性】
技术研发人员:郑浩然李君宝刘环宇吴然吴瑞东赵菲刘小龙
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:黑龙;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1