3、数据采集与标注:传感器数据采集方法、采样率选择、标注工具与标注规范

TinyML 模型的性能上限在数据采集阶段就已注定。与云端 AI 不同,端侧模型受限于内存、算力和功耗,无法通过海量参数弥补数据质量的缺陷。传感器数据的采集方法、采样率选择以及标注规范,直接决定了模型能否在真实物理世界中稳定工作。本章将系统拆解从原始物理量到可训练数据集的完整链路,重点解决“采什么、怎么采、采多快、怎么标”四个核心问题。

传感器数据采集与标注工程链路 物理世界 振动/温度/声音/运动 传感器 + 信号调理 量程/灵敏度/滤波 ADC 采样 采样率/分辨率/通道 数据封装 时间戳/帧 采样率选择依据 奈奎斯特频率 × 5~10倍 → 覆盖信号带宽 标注工具与规范 分段/标签体系/一致性 数据质量评估 漂移/缺失/异常值 TinyML 训练数据集 窗口切片 → 特征工程 → 训练/验证/测试集 迭代优化 标注规范:类别定义 → 边界规则 → 多人一致性 → 质量抽检 采样率:IMU 50~200Hz | 麦克风 8~16kHz | 振动 1~10kHz

3.1 传感器数据采集的核心原理

传感器数据采集的本质是将连续变化的物理量(加速度、角速度、声压、温度等)转换为离散的数字序列。这一过程涉及三个关键环节:传感元件将物理量转换为电信号,信号调理电路完成放大、滤波和电平匹配,模数转换器(ADC)以固定时间间隔对模拟信号采样并量化为数字值。对于 TinyML 应用,采集链路的设计目标不是“高保真还原”,而是“在有限存储和功耗预算内,保留足够区分不同类别的特征信息”。

以加速度计为例,MEMS 传感器内部包含质量块和梳齿电容结构,当设备运动时质量块发生位移,电容值变化经 C/V 转换电路变为电压信号。该信号经过低通滤波器(通常截止频率为采样率的 0.4 倍)后送入 ADC。ADC 的位数决定了量化精度——8 位 ADC 提供 256 个离散等级,16 位 ADC 提供 65536 个等级。对于大多数运动识别任务,12 位精度已足够,过高的分辨率只会增加存储开销而不会显著提升分类准确率。

采样率的选择需要同时考虑信号带宽、数据量和功耗。根据奈奎斯特采样定理,采样率必须大于信号最高频率的两倍才能无失真重建。但工程实践中,建议采样率设置为信号最高频率的 5~10 倍,以留出抗混叠滤波器的过渡带余量。例如,人体运动的主要能量集中在 0.5~20Hz,因此 IMU 采样率通常设为 50~100Hz;而电机轴承故障的振动特征可达 2~5kHz,需要 10kHz 以上的采样率。

3.2 采样率选择方法与数据采集流程

采样率的选择不能孤立进行,必须结合分类任务、硬件约束和功耗预算综合决策。以下是系统化的选择流程:

  1. 确定信号带宽:查阅传感器数据手册或通过 FFT 分析预采集数据,找到信号能量集中的频率范围。例如,工业泵的振动信号主频为 50Hz 及其谐波,但故障特征可能出现在 3kHz 附近。
  2. 计算理论最低采样率:取信号最高频率的 2 倍作为下限,再乘以 2.5~5 倍的安全系数。对于 3kHz 的振动特征,理论最低为 6kHz,实际建议 15~30kHz。
  3. 评估存储与功耗预算:采样率每提高一倍,数据量翻倍,MCU 唤醒时间和无线传输功耗也相应增加。对于电池供电的节点,需要权衡分类精度与续航时间。
  4. 验证分类性能:在候选采样率下分别采集数据并训练模型,绘制“采样率 vs 准确率”曲线,选择性能拐点处的采样率。

数据采集流程应遵循标准化操作,确保不同时间、不同设备采集的数据具有可比性。推荐流程如下:

1. 设备准备:固定传感器位置,检查电池电量,校准零偏
2. 环境记录:记录温度、湿度、设备状态等元数据
3. 预热稳定:上电后等待 30 秒,让传感器达到热平衡
4. 数据采集:按预设采样率和时长采集原始数据
5. 质量检查:实时查看波形,确认无饱和、无断流
6. 数据存储:按统一命名规则保存为二进制或 CSV 格式
7. 元数据登记:在数据管理表中记录采集时间、设备 ID、工况
传感器类型 典型应用 信号带宽 推荐采样率 ADC 位数
加速度计(IMU) 人体活动识别、跌倒检测 0.5~20Hz 50~100Hz 12~16 bit
麦克风 关键词唤醒、异常声音检测 100Hz~4kHz 8~16kHz 16~24 bit
振动传感器 电机故障诊断、结构健康监测 10Hz~5kHz 10~20kHz 16~24 bit
温度传感器 工业过程监控、热管理 0~1Hz 1~10Hz 10~12 bit
气压传感器 高度估计、气象监测 0~0.5Hz 1~5Hz 12~16 bit

3.3 标注工具与标注规范

数据标注是将原始传感器数据与目标类别关联起来的过程,是监督学习的基础。与图像标注不同,传感器数据通常是一维时间序列,标注方式分为三种:片段级标注(整个窗口属于一个类别)、事件级标注(标记特定事件发生的时间点)和逐点标注(每个采样点都有标签)。对于 TinyML 分类任务,最常用的是片段级标注——将连续数据流切分为固定长度的窗口,每个窗口赋予一个类别标签。

