北京大学学报(自然科学版) 第60卷 第6期 2024年11月

Acta Scientiarum Naturalium Universitatis Pekinensis, Vol. 60, No. 6 (Nov. 2024)

doi: 10.13209/j.0479-8023.2024.089

收稿日期: 2023–12–18;

修回日期: 2024–03–11

一种改进型LeNet的交通标识多分类异构加速器的实现

杨永杰 郑君泰 马立 杨昊

南通大学信息科学技术学院, 南通 226019; †E-mail: yang.yj@ntu.edu.cn

摘要 提出一种基于改进型 LeNet 的交通标志多分类异构加速器的实现方案。该加速器利用 ARM+FPGA 异构平台, 将改进型 LeNet 的前向推理部署到 FPGA 上, 实现并行计算。在 FPGA 端, 采用 AXI-Stream 协议, 通过 DMA 实现数据高速流转, 使用数组分区和多级流水线等技术实现数据的并行处理。在 ARM 端使用PYNQ 框架进行数据更新和加速器调度。在 GTSRB 数据集上的实验结果显示, 该设计方案在工作时钟频率为 50MHz 时, 平均推理时间为 14.489ms, 在 MCU 上的推理时间为 710ms, 加速比可达 49, 对于实现交通标识多分类的边缘端应用具有显著的作用。

关键词 LeNet; FPGA; PYNQ; 异构计算

随着科技的进步和城市化进程的加速, 智能交通系统得到广泛应用, 交通标志识别是其中的重要组成部分。现有的交通标志识别方法大多基于微控制器(microcontroller unit, MCU)平台上的深度学习算法, 存在计算量大和功耗高等问题。相较于传统的 MCU 平台, FPGA(field programmable gate array)具有并行性强的突出特点, 能够为交通标志识别系统带来显著的性能提升。使用将 MCU 与FPGA 结合的异构平台, 可以充分发挥各自的优势, 实现更高效的交通标志识别技术应用。

将深度学习算法部署在异构平台上已有很多研究。Stornaiuolo 等[1]提出一种旨在有效实现深度学习的新框架, 可以帮助基于 FPGA 的 IP(in-tellectual property)设计人员在 Xilinx Zynq SoC 上实现深度学习算法, 并在 PYNQ-Z1 板上进行测试。Dai 等[2]提出 LeNet-5 模型, 用于手写数字识别, 并利用 DMA在 ZYBOZ7 FPGA 板上(direct memory access)实现快速图像识别。Wang 等[3]提出一种基于高级综合工具(high-level synthesis, HLS)、Python 和 FPGA 实现CNN 预训练架构的方法。Yao 等[4]提出一种增加CNN(convolu-tional neural networks)参数利用率的方法, 并采用 4 种优化策略来创建适用于资源受限FPGA 平台的 CNN 拓扑结构。Maraoui 等[5]使用 HLS和 Xilinx PYNQ (Python productivity for ZYNQ)平台实现硬件加速器, 利用定制叠加层构建快速而强大的嵌入式应用, 并验证原型硬件在执行时间和成本方面的有效性。Liu 等[6]通过合理划分网络各部分的功能模块, 并利用 HLS 优化环路设计, 提高吞吐量和识别速度。Kim 等[7]对硬件友好量化方法进行扩展, 降低计算的复杂性。赵泽毅等[8]提出一种基于改进 LeNet-5 模型的双通道、多尺度网络结构模型。在加速优化方面, 使用量化方法[9–11]可以改变数据结构, 降低数据带宽, 提高数据利用率; 使用剪枝方法[12–14]可以降低运算量, 提高运算速度。

