基于BWN的FPGA加速器设计

基于二值权重网络的现场可编程门阵列CNN加速器

摘要

目前,卷积神经网络在执行物体识别任务时表现出良好的性能,但其依赖于GPU来解决大量复杂的运算。因此,神经网络的硬件加速器已成为硬件研究人员关注的核心课题。本文介绍了一种基于FPGA的神经网络加速器设计,该设计实现于赛灵思 Zynq‐7020 FPGA 上。我们使用二值化的LeNet模型在 MNIST数据集上实现了91%的准确率,并使用二值化的 AlexNet模型在CIFAR‐10数据集上实现了67%的准确率。同时,硬件资源占用仅约为原始设计在FPGA上资源使用的10%。

I. 引言

卷积神经网络(CNN)模型需要大量级的存储器和寄存器,以及大量的计算资源[1]。这使得在嵌入式系统中实现CNN模型变得困难。为了减少存储和计算资源的使用,[2]提出了两种方法:二值权重网络(BWN)和 XNOR‐Net。BWN使用缩放因子来减小二值化权重与原始权重之间的差异,从而比BC保持更高的识别准确率。XNOR‐Net不仅对权重进行二值化,还对输入数据进行二值化。尽管XNOR‐Net可以大幅降低硬件资源的使用,但其精度损失较高,不利于许多应用。

近年来,已提出多种二值权重卷积神经网络硬件架构。[3]提出了一种基于BinaryConnect的硬件架构,称为 YodaNN。由于采用简单的补码运算和多路复用器替代复杂的乘法累加运算,YodaNN所需的面积和能耗相对较小。[4]提出了一种名为FINN的硬件架构,这是一种为BNN构建的现场可编程门阵列加速器,能够在ZC706 FPGA上实现模型到硬件的高效映射与部署。

本文提出了一种基于二值权重网络(BWN)的硬件加速器,采用[2]训练策略,并对批归一化进行二值化以减少计算量。此外,通过增加神经网络规模[5]可提高系统准确率。我们还比较了定点16位权重与二值化权重设计之间的差异。所提出的架构应用于LeNet、AlexNet和 VGG‐16,并在MNIST、CIFAR‐10和CIFAR‐100数据集上进行了验证。对于MNIST、CIFAR‐10和CIFAR‐100数据集,二值化权重模型的识别准确率分别可达91%、67% 和52%。

II. 硬件架构

系统架构图如图1所示。我们共享卷积层和全连接层的硬件架构以减少硬件资源,并通过控制器控制输入数据的维度和大小、滤波器大小,以及启动卷积层、全连接层或最大池化。CNN权重模块和FC权重模块被构建为 ROM,用于存储训练好的模型权重。乒乓RAM是双端口随机存取存储器,用于存储临时特征图,且在每一层中乒乓会切换输出/输入对。临时特征图通过遵循[6]设计的 DDR控制器传输到DDR3。最后,SoftMax层根据前一层的结果找出最大值,同时控制器也输出一个有效信号。

示意图0

我们使用16位定点权重和二值化权重进行每项工作,以比较其准确率与硬件资源的差异。由于卷积操作的计算密度高于全连接层,我们主要介绍卷积层的硬件架构。我们将分别介绍通用卷积架构和二值化权重的卷积架构。

A. 通用卷积层的硬件架构

通用卷积层的硬件架构如图2所示。首先,流控制器读取输入数据和权重数据并将其放入缓冲区。特征缓冲区由移位寄存器组成,当缓冲区满时,可以连续执行操作。当处理单元完成乘法操作后,加法树对结果进行求和并传输到池化模块,同时处理单元采用流水线设计,可同时处理下一个输入。

B. 二值权重卷积层的硬件架构

与第一种设计类似,BWN使用二值化权重,其方程如 (1)所示,参考[2]。W是原始权重,可以通过αB来近似,其中α是W的平均值,B是W的符号。在训练策略中,α和 B用于前向传播阶段的结果计算,而近似权重αB则用于反向传播阶段的权重更新。因此,我们用乘加单元(MAU)替代了乘法器。在此设计中,允许16个乘加单元并行处理,以减少卷积操作时间,因为在第一种设计中,权重为16位定点数,所以我们读取16个通道的二值化权重,从而使用与第一种设计相同的存储模块。这使得第二种设计能够同时执行16位定点数权重的卷积操作和二值化权重的卷积操作。

