在微控制器上比较行业框架与深度量化神经网络
摘要
与普遍认知不同,工业界对超低功耗神经网络的探索才刚刚起步。例如,开放社区如TinyML和TinyMLPerf正在努力推进面向微控制器(MCU)的机器学习(ML)深度学习框架及相关应用。然而,针对支持超低精度机器学习的深度学习框架和应用却鲜有关注,而这些技术正是实现微瓦级硬件实现的关键。本文旨在比较两个支持深度量化的深度学习框架—— QKeras和Larq,这两个框架分别抽象了TensorFlow和 Keras框架。目前,TensorFlow是研究界和工业界在部署现场机器学习时最常用的深度学习工具之一。本文展示了两个基于深度量化神经网络的应用:利用混合二值神经网络(HBN)实现的人体活动识别(HAR),以及基于混合二值自编码器(HBAE)的工业4.0异常检测。文章将讨论这两个框架在上述应用中的优缺点。实验结果表明,HBN的准确率最高可达 98.6%,HBAE的峰值信噪比(PSNR)最高可达111.2。此外,还在不同的基于ARM的架构上测量了推理时间。
关键词 ——机器学习,深度量化神经网络,超低功耗,深度学习框架。
I. 引言
近年来,机器学习(ML)算法在许多任务中表现出色。在众多的机器学习算法中,人工神经网络(ANN)在分类任务中表现最佳,而自编码器(AE)由于其良好的逼近能力,成为异常检测的一种有前景的技术。通常,这些模型需要大量内存来存储所有参数,并且具有较高的计算复杂度。它们通常部署在云端,依赖昂贵、高性能且高功耗的硬件来运行。MLPerf推理基准的结果提供了此类硬件的示例,该基准定义了三个测试套件,分别用于数据中心系统、边缘系统和移动系统。在所有情况下,这些系统的硬件规格远高于资源受限的微控制器,而在微控制器上可用的内存非常有限,且无法进行并行计算。
可以执行。然而,目前正大力推动在资源受限的嵌入式设备 (如低功耗微控制器)上部署机器学习模型,以实现高效的AI边缘计算[4]。在这方面,TinyML和TinyMLPerf社区[5]提出了许多由社区驱动的解决方案,用于在边缘部署机器学习。但通过采用深度量化神经网络[6],可以找到更为激进的解决方案。这些网络仅使用k位来存储激活值、权重和偏置。在深度量化神经网络中,二值神经网络(BNNs)[7]在内存资源需求方面具有最大优势,仅需1位即可存储激活值、权重和偏置。本文从BNN出发,构建并评估了两种不同的混合型 (即包含二进制和k位权重与激活值)机器学习模型:混合二值神经网络(HBN)[8]和混合二值自编码器(HBAE)。
据我们所知,这是文献中首次提出具有二值权重的自编码器。HBN用于人体活动识别(HAR),而HBAE用于异常检测。挑战在于,在保持高准确率的同时,尽可能降低机器学习模型对内存和只读存储器的存储占用。为实现这一目标,本文采用了两种新的深度学习框架:Larq[9]和QKeras[10]。这些框架允许开发者通过修改原始模型中的部分结构,同时保持其余部分不变,从而轻松地将全精度Keras模型进行量化。特别是,它们为机器学习开发者提供了选择需要量化的层以及所使用的量化算法的能力。这两种框架均提供保存和加载二值权重的方法。HBN和HBAE均使用Larq和 QKeras建模,并在公开数据集上测试时对准确率进行了详细比较。进一步的比较还涵盖了在树莓派4型B版所用的ARM Cortex‐A CPU、ARM Cortex‐M4以及ARM Cortex‐M7微控制器上的推理时间。
II. HBN 和 HBAE 模型
开发了两个模型来比较Larq和QKeras在准确率和推理时间方面的性能:HBN和HBAE模型。它们将在下文进行描述。
A. 混合二值神经网络(HBN)
HBN 最初使用 Lasagne [12] 在 [13], 中编写,本文中已在 Larq [9] 和 QKeras [10] 中重新实现。研究了三种不同的拓扑结构,以探讨量化对模型准确率的影响。这些拓扑结构在表一、表二、表三和表四中进行了详细说明,其中通过为每一层指定以下内容来描述网络拓扑:输出形状、32位浮点权重加偏置的数量,以及1位浮点权重加偏置的数量。这三种拓扑结构总结如下:
a) HBN-A :该拓扑结构等同于[13]中的HBN。它是一个5层人工神经网络,其中~5%的权重和偏置为二进制,如表一所述。
b) HBN-B :与HBN‐A相比,在此拓扑结构中,量化步骤被移至第一个全连接层,以使1位权重和偏置的数量相较于全精度参数更多。实际上,在此网络中,~95%的权重和偏置为二进制。详见表 II。
c) HBN-C :该拓扑结构通过二值化所有激活值(包括第一个激活值)来最大化1位权重的数量。该拓扑结构在表 III 中进行了总结。
d) HBN-D :该拓扑结构的设计旨在完全避免使用32位浮点值。所有权重和偏置均采用Qmn量化,通过混合使用1位、16位和32位字长表示,如表 IV 所示。具体而言,所有权重以1位表示,而所有偏置以16位表示。另一方面,批归一化层的参数以32位表示。除非另有说明,每层的输出激活值均被量化为16位。由于Larq缺乏Qmn量化支持, HBN‐D仅使用QKeras实现。
需要注意的是,在每个量化步骤之前都添加了一个批归一化层,以将信息的高斯分布形状调整到零附近[14]。这有助于限制二值化引入的误差。
B. 混合二值自编码器(HBAE)
HBAE是一种自编码器模型,其中~72%的权重如表五所示被二值化。HBAE的结构基于HBN。更具体地说, HBAE的编码器阶段采用HBN拓扑结构,而解码器阶段则具有对称结构。通过利用HBN模型设计中获得的专业知识,HBAE仅考虑了一种网络拓扑结构。该拓扑结构基于HBN‐A,在编码器中使用两个二维卷积层,后接最大池化和全连接层。对于解码器,采用相同的方法,使用全连接和二维卷积层。编码器中有两个二值化层,解码器中有一个二值化层。
III. Larq 与 QKeras
Larq 和 QKeras 这两个框架已被用于实现 HBN 和 HBAE,并在下一节所述的公开数据集上对其进行测试。为了采用与原始 Lasagne 网络类似的方法,量化基于符号层进行。对于每种拓扑结构,量化算法
HBN‐A | 输出形状 | Larq | Larq | QKeras | QKeras |
---|---|---|---|---|---|
HBN‐A | 输出形状 | 32位 1位 | 32位 1位 | ||
二维卷积 | 6 x 20 x 8 | 40 | 0 | 40 | 0 |
批归一化 | 6 x 20 x 8 | 64 | 0 | 64 | 0 |
量化二 维+卷积 | 6 x 16 x 8 | 8 | 328 | 0 | 328 |
最大池化 + ReLU | 192 | - | - | - | - |
全连接 | 64 | 12352 | 0 | 12352 | 0 |
批归一化 | 64 | 128 | 0 | 128 | 0 |
量化全 +连接 | 4 | 4 | 256 | 0 | 260 |
表一. HBN‐A 拓扑结构的详细信息,包含 Larq 和 QKeras 的权重 + 偏置
HBN‐B | 输出形状 | Larq | Larq | QKeras | QKeras |
---|---|---|---|---|---|
HBN‐B | 输出形状 | 32位 1位 | 32位 1位 | ||
二维卷积 | 6 x 20 x 8 | 40 | 0 | 40 | 0 |
批归一化 | 6 x 20 x 8 | 64 | 0 | 64 | 0 |
量化 + 二维卷积 | 6 x 16 x 8 | 8 | 320 | 0 | 328 |
最大池化 + ReLU | 192 | - | - | - | - |
批归一化 | 192 | 384 | 0 | 384 | 0 |
量化 + 全连接 | 64 | 64 | 12288 | 0 | 12352 |
全连接 | 4 | 260 | 0 | 260 | 0 |
表 II. HBN‐B 拓扑结构的详细信息,包含 Larq 和 QKeras 的权重 +偏置
HBN‐C | 输出形状 | Larq | Larq | QKeras | QKeras |
---|---|---|---|---|---|
HBN‐C | 输出形状 | 32位 1位 | 32位 1位 | ||
量化 + 二维卷积 | 6 x 20 x 8 | 0 | 40 | 0 | 40 |
批归一化 | 6 x 20 x 8 | 64 | 0 | 64 | 0 |
量化 + 二维卷积 | 6 x 16 x 8 | 8 | 320 | 0 | 328 |
最大池化 + ReLU | 192 | - | - | - | - |
批归一化 | 192 | 384 | 0 | 384 | 0 |
量化 + 全连接 | 64 | 64 | 12288 | 0 | 12352 |
量化 + 全连接 | 4 | 4 | 256 | 0 | 260 |
表 III. HBN‐C 拓扑结构的详细信息,包含 Larq 和 QKeras 的权重 +偏置。
HBN‐D | 输出 形状 | 权重 | bias | #权重 / #偏置 |
---|---|---|---|---|
二维卷积 | 6×20×8 | 1 | 8.8 | 40/0 |
批归一化 | 6×20×8 | 16.16 | 16.16 | 32/32 |
激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) |
二维卷积 | 6×16×8 | 1 | 8.8 | 320/8 |
最大池化 + 量化ReLU | 6×4×8 | 12.4 | 12.4 | - |
全连接 | 64 | 1 | 12.4 | 12288/64 |
批归一化 | 64 | 20.12 | 20.12 | 64/64 |
激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) |
全连接 | 4 | 1 | 12.4 | 256/4 |
表 IV. HBN‐D 拓扑结构详细信息,权重 +偏置采用 Qmn 规范。
位数用于
位数用于
授权许可使用仅限于:卡尔顿大学。于2021年6月14日由IEEE Xplore下载,UTC时间20:59:19。适用限制。
将32位浮点精度的权重和偏置转换为1位值的方法经过了精心选择。此外,对于HBAE,还制作了一个版本,其权重、偏置和激活值均使用Qmn进行量化,方式与HBN‐D类似。该版本被称为HBAE‐D,并在表VI中详细说明。本节所示的所有结果均参考表VII中列出的测试条件。
A. Larq中的二值化
Larq 提供了不同的方式来实现符号层:SteSign [15], 、 ApproxSign [16], 、SwishSign [17]。这 3 种变体分别应用于 HBN‐A、‐B‐、‐C 和 HBAE‐A 拓扑结构上。因此,在 HBN 模型和 HBAE 模型上分别运行了 9 次测试和 3 次测试。
B. QKeras中的二值化
二进制和随机二值 [10]已在QKeras中使用,尝试选择与Larq中最相似的实现。对于Larq,这两种量化变体已应用于HBN‐A、‐B、‐C、‐D以及HBAE‐A、‐D,总共运行了12个不同的测试。与Larq不同的是,QKeras还允许对偏置和权重同时进行量化;因此,32/1位的数量与Larq生成的不同,从而导致存储训练模型所需的内存也不同。
IV. 数据集
选择了一些公开数据集来评估机器学习模型在准确率方面的性能。具体而言,选择了PAMAP2数据集[18]和SHL数据集[19]来测试HBN模型在人类活动识别任务上的表现。CWRU数据集 [20],[21]被用于测试HBAE模型在异常检测任务上的表现。有关这些数据集及其使用方式的详细信息将在后续章节中提供。
A. PAMAP2
PAMAP2数据集[18]提供了9名受试者执行12种标准身体活动的数据,这些受试者佩戴了3个惯性测量单元(IMU)和 1个心率传感器。每个IMU以100赫兹的频率采样,并可放置在3个可能的位置:手、胸部和脚踝。使用了位于手位置的三维加速度计和三维陀螺仪的测量数据。对数据进行了从100赫兹到16赫兹的降采样处理,并通过将所有数据除以9.81实现了1G加速度缩放。从12种活动中,根据可用样本数量选择了四种活动(站立、行走、跑步和骑车)。在选择四个类别后,数据集仍然不平衡,因此进行了数据增强:
- 选择样本数量最多的活动,并计算为平衡其他三个类别的样本数量。
- 随机选择足够数量的样本,以使每个类别的样本数与最多的一类相平衡。
- 复制选定的元素并将其添加到数据集中。
在此过程结束时,生成了四个平衡的类别,每个类别包含 54,530 个样本。
B. SHL
SHL数据集[19]包含了750小时的标注的运动数据,这些数据由3名用户在7个月期间参与8种不同的交通方式时收集。该数据集包含来自可穿戴摄像头和4部智能手机的多模态数据,这些设备同时携带在典型的身体位置(即包、手、臀部和躯干)。所有数据均以100赫兹采样。至于PAMAP2数据集,SHL数据集已经
层 | 输形出状 | Larq | Larq | QKeras | QKeras |
---|---|---|---|---|---|
层 | 输形出状 | 32位 | 1位 | 32位 | 1位 |
二维卷积 | 1 x20 x 8 | 40 | 0 | 40 | 0 |
批归一化 | 1 x20 x 8 | 16 | 0 | 16 | 0 |
量化二 维+卷积 | 1 x16 x 8 | 8 | 320 | 0 | 328 |
最大池化 | 1 x 4 x 8 | - | - | - | - |
全连接 | 1 x 4 x 32 | 260 | 0 | 260 | 0 |
批归一化 | 1 x 4 x 32 | 64 | 0 | 64 | 0 |
量化全 +连接 | 16 | 32 | 2048 | 0 | 2080 |
全连接 | 32 | 544 | 0 | 544 | 0 |
批归一化 | 32 | 64 | 0 | 64 | 0 |
重塑 +上采样 | 1 x 24 x 8 | - | - | - | - |
量化 + 二维卷积 | 1 x 20 x 8 | 8 | 320 | 0 | 328 |
二维卷积 | 1 x 24 x 1 | 40 | 0 | 40 | 0 |
表五. HBAE‐A拓扑结构的详细信息,包含Larq和QKeras的权重+偏置
HBAE‐D | 输形出状 | 位数用于 权重 | 位数用于 权重 | 偏置位数 | #weights / #偏置 |
---|---|---|---|---|---|
二维卷积 | 1×20×8 | 1 | 1 | 8.8 | 40/0 |
批归一化 | 1×20×8 | 16.16 | 16.16 | 16.16 | 8/8 |
激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) |
二维卷积 | 1×16×8 | 1 | 1 | 8.8 | 320/8 |
最大池化 + Relu | 1×4×8 | 12.4 | 12.4 | 12.4 | - |
全连接 | 32 | 1 | 1 | 12.4 | 1024/32 |
批归一化 | 32 | 20.12 | 20.12 | 20.12 | 32/32 |
激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) |
全连接 | 16 | 1 | 1 | 12.4 | 512/16 |
激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) |
全连接 | 32 | 1 | 1 | 12.4 | 512/16 |
批归一化 | 32 | 20.12 | 20.12 | 20.12 | 64/64 |
批归一化 | |||||
激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) | 激活(二值) |
重塑 +上采样 | 1×24×8 | - | - | - | - |
二维卷积 +修正线性单 元 | 1×20×8 | 1 | 8.8 | 8.8 | 320/8 |
二维卷积 | 1×24×1 | 1 | 8.8 | 8.8 | 40/8 |
表VI. HBAE‐D 拓扑结构的详细信息,包含 +偏置 的 Qmn 规范。
授权许可使用仅限于:卡尔顿大学。于2021年6月14日 UTC 时间 20:59:19 从 IEEE Xplore 下载。适用限制。
按照相同的流程进行了平衡和降采样处理,并且数据已通过9.81进行了归一化。最后,所有8个类别都用于分类。
C. CWRU
在CWRU数据集中,使用安装在外壳上的16位精度加速度计采集了来自2马力电机的振动数据。测试轴承引入了 5种不同故障直径的单点故障。在4种不同转速下,针对驱动端和风扇端轴承实验以12,000 样本/秒的频率采集数据。此外,还提供了无故障电机的数据,用作正常状态。“12 驱动端故障”对应的电机转速为1797 RPM 被用作异常状态,并对 PAMAP2 和 SHL 进行了随机数据增强。
V. 准确率结果
表VIII和表IX分别针对Larq和QKeras,展示了 HBN模型在PAMAP2和SHL数据集上的准确率结果。这些表格还显示了存储网络所需的内存。所需内存是通过公式 (1)计算得出的:
$$
\text{Memory [KiB]} = \frac{(w_{fp} \times 32 + b_{fp} \times 32 + w_b \times 1 + b_b \times 1)}{8 \times 1024}
$$
(1)
其中 $w_{fp}$ 是32位权重的数量,$b_{fp}$ 是32位偏置的数量,$w_b$ 是1位权重的数量,而 $b_b$ 是1位偏置的数量。
值得注意的是,量化算法对网络准确率的影响较小。HBN‐A与HBN‐B在占用内存方面的差异显著,HBN‐B的内存占用减少了超过一个数量级,同时保持了相近的测试准确率。这一效果是由于在网络拓扑中具有最多权重的倒数第二密集层进行了二值化。Larq训练的模型与QKeras训练的模型在内存使用上的微小差异,源于QKeras不仅能够对权重进行二值化,还可以对偏置进行二值化。因此,使用Larq进行的测试也同时进行了无偏置版本,其特点是准确率较低,由于篇幅限制未包含在论文中。
表X和表XI分别报告了HBAE模型在Larq和QKeras中的测试结果。HBAE尝试对CRWU数据集的数据进行编码和解码,其性能通过峰值信噪比(PSNR)进行评估。PSNR测量能够帮助理解在底层网络信号处理过程中输入信号丢失了多少信息。完整公式见(2):
$$
\text{PSNR} = 20 \log_{10} \left( \frac{\text{Max}(i)}{\sqrt{\text{MSE}}} \right)
$$
(2)
其中 $\text{Max}(i)$ 是 $2^{16}$,即本例中惯性输入数据的最大比特值。均方误差(MSE)是在网络输入之间计算的。
参数 | PAMAP2 | SHL | CWRU |
---|---|---|---|
TensorFlow版本 | 2.3.0 | 2.3.0 | 2.3.0 |
Keras版本 | 2.4.3 | 2.4.3 | 2.4.3 |
Larq版本 | 0.10.0 | 0.10.0 | 0.10.0 |
QKeras版本 | 0.8.0 | 0.8.0 | 0.8.0 |
实验数量 | 3 | 3 | 3 |
优化器 | ADAM | ADAM | ADAM |
学习率 | 从3e‐3到3e‐7 | 从3e‐3到3e‐7 | 从3e‐3到3e‐7 |
指标 | 准确率 | 准确率 | 准确率 |
批量大小 | 500 | 500 | 100 |
携带位置 | Hand | Bag | 驱动端 |
训练轮数 | 30 | 60 | 90 |
K折验证 | 10 | 5 | 5 |
Loss | 均方误差 | 平方合页误差 | 均方误差 |
表VII. 训练期间使用的框架规格和设置。
拓扑结构 | 二值化 算法 | 使用QKeras的测试准确率 QKeras | 使用QKeras的测试准确率 QKeras | 内存 [千字节] |
---|---|---|---|---|
拓扑结构 | 二值化 算法 | PAMAP2 | SHL | 内存 [千字节] |
HBN‐A | 二进制 | 98.5 ± 1.2 | 96.0 ± 1.6 | 50 |
HBN‐A | 随机二进制 | 98.6 ± 0.6 | 92.4 ± 1.5 | 50 |
HBN‐B | 二进制 | 97.5 ± 1.6 | 92.8 ± 1.3 | 4.1 |
HBN‐B | 随机二进制 | 96.8 ± 1.1 | 91.4 ± 0.5 | 4.1 |
HBN‐C | 二进制 | 95.5 ± 4.3 | 78.8 ± 2.6 | 1.8 |
HBN‐C | 随机二进制 | 96.8 ± 3.8 | 79.4 ± 0.5 | 1.8 |
HBN‐D | 二进制 | 95.8 ± 3.1 | 95.4 ± 1.9 | 2.5 |
HBN‐D | 随机二进制 | 96.4 ± 2.9 | 95.0 ± 0.8 | 2.5 |
表IX. 不同拓扑结构和二值化算法下HBN在QKeras中的准确率结果。
拓扑结构 | 二值化 算法 | 使用QKeras的测试准确率 Larq | 使用QKeras的测试准确率 Larq | 内存 [千字节] |
---|---|---|---|---|
拓扑结构 | 二值化 算法 | PAMAP2 | SHL | 内存 [千字节] |
HBN‐A | SteSign | 97.5 ± 1.4 | 93.0 ± 0.6 | 50 |
HBN‐A | ApproxSign | 97.7 ± 0.8 | 90.0 ± 0.3 | 50 |
HBN‐A | SwishSign | 97.0 ± 0.8 | 90.0 ± 5.0 | 50 |
HBN‐B | SteSign | 96.1 ± 0.9 | 94.2 ± 1.8 | 4.2 |
HBN‐B | ApproxSign | 97.0 ± 1.1 | 90.2 ± 4.1 | 4.2 |
HBN‐B | SwishSign | 96.3 ± 1.9 | 91.7 ± 1.8 | 4.2 |
HBN‐C | SteSign | 94.6 ± 3.4 | 83.7 ± 3.3 | 3.5 |
HBN‐C | ApproxSign | 93.2 ± 4.9 | 80.0 ± 4.2 | 3.5 |
HBN‐C | SwishSign | 89.2 ± 5.2 | 78.0 ± 3.7 | 3.5 |
表VIII. HBN在LARQ中不同拓扑结构和二值化算法的准确率结果。
Larq PSNR | 内存 [KiB] | 二值化算法 |
---|---|---|
110.5 ± 0.3 | 4.3 | SteSign |
110.5 ± 0.4 | 4.3 | ApproxSign |
110.2 ± 0.4 | 4.3 | SwishSign |
表X. 不同二值化算法在LARQ中对CWRU数据集上HBAE的PSNR。
拓扑结构 QKeras | 峰值信噪比 | 内存 [千字节] | 二值化算法 |
---|---|---|---|
HBAE‐A | 111.2 ± 0.5 | 4.0 | 二进制 |
HBAE‐A | 110.9 ± 0.4 | 4.0 | 随机二值 |
HBAE‐D | 110.3 ± 0.4 | 2.0 | 二进制 |
HBAE‐D | 110.3 ± 0.3 | 2.0 | 随机二进制 |
表XI. 不同二值化算法下HBAE在CWRU数据集上QKeras中的PSNR。
授权许可使用限于:卡尔顿大学。于2021年6月14日UTC时间20:59:19从IEEE Xplore下载。适用限制。以及近似输出,其中网络的输入固定为24个样本。正如预期,二值化算法并未显著影响网络准确率,且如前所述,内存差异应归因于QKeras也能够对偏置进行二值化的能力。
VI. 推理时间结果
HBN和HBAE均已部署在不同的基于ARM的架构上,以测量推理时间。最初,推理在树莓派上运行。结果显示速度较慢,如表XII和表XIII所示。因此,我们从头开始编写了一个C语言库的实现,用于在资源受限的微控制器 STM32F401RE [22]和STM32H743 MCU [23] 上实现并运行HBN和HBAE。这使我们能够实现更快的执行速度,并深入了解二进制网络可以优化到何种程度。
A. 在树莓派4型B上测试
在树莓派4型B设备上测量了HBN和HBAE的推理速度,该设备搭载四核Cortex‐A72(ARM v8)和8GB LPDDR4‐3200 SDRAM,仅使用了一个核心。Larq库提供了一种名为Larq计算引擎(LCE)[24]的优化引擎,可将使用Larq训练的网络转换为能由LCE解释的优化版本。然而,LCE仅支持64位架构的设备,因此由于我们所使用的树莓派缺乏64位版本的树莓派操作系统[25],无法安装 LCE。此外,QKeras库未提供针对其网络的优化引擎。因此,为了在两者之间进行一致的测试,我们采用了标准的 Keras运行时。对于每个模型,均运行了evaluate函数,并使用Python的time库在相同数量的测试集上计算执行时间。表XII中报告了测试的详细信息以及所用框架的版本,这些版本与训练阶段使用的版本相同。平均推理时间是基于10 次实验计算得出的。结果如表XIII所示,其中根据表VIII 和表IX的结果为每种拓扑结构选择了最佳的二值化算法。时钟频率设置为1.5 GHz。
针对HBAE也进行了与HBN相同的实验。结果如表 XIV所示,在所有测试中推理时间非常相似,而SHL数据集所需的额外时间是由于量化类别的数量较多所致。
B. 在STM32微控制器上的测试
推理时间已在意法半导体生产的STM32系列中的两款不同微控制器上进行测量。具体使用了STM32F401RE ARM Cortex‐M4 MCU [22],和STM32H743 Cortex‐M7 MCU [23] 。有关这些架构的详细信息见表XV。为了执行测试,HBN和 HBAE均使用C语言编写,并通过STM32CubeIDE进行编译。已开发一个手写的C函数库来执行模型中使用的二值化层。推理时间使用微控制器的内部定时器进行测量。对于每种配置,均在10次迭代上计算平均推理时间。HBN在SHL数据集上进行了测试,而HBAE在CWRU数据集上进行了测试。结果见表XVI。
在图I和图II中,提供了HBN和HBAE在准确率和占用内存方面的最佳结果对比。
VII. 结论
二进制网络最初在Lasagne中实现(HBN),随后在新的 Larq和QKeras框架中实现。为了更好地评估量化对网络的影响,设计了四种类似的拓扑结构(HBN‐A、HBN‐B、 HBN‐C、HBN‐D),并比较了它们的测试准确率、占用内存和推理时间。接着,通过扩展HBN拓扑结构创建了一个自编码器(HBAE‐A、HBAE‐D),使用Larq和 QKeras实现,并以与之前网络相同的方式进行了测试。从获得的结果可以看出,选择哪些层进行二值化对于在不降低准确率的情况下获得内存优势至关重要。
这项工作的一个可能的未来扩展方向是将HBN‐D的偏置量化为8位,并评估Qmn格式中整数/小数部分的变化对准确率结果的影响。此外,还需对更大且更多样化的网络进行研究。
Python版本 | 3.7.3 |
---|---|
测试样本 | 20 |
实验 | 10 |
表XII. 树莓派4上推理时间测量的设置。
拓扑结构 | Larq 推理时间 [s] | Larq 推理时间 [s] | QKeras 推理时间 [s] | QKeras 推理时间 [s] |
---|---|---|---|---|
拓扑结构 | PAMAP2 SHL | 0.17 ± 0.03 0.24 ± 0.2 | PAMAP2 SHL | 0.16 ± 0.03 0.21 ± 0.2 |
HBN‐A | ||||
HBN‐B | 0.16 ± 0.02 | 0.27 ± 0.2 | 0.16 ± 0.02 | 0.22 ± 0.2 |
HBN‐C | 0.17 ± 0.03 | 0.22 ± 0.1 | 0.15 ± 0.02 | 0.20 ± 0.2 |
HBN‐D | - | - | 0.55+‐ 0.1 | 0.53+‐ 0.2 |
表XIII. 通过Larq和QKeras获得的每种HBN拓扑结构的推理时间。
框架 | 推理时间 [s] |
---|---|
Larq | 0.15 ± 0.20 |
QKeras | 0.15 ± 0.02 |
HBAE‐D (仅QKeras) | 0.82+‐ 0.3 |
表十四。基于Larq和QKeras在CWRU数据集上获得的HBAE的推理时间。
设备 | 板载 处理器 | 时钟 [兆赫兹] | RAM [KB] | 闪存 [KB] |
---|---|---|---|---|
STM32F401RE | ARM Cortex‐M4 | 84 | 96 | 512 |
STM32H743 | ARM Cortex‐M7 | 400 | 1024 | 2048 |
表十五. 用于测量推理时间的STM32微控制器的规格。
设备 | 模型 | 数据集 | 推理时间 [ms] |
---|---|---|---|
STM32F401RE | HBN | SHL | 10.880 ± 0.000 |
STM32F401RE | HBAE | CWRU | 12.574 ± 0.001 |
STM32H743 | HBN | SHL | 2.185 ± 0.000 |
STM32H743 | HBAE | CWRU | 2.418 ± 0.002 |
表XVI. 测量 推理 时间 ON STM32 微控制器
授权许可使用仅限于:卡尔顿大学。于2021年6月14日 UTC 时间20:59:19从IEEE Xplore下载。适用限制。