当针对嵌入式边缘端的环境进行研究时, 上述研究往往忽视了推理速度的提升, 造成实用性不足等问题。本文基于 LeNet-5 卷积神经网络、ZYNQ异构平台[15]以及德国交通标志识别基准(German Traffic Sign Recognition Bench-mark, GTSRB)数据集(https://benchmark.ini.rub.de/gtsrb_news.html), 提出一种改进型 LeNet 的交通标志多分类边缘端加速器的设计与实现方案。通过设计改进型 LeNet 网络结构, 融合和优化训练方式, 并在异构平台上部署网络结构, 实现更小的输入图像尺寸、更直接的数据类型、更低的时钟要求以及更显著的加速效果。

1 研究方案

1.1 系统设计

相较于同构计算, 异构计算同时具备任务调度和并行计算的优点, 更适合完成图像多分类任务。ZYNQ 异构平台为 ARM+FPGA 架构, 该平台分为两部分: 处理器系统(processing system, PS)和可编程逻辑(progarmmable logic, PL)。PS 部分基于 ARM的 SoC(system on a chip)系统, 具备丰富的外设资源。PL 部分由 FPGA 构成, 是一种适用于高度并行计算的可编程器件。本文协调两种异构计算资源, 实现对改进型 LeNet 的加速。本文提出的硬件系统框架如图 1 所示。本文针对 ZYNQ 系列的异构计算平台, 在其 PS 部分搭建 PYNQ 框架, 结合 juterpy notebook 前端交互界面, 可以方便快捷地操作相关任务。在 PL 端搭建 DMA 软核 IP, 该 IP 核具有 3 种类型的 AXI (advanced extensible interface)通信总线。将 AXI 总线与 PS 部分的 DDR 控制器相连, 将AXI-Lite 总线与 PS 部分的主机接口相连, 使用AXI-Stream 总线与 PL 端的 LeNet 加速器 IP 核相连。

LeNet 网络使用的相关权重和偏置参数保存在PL 端的 BRAM (block RAM)中, 图像数据通过DMA软核从 PS 部分的 DDR SDRAM (double data rate synchronous dynamic random access memory)中读取, 最后将推理结果通过 DMA 写入 PS 部分 DDR 的指定空间。LeNet 运行时, 从 BRAM 中读取相关数据和前向推理过程。

width=326.25,height=165

图1 本文提出的硬件系统框架图

Fig. 1 Hardware system framework diagram of the study

1.2 模型改进

LeNet-5 的原始网络结构是两层卷积核为 5×5的卷积层, 两层最大池化层, 3 层全连接层, 最后一层全连接层(输出层)采用 softmax 激活函数。激活函数采用 sigmod 函数。针对在 FPGA 上运行时的效率问题, 本文针对原始 LeNet-5 做出如下改进。

1)替换激活函数。原始 LeNet 网络采用 sigmod激活函数。sigmod 函数具有能映射到概率空间、平滑连续以及可微性等优点, 数学表达式为

width=81,height=27.75。 (1)

从用 FPGA 加速的角度看, 式(1)中包含除法算子、指数算子和无理数等高资源占用且不能发挥其优势的算子符号。

ReLu 函数具有训练收敛速度快、适用性广和计算简单等突出优点, 且在 FPGA 上实现的可行性高, 因此本文将 sigmod 函数替换为 ReLu 函数:

width=97.5,height=31.5 (2)

2)丢弃输出层激活函数。在经典的 LeNet 网络结构中, 最后一层通常是一个全连接层, 用于将前面的卷积层和池化层的特征进行分类。全连接层的输出之后使用 softmax 激活函数来产生类别概率分布。softmax 函数表达式为

width=101.25,height=29.25。 (3)

可以看出, 式(2)中使用的算子复杂度高, 占用的时空资源较大, 因此不适合在加速器上部署。结合多分类任务的特点, 一次推理只需输出一个概率最大值即可, 本文将最后一个全连接层之后的激活函数丢弃, 不会影响针对输出结果最大值的索引值。针对 GTSRB 数据集的分类数量为 43 类, 本文将输出层的分类种类设置为 43 类。