$$ y $$

III. 实验结果

为了实现硬件加速器,我们使用包含赛灵思 Zynq‐7020 FPGA 的 EGO‐XZ7 开发板。通过 UART接口 将输入图像从 PC 传输到开发板,并由 DDR控制器 将流图像保存到 DRAM 中。然后命令解码器触发硬件加速器从 DRAM 读取图像到片上内存,启动卷积和全连接操作,并将临时特征图保存到 DRAM。完成所有计算后,结果通过响应模块发送回 PC。

表I和表II展示了我们设计的结果,我们提出了两种实现方案以验证加速器设计,一种是通用CNN(GCNN),另一种是二值权重CNN(BCNN)。使用了三个模型来验证这两种硬件设计之间的差异。在硬件资源的比较方面,GCNN 和BCNN均被设计为使用相同的乘加单元数量,以确保帧率相同。可以发现,层数越多,BCNN引起的精度损失越高,但硬件资源的使用量会更低。

然而,在许多应用中,更深的神经网络的准确率损失难以接受,这是一种权衡。

IV. 结论

在本文中,我们提出了两种架构,用于加速神经网络的推理阶段,同时保持其最高的准确率。第一种是通用的卷积神经网络硬件加速器,第二种是采用二值化权重以减少硬件加速器的计算量和硬件资源占用。最后,我们在赛灵思 Zynq‐7020 FPGA 上实现了我们的设计,具有较低的硬件资源占用。

表I. 二值化卷积神经网络(BCNN)的结果
Mereices BCNN
模型 LeNet AlexNet VGG‐16
数据集 MNIST CIFAR‐10 CIFAR‐10
Tech Zynq 7Z020 FPGA
频率 100兆赫兹
FP 1位
BRAM 4 11.5 32
DSP48E 11 12 18
FF 970 1,678 1,705
LUT 2,998 8,761 11,671
准确率 91% (‐5.7%) 67.1% (‐7.1%) 44.3% (‐15.3%)
帧率(赫兹) 1570 154 21
表II. GCNN结果
Mereices GCNN
模型 LeNet AlexNet VGG‐16
数据集 MNIST CIFAR‐10 CIFAR‐10
Tech Zynq 7Z020 FPGA
频率 100兆赫兹
FP 16位
BRAM 16.5 75 221
DSP48E 13 16 20
FF 3,316 10,357 10,525
LUT 10,390 36,278 60,674
准确率 96.7% 74.2% 59.6%
帧率(赫兹) 1570 154 21
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点探讨其系统建模与控制策略,结合Matlab代码与Simulink仿真实现。文章详细分析了无人机的动力学模型,特别是引入螺旋桨倾斜机构后带来的全驱动特性,使其在姿态与位置控制上具备更强的机动性与自由度。研究涵盖了非线性系统建模、控制器设计(如PID、MPC、非线性控制等)、仿真验证及动态响应分析,旨在提升无人机在复杂环境下的稳定性和控制精度。同时,文中提供的Matlab/Simulink资源便于读者复现实验并进一步优化控制算法。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真经验的研究生、科研人员及无人机控制系统开发工程师,尤其适合从事飞行器建模与先进控制算法研究的专业人员。; 使用场景及目标:①用于全驱动四旋翼无人机的动力学建模与仿真平台搭建;②研究先进控制算法(如模型预测控制、非线性控制)在无人机系统中的应用;③支持科研论文复现、课程设计或毕业课题开发,推动无人机高机动控制技术的研究进展。; 阅读建议:建议读者结合文档提供的Matlab代码与Simulink模型,逐步实现建模与控制算法,重点关注坐标系定义、力矩分配逻辑及控制闭环的设计细节,同时可通过修改参数和添加扰动来验证系统的鲁棒性与适应性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值