常用的标注工具包括:

  • Edge Impulse Studio:提供图形化数据采集和标注界面,支持传感器直连、CSV 导入和自动切片,内置数据平衡和质量评估功能。
  • Label Studio:开源标注平台,支持时间序列数据的区域选择和标签分配,适合自定义标注流程。
  • MATLAB Signal Labeler:面向信号处理场景,支持多通道同步标注和自动化特征提取。
  • 自研标注脚本:对于特殊需求(如多传感器同步标注),可基于 Python + Plotly 开发轻量级标注工具。

标注规范是保证数据集质量的核心。一套完整的标注规范应包含以下要素:

  1. 类别定义:每个类别必须有明确、无歧义的定义。例如“行走”定义为“双脚交替着地、身体前进的运动模式”,并附示例波形图。
  2. 边界规则:规定窗口切分的起始点、窗口长度和重叠率。例如“窗口长度 2 秒,步进 0.5 秒,窗口内必须包含完整的动作周期”。
  3. 异常处理:定义传感器脱落、设备静止、信号饱和等异常情况的处理方式——是标记为“无效”还是单独设类。
  4. 多人一致性:至少两人独立标注同一批数据,计算 Cohen's Kappa 系数,要求 Kappa > 0.8 才认为标注可靠。
  5. 质量抽检:标注完成后随机抽取 10% 数据由专家复核,错误率超过 2% 则退回重新标注。
经验提醒:标注规范文档应在采集开始前编写完成,而不是等数据采集完再补。标注人员需要经过培训并通过测试标注考核后才能正式上岗。对于时间序列数据,建议在标注界面同时显示原始波形和频谱图,帮助标注人员更准确地判断类别边界。

3.4 案例拆解:工业电机振动数据采集与标注

某制造企业需要开发一个 TinyML 模型,用于在端侧实时检测电机轴承故障。项目约束如下:使用 STM32L4 系列 MCU(512KB Flash、160KB RAM),电池供电要求续航 6 个月以上,检测目标为正常、内圈故障、外圈故障、滚动体故障四类。

初始方案与问题:工程师最初参考学术,将采样率设为 20kHz,ADC 为 16 位,三轴振动传感器同时采集。试运行后发现:1 分钟数据量达 7.2MB(3 轴 × 20000Hz × 2 字节 × 60 秒),远超 MCU 存储能力;且 MCU 需要频繁唤醒处理数据,电池续航仅剩 3 周。

分析过程:对预采集的振动数据做 FFT 分析,发现轴承故障特征频率集中在 500Hz~3kHz 之间,而电机基频(50Hz)及其谐波占主导能量。进一步分析发现,故障特征在 8kHz 采样率下已能清晰分辨。团队决定将采样率降至 8kHz,并采用 12 位 ADC(实际有效位数约 10.5 位),同时只保留径向振动单轴数据。

实施步骤:

  1. 重新设计采集固件,采样率设为 8192Hz,窗口长度 1024 点(125ms),重叠率 50%。
  2. 在电机轴承座上安装加速度计,使用磁吸底座固定,确保耦合良好。
  3. 采集 4 种工况数据:正常、内圈故障、外圈故障、滚动体故障,每种工况采集 30 分钟,分 3 天完成以覆盖不同温度条件。
  4. 使用 Edge Impulse 的 Data Acquisition 模块直接采集并自动切片,每 2 秒生成一个样本窗口。
  5. 由两名工程师独立标注,对边界模糊的样本(如故障初期信号)进行讨论确认。

结果对比:采样率从 20kHz 降至 8kHz 后,数据量减少 60%,MCU 处理时间缩短 55%,电池续航从 3 周提升至 5 个月。模型在测试集上的准确率从 97.2% 略降至 96.1%,但仍在可接受范围内。标注一致性 Kappa 系数为 0.87,质量抽检错误率 1.5%。

风险与代价:降低采样率后,对高频冲击信号的捕捉能力下降,可能漏检早期微弱故障。为此,团队在模型中增加了时域统计特征(峰值因子、峭度)作为补偿,并计划在后续版本中引入自适应采样率机制。

风险提示:采样率并非越高越好。过高的采样率会带来存储、功耗和实时性三重压力,而采样率不足则可能导致混叠效应,使高频故障特征伪装成低频信号,造成误判。务必通过频谱分析确定信号的真实带宽,再选择采样率。

3.5 常见误区与总结复盘

在传感器数据采集与标注实践中,以下误区最为常见:

  • 忽视抗混叠滤波:ADC 采样前必须使用硬件低通滤波器(截止频率为采样率的 0.4~0.5 倍),否则高频噪声会折叠到低频段,污染有效信号。
  • 标注粒度不一致:不同标注人员对“动作开始”和“动作结束”的判断标准不同,导致窗口边界偏移。解决方法是定义严格的物理事件标记点,如“脚跟着地瞬间”。
  • 数据不平衡:正常工况数据远多于故障数据,导致模型偏向多数类。可通过数据增强(加噪声、时间扭曲)或重采样技术缓解。
  • 忽略传感器位置差异:同一型号传感器安装位置不同,信号幅值和相位会有差异。应在标注元数据中记录安装位置,并在训练时进行归一化。
  • 标注工具选择不当:使用通用表格软件标注时间序列效率极低且容易出错,应选择支持波形可视化和区域选择的专业工具。

总结本章要点:数据采集的核心是“在满足分类精度需求的前提下,最小化数据量和功耗”;采样率选择应基于信号带宽分析而非经验值;标注规范必须前置定义,并通过一致性检验保证质量。一个高质量的数据集,其价值远超复杂的模型结构——在 TinyML 领域,数据工程能力往往决定了项目的成败。