3)层融合。为了进一步提高加速器的性能, 本文将卷积层和全连接层与之后的激活层相融合。这样可以在卷积操作中直接引入非线性, 避免额外的激活层, 并且计算效率高。在全连接层中使用激活函数, 可以为模型输出生成类别概率分布或连续数值, 在分类问题中能够更好地解决多类别分类和非线性决策边界等问题。在 FPGA 上进行层融合可以进一步减少时空资源占用并减少时序不收敛的可能性, 从而增强系统的稳定性。

改进型 LeNet 网络结构如图 2 所示。

1.3 数据定点量化

模型量化是一种用于神经网络压缩的技术[16], 可以将浮点数转换为低精度的整数, 从而减少存储和计算的复杂度。模型的定点量化指将浮点数模型中的参数和激活值转换为定点数, 并限制其占用的位数。

与浮点数不同, 定点数采用二进制表示方式, 可以通过控制位宽来实现对精度的调节。若将模型中的参数和激活值都转换为定点数, 则可以大幅度减少存储空间和计算量。由于在 FPGA 上的定点数计算速度比浮点数快, 因此可以实现模型的快速推理和响应。

width=396.75,height=169.5

图2 改进型LeNet网络结构

Fig. 2 Improved LeNet network structure diagram

本文将改进型 LeNet 的数据类型替换为定点数据, 进行模型定点量化, 可以有效地减少深度学习模型的存储空间、计算量和功耗, 使得模型可以在嵌入式设备等资源受限的环境中进行部署和运行, 进一步加速改进型 LeNet 在 ZYNQ 异构平台上的 运行效率。同时, 由于 ZYNQ 平台具有低功耗和低成本的优势, 因此这种加速方法也具有很好的能 效比。

2 设计与实现

2.1 模型训练

本文针对 GTSRB 数据集, 使用改进型 LeNet 进行模型训练, 首先使用 python 语言在 pytorch 框架下进行训练。为了加强训练结果, 使训练更快地收敛, 在训练阶段融合如下模块。

1)Dropout 伪节点。Dropout 是减少模型过拟合风险的常用正则化技术。训练时, Dropout 会随机将部分神经元输出置为零, 使模型不依赖特定特征。本文在 3 层全连接层之间加入 Dropout 层。

2)Adam 优化器。优化器中采用 weight_decay参数, 用于 L2 正则化, 用来控制模型参数大小, 提高泛化能力, 防止过拟合。

3)ReduceLROnPlateau 学习率调度器。用于监控验证集损失, 无改善时减小学习率, 提高训练稳定性和效果。若模型性能停止提升, 降低学习率可助其跳出局部最小值, 优化参数。

2.2 数据预处理

GTSRB 数据集中的样本图像尺寸存在较大的差异, 样本数据中, 除标志区域外, 还包含周围约10%的环境区域。为了进一步改善数据集中图像的质量, 提高 LeNet 训练速度和识别效果, 对数据集的训练样本进行一系列预处理操作[17]

1)感兴趣区域裁剪。GTSRB 数据集中包含坐标文件, 用于提供 ROI(region of interest)坐标。利用这些坐标, 可以对数据集进行 ROI 剪裁, 转化为高质量数据集, 有利于模型的参数学习。

2)灰度化。GTSRB 数据集中的图像为 RGB 三通道彩色图像, 而 LeNet 的输入层为单通道输入。为简化模型, 本文将三通道彩色图像灰度化为单通道灰度图像进行训练。

3)尺寸归一化。GTSRB 数据集中的交通标志图像尺寸各异, 从 15×15 像素到 250×250 像素不等。为有效用于训练和测试改进型 LeNet 网络, 需进行尺寸归一化。本文将数据尺寸归一化到 28×28 像素, 确保所有图像具有相似的特征表示, 提高算法的准确性和稳定性。

4)数据归一化。交通标志图像像素值范围为[0, 255], 不同图像像素值分布不同。本文将像素值标准化为[–1, 1], 确保所有图像具有相似的像素值分布, 以便提高算法的鲁棒性和稳定性。

2.3 PL端加速器设计

