数据集建设总览:从应用场景到采集计划的完整流程、关键环节与常见误区
TinyML 项目的数据集建设,本质上是一个将物理世界中的真实信号转化为模型可学习数字张量的系统工程。很多开发者习惯性地从“找公开数据集”或“先采集一批数据看看”开始,这往往会导致后续模型在真实部署时性能崩塌。正确的起点不是数据本身,而是对应用场景的深度解构。本章将沿着“场景定义 → 任务拆解 → 数据规划 → 采集执行 → 质量验收”的主线,梳理完整流程,并剖析那些容易被忽视的关键环节与高频误区。
3.1 核心原理:场景约束决定数据边界
TinyML 数据集建设的首要原则是“场景先行”。与云端 AI 不同,TinyML 模型部署在资源受限的 MCU 上,其感知能力、功耗预算、响应延迟都直接受限于硬件。因此,数据集的设计必须从物理世界的约束出发,而不是从算法需求出发。
场景定义需要回答四个核心问题:设备装在哪里?(例如:戴在手腕上的智能手环 vs 安装在工厂机器上的振动传感器);用户如何与设备交互?(例如:按键触发 vs 连续监测);环境条件如何变化?(例如:室内恒温 vs 户外温差 30℃);硬件采样能力如何?(例如:IMU 的采样率上限、ADC 的位深、内存缓冲大小)。这些答案直接决定了数据采集的传感器类型、采样频率、量化精度和样本格式。
以关键词唤醒为例,云端模型可以处理 16kHz 的音频流,但 TinyML 设备可能只能以 8kHz 采样、16 位量化,且每次只能缓存 1 秒的音频。这意味着数据集必须按照 8kHz/16bit 的格式重新采集或重采样,否则训练出的模型在部署时会出现严重的域偏移。
3.2 操作流程:五步法从场景到采集计划
将应用场景转化为可执行的采集计划,需要遵循一套系统化的流程。以下五个步骤构成了完整的链路:
- 场景约束清单化:将部署环境、硬件规格、用户行为模式整理成一份约束清单。例如:工作温度范围、可用内存、目标延迟、电池容量等。
- 任务类型定义:明确是二分类(如“唤醒/非唤醒”)、多分类(如“走路/跑步/骑车”)、回归(如“预测剩余电量”)还是异常检测(如“设备故障预警”)。任务类型决定了标注粒度和损失函数设计。
- 数据维度规划:确定每个样本的通道数(如 3 轴加速度计 = 3 通道)、序列长度(如 128 个时间步)、采样率(如 50Hz)和量化位宽(如 8 位)。这些参数必须与 MCU 的内存和算力匹配。
- 样本量与分布设计:基于类别数量、特征复杂度和模型容量估算最小样本量。同时规划不同环境、不同用户、不同时段的样本比例,确保覆盖度。
- 采集与标注 SOP 制定:编写标准作业程序,包括设备固定方式、采集姿势、环境记录模板、标注工具选择、标注字段定义等。
| 规划维度 | 关键问题 | 输出物 |
|---|---|---|
| 硬件约束 | MCU 内存多少?采样率上限? | 传感器选型表、采样参数表 |
| 场景覆盖 | 哪些环境变量会影响信号? | 环境变量清单、采集地点列表 |
| 类别定义 | 类别之间是否互斥?边界是否清晰? | 类别定义文档、标注规则 |
| 样本配额 | 每类最少多少样本?比例如何? | 样本量估算表、采集排期表 |
| 质量控制 | 如何识别坏样本?标注不一致怎么办? | 质量验收标准、异常样本处理流程 |
3.3 案例拆解:工业设备振动监测的数据集规划
某制造企业计划开发一个基于 TinyML 的电机异常振动检测系统,用于预测性维护。设备端采用 STM32L4 系列 MCU,内置 3 轴加速度计(ADXL345),采样率设定为 400Hz,每次采集 256 个采样点(约 0.64 秒),模型需要区分“正常”、“轴承磨损”、“转子不平衡”三类状态。
初始目标与约束:目标是在不增加硬件成本的前提下,实现 90% 以上的分类准确率。约束是 MCU 仅有 64KB RAM,模型大小不能超过 30KB,推理时间小于 50ms。
关键输入数据:工厂现场有 12 台电机,其中 8 台正常,2 台存在轴承磨损,2 台存在转子不平衡。环境噪声主要来自生产线其他设备的振动传导。
分析判断过程:团队最初计划直接使用公开的振动数据集(如 CWRU 数据集),但发现该数据集采样率为 12kHz,且传感器安装位置与现场不同。直接使用会导致特征分布严重偏移。因此决定自采数据,并按照以下步骤执行:
- 传感器安装:在每台电机的轴承座和基座各安装一个加速度计,同步采集 3 轴数据。
- 工况覆盖:分别在电机空载、50% 负载、满载三种工况下采集,每种工况采集 10 分钟。
- 数据切片:将连续数据流切分为 256 点的窗口,步长 128 点(50% 重叠),共获得约 5600 个样本。
- 标注策略:由设备维护工程师根据已知故障状态进行标注,同时记录电机转速、温度等辅助信息。
- 数据增强:对正常样本添加不同信噪比的高斯白噪声,模拟不同距离的振动传播衰减。
结果对比:使用自采数据训练的模型在测试集上准确率达到 93.5%,而直接使用 CWRU 数据训练的模型在同样测试集上准确率仅为 61.2%。主要原因是采样率、安装位置和工况差异导致的特征偏移。
风险与代价:自采数据耗时 3 周,投入 2 名工程师。但避免了模型部署后频繁误报导致的产线停机损失。复盘经验是:数据采集的“场景保真度”远比数据量大小更重要。
3.4 常见误区与总结复盘
在 TinyML 数据集建设过程中,以下四个误区最为常见,且破坏力最大:
- 误区一:公开数据集“拿来主义”。公开数据集(如 Speech Commands、CIFAR-10)适合算法验证,但无法替代场景化数据。TinyML 的传感器型号、安装位置、采样参数与公开数据集往往不一致,直接使用会导致严重的域偏移。
- 误区二:样本量“拍脑袋”。有些开发者认为“越多越好”,但忽略了 MCU 训练时的内存限制和标注成本。实际上,对于简单的二分类任务,每类 500-1000 个样本通常足够;而对于复杂的多分类或回归任务,则需要根据特征维度进行统计估算。
- 误区三:采集环境“实验室化”。在安静的实验室采集的数据,无法覆盖真实场景中的背景噪声、电磁干扰、机械振动等。建议在采集计划中明确至少 3 种不同环境(如:安静室内、嘈杂车间、户外移动)。
- 误区四:标注规范“口头化”。多人协作标注时,如果没有书面化的标注规则(例如:振动幅值超过多少算“异常”?),会导致标注一致性极差。建议使用双人标注 + 仲裁机制,并定期计算标注一致性指标(如 Cohen's Kappa)。
数据集建设不是一次性的“收集”动作,而是一个持续迭代的工程。当模型在测试中表现不佳时,首先应该回溯数据分布是否覆盖了失败场景,而不是盲目调整模型结构。下一阶段,我们将深入探讨如何根据任务类型设计具体的采集方案,包括传感器选型、采样参数设置和标注工具选择。