目录
一、简介
1.题目:
2.时间:
3.来源:
4.简介:
5.论文主要贡献:
二、相关名词
三、 相关背景知识
1.YOLO网络
2.Winograd快速卷积计算(针对3x3卷积层)
3.GEMM快速卷积计算(针对1x1卷积层)
4.卷积层、归一化层的合并计算
四、处理流程概述
1.动态量化
2.针对3x3卷积层的加速计算引擎PE1
3.针对1x1卷积层的加速计算引擎PE2(融合了重排序计算模块)
4.双缓存系统和多DMA通道
YOLO 检测网络的 FPGA 加速计算模型的研究
2022.08
Journal of Chinese Computer Systems(小型微型计算机系统)
伴随着检测精度的提高,YOLO系列网络的深度以及参数量越来越大,因而需要更大的计算量和内存。文中基于FPGA 验证平台研究并实现了 YOLO系列神经网络的加速计算模型,使用了动态定点量化、流水线、循环展开、模块融合等策略,提高了fpga计算资源的利用率,降低了数据传输的时延,提高了整体性能。
从三个方面(当前基于fpga的神经网络加速计算模型的相关工作主要集中在这三个方面)提高fpga加速计算的性能:
①通过对网络模型参数的量化和压缩实现加速。
②针对卷积层加速计算的研究。
③ 基于不同硬件执行架构的加速器设计。
本文使用了 Winograd、 GEMM 快速卷积方法,以及融合卷积层和归一化层参数的合并计算方法,采用多 DMA 通道传输和非卷积模块的融合计算进一步降低数据传输的延时,此外还设计了双缓存系统提高资源利用率以提高整体性能。
YOLO:You Only Look Once
HLS:High Level Synthesis,高层次综合
IP:Intellectual Property,知识产权
GEMM:General Matrix Multiplication,通用矩阵乘
SIMD:Single Instruction Multiple Data,单指令多数据流
DMA:Direct Memory Access,一种快速传输数据的机制
在上篇文章文献阅读(6)中,介绍了目标检测一阶段和二阶段以及tiny-yolov2的简单结构文献阅读(6):AI Deep Learning Accelerator
YOLO属于单阶段检测模型,将目标定位和识别融合在一起。YOLO系列的模型由骨干网络和检测网络组成。本文中选用的模型为YOLOv2,结构如下所示。
通过减少乘法次数(加法次数会增加)来增加计算速度。首先将输入特征图和卷积核分别变换成相同维度矩阵,再通过矩阵点乘来实现卷积计算。具体做法知乎有篇文章写的挺清晰的→https://zhuanlan.zhihu.com/p/409050916
简单来说就是将两个输入矩阵乘法在一起,得到一个输出矩阵。对于卷积核大小大于 1 × 1 的卷积层需要先对输入特征图进行 Im2col 操作,将输入特征图上的每个卷积窗口滑过的数据扩展成列,然后再与连续存储的卷积核进行通用矩阵乘法 GEMM 得到卷积结果。
前一篇文章中有提到将卷积和最大池化相结合同时执行,提高数据重用性。本文中将卷积层和归一化的参数进行融合,fpga推理计算时把新参数直接用于卷积计算,减少了模型的计算量和数据传输量。
动态量化是对模型权重进行压缩的一种方式,在训练时针对模型进行量化,在后续进行模型测试的时候再决定是否针对激活值采取量化。本文中用16 位定点整数计算取代 32 位浮点计算,数据传输量减半,节约片上存储资源的同时提高了计算执行速度。
采用了循环分块来降低片上卷积规模,在分块后又被分为了内循环、外循环两个循环组。右边方块中最大池化计算和卷积计算相融合,得益于Winograd 的卷积输出窗口与池化窗口的滑动规律完全相同。
该卷积层也采取循环分块策略,外循环和内循环基本与上方策略相同,不同的是在内循环的最里层采用了通用矩阵乘法 GEMM 实现卷积。
论文中采用了双缓存存储系统来重叠数据载 入、数据计算、数据输出这 3 个阶段的时延,还采用了多 DMA 通道数据传输策略进一步降低传输延时。