HLS 是一种用于高级语言编程的硬件描述语言合成工具, 它允许使用高级语言 C++来描述硬件功能, 并将其转化为 IP 核来进行后续的逻辑综合和实现。使用数组分区和流水线的优化指令[18], 将改进型 LeNet 的网络结构在 HLS 中实现。采用 ARRAY_ PARTITION 指令, 对数组进行分区和存储优化, 将一个大的数组分割为多个较小的部分, 并将其存储在不同的存储区域。本文将所有变量按通道维度的数量完全展开为多个单一的数组, 并将这些数组分离到不同的 BRAM 中储存, 从而实现每个存储区域可以独立地进行访问和处理, 进而提高并行性。对于卷积嵌套循环, 在通道循环中插入多级流水线指令, 要求尽可能降低流水线周期, 使得总体性能达到最优。流水线工作流程如图 3 所示。

width=402.75,height=156.75

图3 流水线工作流程示意图

Fig. 3 Schematic diagram of assembly line operation

width=467.25,height=246.75

图4 硬件设计连接图

Fig. 4 Hardware design connection diagram

2.4 PS与PL交互

在 PS 与 PL 的 AXI 总线交互中, 存在 AXI 全功能、AXI-Lite 和 AXI-Stream 共 3 种总线协议。AXI全功能总线协议提供高性能、低延迟的数据传输以及复杂的事务管理。AXI-Lite 简化版用于连接简单的外设和寄存器, 仅提供基本读写功能。AXI-Stream 是流式数据传输接口, 用于实时图像的数据处理。

width=417,height=138

图5 训练集和测试集指标变化

Fig. 5 Index variation curves for training and testing sets

width=453.75,height=336.75

图6 GTSRB数据集43种分类总览

Fig. 6 Overview of 43 classifications in GTSRB dataset

如图 4 所示, 本文设计的硬件系统采用 DMA软核作为 PS 与 PL 交互的桥梁, 使用 AXI 总线与 PS部分的 DDR 进行高速数据传输, 使用 AXI-Stream接口与图像处理器进行实时图像的数据处理, 采用AXI4-Lite 接口与控制逻辑进行低延迟逻辑控制。这样的设计使得系统能够充分发挥 PS 部分 DDR 的高带宽特性, 通过 DMA 软核实现有效的数据传输, 同时利用 AXI Stream接口与图像处理器实现实时的图像数据处理, 并通过 AXI4-Lite 接口实现对控制逻辑的低延迟控制, 从而提高整个硬件系统的效率和性能。

3 结果分析

3.1 模型性能

在 Intel i5-12代CPU 和 NIVDIA GTX1080 GPU的计算机平台硬件环境下, 使用 Python 3.8 和PyTorch 1.12.1 软件环境, 对改进型 LeNet 进行训练。训练参数如下: Dropout 伪节点设置 0.2 的丢失率, 选用交叉熵作为损失函数评估指标, Adam 优化器初始学习率为 0.001, 权重衰退因子为 1.0×10–3, 学习率调度器的乘法因子为 0.2, 观察周期为 10, 批量大小为 64, 训练轮次为 80 轮。训练集精度为 99.34%, 测试集精度为 95.03%。训练集和验证集精度和损失值的指标变化如图 5 所示, GTSRB 数据集的 43 种分类类别如图 6 所示。

3.2 异构平台性能

本文使用的异构平台为 ZYNQ-XC7Z020 型号的 SoC 平台, 其中 FPGA 部分的型号为 XC7Z020-2CLG400I, MCU 采用主频为 666MHz 的 ARM Cortex-A9 处理器。在 PL 端 50MHz 的输入时钟下, FPGA 加速时延为 218047 个周期。改进型 LeNet 加速器的 IP 资源使用量如表 1 所示。在 Vivado 2018.3软件中对硬件系统设计进行分析和综合, 综合后的PL 端资源使用量和功耗如表 2 所示。

