1、第 40 卷第 3 期计算机应用与软件Vol.40 No 32023 年 3 月Computer Applications and SoftwareMar 2023基于 FPGA 的卷积神经网络硬件加速器设计黄沛昱赵强李煜龙(重庆邮电大学光电工程学院重庆 400065)收稿日期:2020 07 13。国家自然科学基金项目(61801061);重庆市教委科学技术研究项目(KJQN201800607)。黄沛昱,副教授,主研领域:电子技术及应用。赵强,硕士生。李煜龙,硕士生。摘要为了提高中小规模设备卷积神经网络的推理速度,提出一种基于 FPGA 的卷积神经网络硬件加速器设计方案。针对模型中的卷积运算
2、单元,该硬件加速器采用输入、输出二维循环展开和循环分块的方法,设计128 个并行乘法器单元。模型的输入输出接口采用双缓存设计,通过乒乓操作,降低数据传输带来的时间延迟。同时,采用 16 位定点量化模型中权重参数,偏置参数和输入输出特征图的像素值。实验结果表明,与通用 CPU酷睿 i5-4440 处理器相比,在 COCO 数据集上准确率几乎不变的情况下,计算性能提高5 77 倍。在系统时钟频率为 150 MHz 时,硬件加速器的计算性能达到 28 88 GOPS。关键词卷积神经网络FPGA循环展开循环分块并行乘法器单元双缓存设计中图分类号TP391文献标志码ADOI:10 3969/j issn
3、 1000-386x 2023 03 007DESIGN OF FPGA-BASED CONVOLUTIONAL NEUAL NETWOKHADWAE ACCELEATOHuang PeiyuZhao QiangLi Yulong(College of Photoelectric Engineering,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)AbstractIn order to improve the reasoning speed of the convolutional ne
4、ural network of small and medium-sizedequipment,this paper proposes a design scheme of FPGA-based convolutional neural network hardware acceleratorAiming at the convolution operation unit in the model,the hardware accelerator adopted the input and output two-dimensional loop unrolling and loop tilin
5、g method,and designed 128 parallel multiplier units The input and outputinterface of the model used a double buffer design to reduce the time delay caused by data transmission through ping-pongoperation The 16-bit fixed-point was used to quantify weight parameters,bias parameters and pixel values of
6、 the inputand output feature maps in the model The experimental results show that compared with the general-purpose CPU Corei5-4440 processor,the calculation performance is improved by 5 77 times while the accuracy rate on the COCO data setis almost unchanged When the system clock frequency is 150 M
7、Hz,the computing performance of the hardwareaccelerator reaches 28 88 GOPSKeywordsConvolutional neural networkFPGALoop unrollingLoop tilingParallel multiplier unitDoublebuffer design0引言近年来,随着人工智能的快速发展,其理论研究日益成熟。机器视觉是人工智能的一个重要研究方向,卷积神经网络(Convolutional Neural Network,CNN)已经被广泛应用于机器视觉完成特征提取1 4。深度学习主要分为
8、两个步骤:训练和推理。采用通用处理器实现卷积神经网络的推理,其运算效率非常低。因为通用处理器采用冯诺依曼结构是串行执行,难以满足卷积神经网络需要大量的并行计算。因此,针对卷积神经网络的结构出现了三种主流的硬件第 3 期黄沛昱,等:基于 FPGA 的卷积神经网络硬件加速器设计39加速方式:专用集成电路(Application Specific Integrat-ed Circuit,ASIC)、图形处理器(Graphics Processing U-nit,GPU)、现场可编程门阵列(Field Programmable GateArray,FPGA)。其中,基于 ASIC 的硬件实现研发周期长
9、,无法适应复杂多变的 CNN 结构,并且专用集成电路研发成本高昂。基于 GPU 的硬件实现虽然可以获得很好的性能,但是较高的功耗也会降低其性能,同时,如果将其部署到移动设备会严重缩短续航时间。基于 FPGA 的硬件加速器能克服 ASIC 和 GPU 的缺点,同时,FPGA 支持并行计算,具有动态可重构、低功耗、低延时、高性能的优势5 7。因此,目前基于 FPGA 对卷积神经网络进行硬件加速设计已经被广泛研究。文献 8 采用 8 bit 位宽量化卷积神经网络,在损失一定准确度的情况下,减少网络的体积,并且节约了 FPGA 的存储资源,同时也提高了计算性能。文献 9 提出一种卷积循环二维展开的加速
10、器设计,其核心思想是把每一层卷积计算的输入和输出特征图循环展开进行并行计算,从而提高计算的吞吐量。但是,由于该设计把权重和输入输出特征图缓存在 FPGA 片上,导致 FPGA 消耗过多的资源,不利于部署在中小规模 FPGA 上。在进行 FPGA 硬件电路设计时,传统的方法采用Verilog 或者 VHDL 语言进行设计,这种方式开发效率低。目前,随着高层次综合工具的日益成熟,Xilinx 公司推出的 HLS 工具已经支持 C/C+语言对 FPGA 完成算法开发,从而提高开发效率10。为了提高卷积神经网络的推理速度,本文设计一种基于 FPGA 的硬件加速电路。首先,网络结构采用工业界广泛用于目标
11、检测的 YOLOv2 网络。为了减少网络模型的体积,同时为了保证网络预测结果的准确率,本设计采用 16 位定点化权重参数,偏置项参数以及输入输出特征图的像素。然后设计卷积运算模块的硬件电路,为了提高计算的吞吐量,采用输入输出二维循环展开的方法,为了降低从内存中读取数据的延时,采用双缓存设计。最后,将本设计的 YOLOv2 网络加速器部署在 Xilinx 公司的 Pynq-z1 嵌入式开发板上性能超过 i5-4440 处理器。同时,与已有的 CNN 模型的硬件加速器性能进行对比。1卷积神经网络加速器研究1 1卷积神经网络2012 年,Hinton 教授带领学生在 Imagenet 数据集上,将
12、AlexNet 网络用于图像分类获得的准确率远高于传统算法。从此,卷积神经网络广泛用于图像分类、目标检测和跟踪等一系列的计算机视觉领域11 12。卷积神经网络主要包括输入层、卷积层、池化层、全连接层、输出层等。VGG-16 网络如图 1 所示,其网络包含 13 个卷积层、5 个池化层、3 个全连接层。卷积神经网络中不同卷积层有不同数目的卷积核,卷积核的大小主要以 3 3 和 1 1 为主,卷积层通过卷积核提取图像特征。卷积的结果需要通过相应的激活函数计算后再进行池化,激活函数是为使网络的输入输出之间满足非线性的关系,增强神经网络的表达能力。常见的激活函数有 eLU、Leaky eLU、Tanh
13、 和 Sigmoid函数。池化层也被称为降采样,作用是减少特征图的尺寸。常用的池化方法有最大池化和平均池化,而池化的大小以 2 2 为主。网络中的全连接层一般位于网络最后几层,其作用是将提取的特征完成分类,由于全连接层的参数占整个网络的 90%以上,参数的冗余降低模型的表达能力。因此,现在大量性能优异的网络采用全局平均池化代替全连接层,使用 Softmax 函数来完成分类任务,例如 esNet 网络和 GoogLeNet 网络13 15。图 1VGG-16 网络结构1 2YOLOv2 网络模型分析YOLOv2 网络模型是目标检测领域的 One-Stage典型算法,其速度要快过 Two-Stag
14、e 算法中的 Fast-C-NN 和 Faster-CNN 网络模型。同时,YOLOv2 网络模型可以速度和准确率之间进行权衡,适应不同场景的需求16 17。比如,在不需要速度的时候,适当地提高模型的准确率;而在一些场景对速度有严格的要求,可以适当地提高速度。因此,YOLOv2 适合部署于中小规模设备。YOLOv2 网络结构中使用 Darknet-19 网络作为基础分类网络,Darknet-19 网络如表 1 所示,Darknet-19网络结合 GoogLeNet 网络和 VGG-19 网络的优势,在Darknet-19 网络中使用 1 1 和 3 3 的卷积核进行卷积计算,同时,使用全局平均
15、池化代替全连接层。Darknet-19 网络不仅能降低模型的参数量和计算的复杂度,而且能提高网络的泛化能力,避免模型的过拟合。40计算机应用与软件2023 年表 1Darknet-19 网络结构TypeFilterSize/StrideOutputConv323 3224 224Max pool2 2/2112 112Conv643 3112 112Max pool2 2/256 56Conv1283 356 56Conv641 156 56Conv1283 356 56Max pool2 2/228 28Conv2563 328 28Conv1281 128 28Conv2563 328 2
16、8Max pool2 2/214 14Conv5123 314 14Conv2561 114 14Conv5123 314 14Conv2561 114 14Conv5123 314 14Max pool2 2/27 7Conv1 0243 37 7Conv5121 17 7Conv1 0243 37 7Conv5121 17 7Conv1 0243 37 7Conv1 0001 17 7AvgpoolGlobal1 000Softmax1 3CNN 加速器策略因为卷积层的计算量占据整个网络模型的 90%以上18,所以为了加速卷积神经网络的推理过程,本文采取循环展开和分块的策略,针对网络模型中的卷积层运算进行优化。1 3 1循环展开循环展开是针对卷积计算常用的硬件加速策略,主要是提高硬件乘法单元的并行度。循环展开可以分为两类:一类是输入特征图的循环展开,另外一类是输出特征图的循环展开。输入特征图的循环展开通过每个时钟周期并行的读取 Tn幅输入特征图的像素点,然后与对应的权重参数进行乘累加操作。如图2 所示(Tn=4),每个时钟周期读取的特征图的个数 Tn需要合理设置,特征图的个数 Tn