3、模型评估指标基础:准确率、召回率、F1分数、混淆矩阵、推理延迟、内存占用、能耗等关键指标
TinyML 模型的评估与传统机器学习模型有本质差异:我们不仅要回答“预测得准不准”,还要回答“在资源受限的 MCU 上跑不跑得动、耗不耗电、响应是否及时”。本章将系统梳理 TinyML 场景下的核心评估指标体系,从分类质量指标(准确率、召回率、F1、混淆矩阵)到资源指标(推理延迟、内存占用、能耗),并给出可落地的评估流程与常见误区。
3.1 分类质量指标:从混淆矩阵到 F1 分数
分类质量指标回答的是“模型预测得对不对”的问题。在 TinyML 场景中,由于模型通常部署在传感器节点、可穿戴设备或工业控制器上,错误预测的代价往往比云端 AI 更高——例如误报可能导致产线停机,漏报可能导致安全事故。因此,不能只看准确率,必须深入混淆矩阵的每一个格子。
3.1.1 混淆矩阵:一切分类指标的基础
混淆矩阵是一个 N×N 的表格(N 为类别数),行代表真实标签,列代表预测标签。以二分类为例,四个格子分别表示:
- TP(真阳性):实际为正类,预测也为正类。
- FP(假阳性):实际为负类,但预测为正类(误报)。
- FN(假阴性):实际为正类,但预测为负类(漏报)。
- TN(真阴性):实际为负类,预测也为负类。
在多分类场景下,通常采用“一对多”的方式计算每个类别的 TP/FP/FN/TN。例如在关键词唤醒(KWS)任务中,类别包括“唤醒词”“其他语音”“噪声”,每个类别都可以单独计算混淆矩阵。
3.1.2 准确率、召回率与 F1 分数的计算与解读
基于混淆矩阵,可以推导出以下核心指标:
| 指标 | 公式 | 含义 | TinyML 场景示例 |
|---|---|---|---|
| 准确率 (Accuracy) | (TP+TN)/(TP+TN+FP+FN) | 所有样本中预测正确的比例 | 手势识别中 100 次预测有 92 次正确 |
| 精确率 (Precision) | TP/(TP+FP) | 预测为正类的样本中真正为正类的比例 | 在 10 次“唤醒”预测中,8 次是真的唤醒词 |
| 召回率 (Recall) | TP/(TP+FN) | 实际为正类的样本中被正确检出的比例 | 在 20 次真实唤醒中,模型成功捕捉到 18 次 |
| F1 分数 | 2×P×R/(P+R) | 精确率与召回率的调和平均 | 当精确率和召回率都重要时使用 |
在 TinyML 中,精确率和召回率往往存在此消彼长的关系。例如在语音唤醒中,提高召回率(更灵敏地捕捉唤醒词)通常会增加误报(FP),降低精确率。F1 分数通过调和平均来平衡两者,避免单一指标误导决策。
3.1.3 多分类场景下的宏平均与微平均
当类别数超过 2 时,需要决定如何聚合各类别的指标:
- 宏平均(Macro-average):先计算每个类别的指标,再取算术平均。每个类别权重相同,适合类别数量均衡的场景。
- 微平均(Micro-average):将所有类别的 TP/FP/FN 汇总后再计算指标。大类别对结果影响更大,适合类别不平衡的场景。
在 TinyML 模型对比中,建议同时报告宏平均和微平均 F1,以便全面了解模型在不同类别上的表现差异。
3.2 资源指标:推理延迟、内存占用与能耗
分类质量指标只回答了“准不准”,而资源指标回答的是“能不能跑、跑多快、耗多少电”。TinyML 模型通常运行在 Cortex-M 系列 MCU 上,主频几十到几百 MHz,RAM 从几 KB 到几百 KB,Flash 从几十 KB 到几 MB。这些硬约束决定了模型能否实际部署。
3.2.1 推理延迟(Latency)
推理延迟指从输入数据准备好到模型输出结果之间的时间间隔,单位通常为毫秒(ms)。在 TinyML 中,延迟受以下因素影响:
- 模型结构:卷积层、深度可分离卷积、全连接层的计算量差异巨大。
- 量化类型:INT8 量化通常比 FP32 快 2-4 倍,但可能带来精度损失。
- 硬件加速:部分 MCU 带有 DSP 指令或硬件加速器(如 CMSIS-NN)。
- 时钟频率:MCU 运行频率越高,延迟越低,但功耗越高。
延迟测量不能只取平均值,应记录 P50(中位数)、P95(95 分位)和最坏情况。在实时控制场景(如电机故障检测),最坏情况延迟比平均延迟更重要,因为偶发的长延迟可能导致控制失效。
3.2.2 内存占用(Memory Footprint)
TinyML 模型的内存占用分为两部分:
- Flash 占用:模型权重、偏置、激活函数表等静态数据,以及代码段大小。INT8 量化后模型体积约为 FP32 的 1/4。
- RAM 占用:推理过程中的中间激活值、输入输出缓冲区、临时变量。峰值 RAM 通常出现在某一层计算时。
评估内存时,需要关注以下关键指标:
| 指标 | 说明 | 典型范围(Cortex-M4) |
|---|---|---|
| 模型体积 | 量化后二进制文件大小 | 10 KB - 500 KB |
| 峰值 RAM | 推理过程中最大 RAM 占用 | 5 KB - 100 KB |
| 静态 RAM | 模型常驻 RAM 大小(权重常驻时) | 1 KB - 50 KB |
在模型版本对比中,如果新模型体积减少了 30%,但峰值 RAM 增加了 20%,可能导致原本可用的 MCU 内存不足。因此,必须同时评估 Flash 和 RAM 两个维度。
3.2.3 能耗(Energy Consumption)
能耗是 TinyML 区别于传统嵌入式 AI 的核心指标。对于电池供电的设备(如智能手表、环境传感器),能耗直接决定续航时间。能耗通常用以下单位表示:
- mJ/推理:单次推理消耗的能量(毫焦耳)。
- μAh/推理:单次推理消耗的电量(微安时),便于与电池容量直接换算。
能耗的计算公式为:能耗 = 平均功耗 × 推理时间。平均功耗取决于 MCU 的工作状态(活跃、睡眠、深度睡眠)以及外设(传感器、无线模块)的功耗。在评估时,应区分:
- 纯计算能耗:仅 MCU 执行推理的能耗。
- 系统级能耗:包括传感器采样、数据预处理、推理、无线传输的完整链路能耗。
在模型对比中,如果新模型推理延迟降低 20%,但需要更频繁地唤醒传感器(例如为了获取更高分辨率输入),系统级能耗可能反而增加。因此,建议以“端到端任务能耗”为最终评估标准。
3.3 评估流程与实操案例:新旧模型对比
下面通过一个完整的案例,展示如何对旧模型(V1)和新模型(V2)进行自动化评估与对比。该案例基于一个工业振动异常检测场景,模型运行在 STM32L4 系列 MCU 上。
3.3.1 案例背景与初始数据
某工厂在旋转机械上部署了振动传感器,需要实时检测异常振动模式。旧模型 V1 为 FP32 模型,新模型 V2 为 INT8 量化模型。评估目标是确定 V2 是否可以在不显著降低检测质量的前提下,降低延迟和能耗。
测试数据集包含 2000 个振动信号片段,其中 1600 个正常样本,400 个异常样本。在目标硬件上分别部署两个模型,测量结果如下:
| 指标 | V1(FP32) | V2(INT8) | 变化 |
|---|---|---|---|
| 准确率 | 96.5% | 95.8% | -0.7% |
| 召回率(异常类) | 92.0% | 90.5% | -1.5% |
| F1 分数(异常类) | 0.89 | 0.87 | -0.02 |
| 推理延迟(P50) | 45 ms | 18 ms | -60% |
| 峰值 RAM | 48 KB | 22 KB | -54% |
| 模型体积 | 128 KB | 34 KB | -73% |
| 单次推理能耗 | 2.1 mJ | 0.8 mJ | -62% |
3.3.2 分析判断过程
从表面数据看,V2 在资源指标上全面领先,但分类质量略有下降。关键问题是:0.7% 的准确率下降和 1.5% 的召回率下降是否可以接受?
进一步分析混淆矩阵发现,V2 的误报(FP)数量从 V1 的 12 次增加到 18 次,漏报(FN)从 32 次增加到 38 次。虽然数量不大,但在工业场景中,漏报意味着异常未被发现,可能导致设备损坏。因此,需要结合业务风险来判断。
通过计算,V2 的能耗降低 62%,意味着电池续航可以从 30 天延长到约 79 天。对于部署在偏远地区的传感器节点,这是一个巨大的优势。最终决策是:接受 V2 作为新版本,但增加一个后处理逻辑——当连续 3 次预测为异常时才触发报警,以降低误报率。
3.3.3 操作流程清单
在实际的模型版本对比中,建议遵循以下标准化流程:
- 准备测试集:确保测试数据来自真实部署场景,包含各种环境噪声和边缘情况。
- 部署到目标硬件:使用相同的编译选项和优化级别,避免编译器差异影响结果。
- 测量资源指标:使用硬件计时器测量延迟,使用内存分析工具(如 ARM MAP)测量 RAM 峰值,使用功耗分析仪(如 Joulescope)测量能耗。
- 计算分类指标:在 PC 上运行测试集,生成混淆矩阵并计算准确率、召回率、F1 等。
- 生成对比报告:将新旧模型的指标并列展示,标注变化幅度和是否满足阈值。
- 综合决策:根据业务需求权衡分类质量与资源效率,必要时进行模型微调或后处理优化。
3.4 常见误区与总结复盘
在 TinyML 模型评估中,以下误区经常导致错误的版本决策:
误区二:在 PC 上测量延迟。 PC 的 CPU 架构、缓存大小与 MCU 完全不同,测量结果没有参考价值。必须在目标硬件上测量。
误区三:忽略最坏情况延迟。 平均延迟达标不代表实时性达标。在控制类应用中,P95 或最大延迟才是关键指标。
误区四:只比较模型体积,不比较峰值 RAM。 模型体积小不代表 RAM 占用低。某些量化模型虽然 Flash 占用小,但反量化操作需要额外 RAM。