在 PYNQ 框架中, 使用 python 运行32位浮点全精度前向推理, 推理测试集中的 100 张图像, 耗时71s, 平均速度为 710ms/帧, 准确度为 97%。使用FPGA 加速器测试的全部数据集共 12630 张图像, 耗时 183s, 平均速度为 14.489ms/帧, 准确度为85.796%。与在 MCU 上推理相比, 本文设计的异构加速器加速比可达 49。与其他同在 GTSRB 数据集上运行的异构计算性能对比情况见表 3。可以看出, 在图像尺寸方面, 相较于常见的 32×32 像素, 本文选择的 28×28 像素不仅能够减少原始数据的使用量, 还能提高图像分类的有效性。在数据类型方面, 相较于复杂的浮点数运算, 本文采用定点数运算, 无需额外解码资源的占用, 在异构平台上的资源利用率更高, 同时降低数据位宽, 进一步提升数据的利用效率。在维持最大分类数量的前提下, 本文对GTSRB 数据集的全部测试集进行测试, 得到平均测速为 14.489ms/帧。与其他相关研究相比, 本文方法在更低的时钟频率下实现更小的加速时延, 同时减少识别速度, 降低运行功耗。

表1 LeNet加速器的IP资源使用量

Table 1 IP resource usage of LeNet accelerator

资源类型 使用量使用占比/% BRAM_18K6824 DSP48E7433 FF1199711 LUT3158459

表2 系统资源使用量和功耗

Table 2 System resource usage and power consumption

资源类型 使用量使用占比/%功耗/W BRAM_18K3222.861.874 DSP48E17780.45 FF1123010.55 LUT1396326.25 LUTRAM11926.85

表3 与相关文献在实验条件和结果上的对比

Table 3 Comparison with relevant literature on experimental conditions and results

文献 平台图像尺寸数据类型分类数时钟/MHz加速时延/周期速度/(ms·帧–1)功耗/W [5]PYNQ Z132FP3243––30– [6]ZYNQ-XC7Z02032FP321010083830756.88– [7]ZYNQ-XC7Z04532INT843250–256.95 [19]ZYNQ-XC7Z02028INT810250–21.51.965 本文ZYNQ-XC7Z02028FIX16435021816714.4891.874

4 结论

本研究在 ARM+FPGA 异构平台上实现改进型LeNet, 并对多种交通标志进行多分类实验。结果表明, 本文提出的加速器实现方案可以显著提高改进型 LeNet 在ZYNQ异构加速平台上的运行速度, 同时保持较高的分类准确率。在 GTSRB 数据集上的实验结果显示, 在工作时钟频率为 50MHz 时, 平均推理时间为 14.489ms, 在 MCU 上的推理时间为710ms, 加速比可达 49, 同时可以保持 85%以上的分类准确率。本文的加速器设计实现了更小的输入图像尺寸、更直接的数据类型、更低的时钟要求以及更显著的加速效果。

参考文献

[1] Stornaiuolo L, Santambrogio M, Sciuto D. On how to efficiently implement deep learning algorithms on PYNQ platform // IEEE Computer Society Annual Symposium on VLSI (ISVLSI). Hong Kong, 2018: 587–590

[2] Dai Rongshi, Tang Yongming. Accelerator implemen-tation of Lenet-5 convolution neural network based on FPGA with HLS // 2019 3rd International Conference on Circuits System and Simulation (ICCSS). Nanjing, 2019: 64–67

[3] Wang E, Davis J J, Cheung P Y K. A PYNQ-based framework for rapid CNN prototyping // IEEE 26th Annual International Symposium on Field-Program-mable Custom Computing Machines (FCCM). Boulder, 2018: 223–223

[4] Yao Yuchen, Zhang Zhiqian, Yang Zhen, et al. FPGA-based convolution neural network for traffic sign re-cognition // IEEE 12th International Conference on ASIC (ASICON). Guiyang, 2017: 891–894

[5] Maraoui A, Messaoud S, Bouaafia S, et al. PYNQ FPGA hardware implementation of LeNet-5-based tra-ffic sign recognition application // International Multi-Conference on Systems, Signals & Devices (SSD). Monastir, 2021: 1004–1009

[6] Liu Juan, Zhang Zhigang, Zheng Longhao, et al. Tra-ffic sign recognition based on ZYNQ // International Symposium on Next Generation Electronics (ISNE). Changsha, 2021: 1–3

[7] Kim J, Kang J, Kim Y. A low-cost fully integer-based CNN accelerator on FPGA for real-time traffic sign recognition. IEEE Access, 2022, 10: 84626–84634

[8] 赵泽毅, 周福强, 王少红, 等. 应用双通道卷积神经网络的交通标识识别方法. 中国测试, 2024, 50 (6): 35–41

[9] Lo C Y, Sham C W. Energy efficient fixed-point infer-ence system of convolutional neural network // IEEE 63rd International Midwest Symposium on Circuits and Systems (MWSCAS). Springfield, 2020: 403–406

[10] Özkilbaç B, Ozbek I Y, Karacali T. Real-time fixed-point hardware accelerator of convolutional neural network on FPGA based // International Conference on Computing and Informatics (ICCI). Cairo, 2022: 1–5

[11] Cho M, Kim Y. Implementation of data-optimized FPGA-based accelerator for convolutional neural net-work // International Conference on Electronics, Infor-mation, and Communication (ICEIC). Barcelona, 2020: 1–2

[12] Vadera S, Ameen S. Methods for pruning deep neural networks. IEEE Access, 2022, 10: 63280–63300

[13] Reiners M, Malena K, Heldmann F, et al. Efficient and sparse neural networks by pruning weights in a mul-tiobjective learning approach. Computers & Opera-tions Research, 2022, 141: 105676

[14] Pei S, Wu Y, Guo J, et al. Neural network pruning by recurrent weights for finance market. ACM Transac-tions on Internet Technology (TOIT), 2022, 22(3): 1–23

[15] 李放, 曹健, 李普, 等. 基于ARM+FPGA异构平台的目标检测加速模块设计与实现. 北京大学学报(自然科学版), 2022, 58(6): 1035–1041

[16] 徐鹏涛, 曹健, 陈玮乾, 等. 基于离群值去除的卷积神经网络模型训练后量化预处理方法. 北京大学学报(自然科学版), 2022, 58(5): 808–812

[17] 伍锡如, 雪刚刚. 基于图像聚类的交通标志CNN 快速识别算法. 智能系统学报, 2019, 14(4): 670–678

[18] 谢豪, 曹健, 李普, 等. 基于FPGA的SSD目标检测硬件加速器设计. 北京大学学报(自然科学版), 2022, 58(6): 1015–1022

[19] Chen Yang, Xu Gaomiao, Chen Lin, et al. Research and FPGA implementation of convolutional neural network accelerator // 2023 IEEE 6th International Conference on Pattern Recognition and Artificial Intelligence (PRAI). Haikou, 2023: 1057–1064

Implementation of an Improved LeNet Traffic Sign Multi-classification Heterogeneous Accelerator

YANG Yongjie, ZHENG Juntai, MA Li, YANG Hao

School of Information Science and Technology, Nantong University, Nantong 226019; † E-mail: yang.yj@ntu.edu.cn

Abstract An implementation of traffic sign multi-classification heterogeneous accelerator based on improved LeNet is proposed. The accelerator utilizes an ARM+FPGA heterogeneous platform to deploy the forward inference of the improved LeNet on the FPGA for parallel computing. On the FPGA side, the AXI-Stream protocol is employed with DMA to achieve high-speed data streaming, and techniques such as array partitioning and multi-level pipeline are utilized for parallel data processing. On the ARM side, the PYNQ framework is used for data updates and accelerator scheduling. Experimental results on GTSRB demonstrate that proposed design achieves an average inference time of 14.489 ms at a working clock frequency of 50 MHz, compared to 710 ms on the MCU, resulting in a speedup of up to 49 times. This design provides significant assistance for edge applications involving traffic sign multi-classification.

Key words LeNet; FPGA; PYNQ; heterogeneous computing