3. 数据采集与标注
在Edge Impulse分类模型训练流程中,数据采集与标注是决定模型性能上限的基石。无论采用手机内置的加速度计、麦克风,还是开发板(如Arduino Nano 33 BLE Sense、ESP32、STM32)外接的IMU、环境传感器,采集到的原始信号质量与标注的准确性,将直接影响后续特征工程、模型训练以及最终部署到边缘设备后的推理效果。本章将系统讲解传感器数据采集的工程路径、标注方法论,以及类别平衡与数据质量对模型泛化能力的深层影响。
3.1 传感器数据采集:从硬件到Edge Impulse的工程路径
核心原理:采样率、分辨率与信号保真度
传感器数据采集的本质是将物理世界的连续模拟信号转换为数字离散序列。对于Edge Impulse分类任务,三个关键参数决定了信号保真度:采样率(Hz)、分辨率(bits)和量程(±g/±dps/±Pa)。采样率需满足奈奎斯特定理,即至少为信号最高频率成分的2倍。例如,人体手势识别中加速度计信号主要能量集中在0.5-20Hz,采样率设为50Hz即可;而声学事件检测(如玻璃破碎声)需要20kHz以上的采样率。分辨率决定了信号的动态范围,16位ADC通常足够。量程设置不当会导致削波失真——若加速度量程设为±2g而实际运动产生±4g的峰值,信号将被截断,产生虚假的高频分量。
操作流程:手机与开发板采集的完整步骤
- 设备连接与固件准备:对于开发板(如Arduino Nano 33 BLE Sense),需烧录Edge Impulse提供的固件(通过Edge Impulse CLI或Arduino IDE)。手机则直接通过浏览器访问Edge Impulse Studio,使用内置的加速度计、麦克风或陀螺仪。
- 参数配置:在“Data acquisition”页面设置采样率(建议从100Hz开始)、采集时长(每个样本2-5秒)、传感器类型(加速度计/陀螺仪/磁力计组合)。
- 数据分段策略:Edge Impulse支持两种模式——连续采集(采集长流数据后手动切分)和样本采集(每次采集固定时长作为一个样本)。对于动作识别,推荐使用样本采集模式,每个样本包含完整的动作周期。
- 多场景覆盖:在采集过程中,应变化设备姿态、使用者、环境背景。例如,采集“挥手”动作时,应分别记录站立、行走、坐姿下的挥手,以及不同速度的挥手。
- 数据上传与存储:采集完成后,数据自动上传至Edge Impulse云平台,每个样本以时间序列形式存储,并附带设备ID、时间戳和传感器元数据。
案例拆解:工业设备振动监测的数据采集
某工厂需要利用Edge Impulse构建旋转机械的故障分类模型(正常/不平衡/轴承磨损)。初始方案仅使用一个加速度计,采样率设为1kHz,采集时长为2秒。第一次采集后,发现模型在测试集上准确率仅72%。分析发现:问题根源在于采集策略过于单一——所有数据均在设备稳定转速下采集,未覆盖启动、停机、负载变化等瞬态过程。改进措施包括:①将采样率提升至2kHz以捕捉更高频的轴承故障特征;②在设备不同工况(空载/满载/变速)下分别采集;③增加第二个加速度计,安装于轴承座垂直方向,以捕捉径向振动。重新采集后,模型准确率提升至94%。关键教训:数据采集的多样性比单纯增加样本数量更重要。
3.2 数据标注方法:从原始信号到语义标签
核心原理:标注粒度与标签体系设计
数据标注是将原始传感器序列映射到预定义类别标签的过程。标注粒度分为样本级标注(整个样本对应一个标签)和片段级标注(样本内不同时间段对应不同标签)。对于大多数分类任务,样本级标注足够;但对于连续活动识别(如“走路-跑步-站立”的转换),需要片段级标注。标签体系设计应遵循互斥性(一个样本只能属于一个类别)和完备性(所有可能状态都有对应标签)。Edge Impulse支持在采集时直接标注,也支持采集后通过“Labeling”界面进行可视化标注。
操作流程:Edge Impulse中的标注实践
- 实时标注:在采集过程中,通过点击“Label”按钮为当前样本打标签。适合动作明确、边界清晰的场景。
- 事后标注:对于连续采集的长序列,在“Labeling”页面中通过波形缩放、播放功能,手动框选时间段并分配标签。
- 自动分段辅助:利用Edge Impulse的“Auto-label”功能(基于信号能量或过零率)进行初步分段,再人工修正边界。
- 标签一致性检查:对于多人协作标注,需定义标注规范文档,例如“挥手”动作的起始点定义为手部开始移动的帧,结束点定义为手部回到起始位置的帧。
案例拆解:语音命令识别的标注困境
在构建“是/否/停止/开始”四类语音命令识别模型时,初始标注策略为:每个音频样本(1秒)整体标注为对应命令。但模型在真实环境中误识别率较高。分析发现:问题在于标注粒度——1秒的音频中,实际命令发音仅占0.3-0.5秒,其余为静音或环境噪声。模型无法区分“命令”与“非命令”的边界。解决方案:①将标注粒度改为片段级,精确标记命令发音的起止时间;②增加“未知”类别,将非命令语音(如咳嗽、背景对话)作为负样本;③使用Edge Impulse的“Spectrogram”视图辅助标注,通过频谱图更清晰地识别语音边界。改进后,模型误识别率降低60%。
| 标注方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 实时标注 | 动作明确、边界清晰 | 效率高、即时反馈 | 易受操作延迟影响 |
| 事后标注 | 连续序列、复杂边界 | 精度高、可反复调整 | 耗时、依赖人工判断 |
| 自动分段+人工校验 | 长数据流、周期性信号 | 效率与精度平衡 | 需调整分段算法参数 |
3.3 类别平衡与数据质量:模型泛化能力的隐形决定因素
核心原理:类别分布与数据纯净度的影响机制
分类模型通过最小化经验风险来学习决策边界。当训练集中类别样本数量严重不平衡时(如“正常”类占90%,“故障”类占10%),模型会倾向于将大多数样本预测为多数类,以获得较低的整体损失,但对少数类的召回率极低。此外,数据纯净度同样关键——若“静止”类样本中混入了轻微抖动的数据,模型将难以区分“静止”与“微动”的边界。Edge Impulse的“Data Explorer”功能可以可视化各特征维度的分布,帮助识别异常样本。
判断方法:类别平衡与质量评估的量化指标
- 类别样本数统计:在Edge Impulse的“Dashboard”中查看每个类别的样本数量,目标是最小类别样本数不少于最大类别的30%。
- 特征分布可视化:使用“Feature explorer”查看样本在二维特征空间(如PCA降维)中的分布,检查是否存在明显的离群点或类别重叠区域。
- 混淆矩阵分析:在模型训练后,查看验证集的混淆矩阵,重点关注对角线之外的错误模式。若“类别A”被频繁误判为“类别B”,说明两类特征过于相似,需要补充更具区分性的样本或调整特征工程。
- 数据增强策略:对于少数类,可通过添加噪声、时间缩放、信号平移等方式合成新样本,但需谨慎使用,避免引入不真实的模式。
案例拆解:可穿戴设备跌倒检测的数据质量优化
某团队开发基于加速度计的跌倒检测模型,初始数据集包含500个“跌倒”样本和2000个“日常活动”样本。模型在测试集上准确率95%,但召回率仅68%(即32%的跌倒未被检测到)。深入分析发现:数据质量问题——①“跌倒”样本全部由年轻志愿者在实验室软垫上模拟,缺乏真实跌倒的冲击特征;②“日常活动”样本中包含了快速坐下、跳跃等与跌倒加速度特征相似的动作,导致误分类。改进措施:①采集真实跌倒数据(使用护具保护志愿者),并增加不同跌倒方向(前向/后向/侧向)的样本;②将“快速坐下”和“跳跃”单独作为类别,细化标签体系;③使用Edge Impulse的“Anomaly detection”模块,将非跌倒但高冲击的活动标记为异常。最终召回率提升至91%,误报率降低至2%。
总结复盘:数据采集与标注的黄金法则
- 先定义问题,再采集数据:明确分类目标、部署环境、实时性要求,据此确定采样率、传感器类型和标注粒度。
- 数据多样性优先于数据量:覆盖不同用户、环境、设备姿态、时间段的样本,比单纯增加同一条件下的样本数量更有价值。
- 标注一致性是模型性能的隐形天花板:建立标注规范,定期校验,必要时使用多人标注取交集。
- 利用Edge Impulse的可视化工具进行质量门禁:在训练前,通过特征分布和样本回放检查数据质量,避免“垃圾进,垃圾出”。
- 建立迭代闭环:模型训练后的混淆矩阵是数据采集的“体检报告”,针对错误模式定向补充数据,而非盲目增加样本总量。
数据采集与标注不是一次性的体力劳动,而是需要工程思维和领域知识支撑的关键环节。一个精心设计的数据集,可以让简单的决策树模型达到90%以上的准确率;而一个粗糙的数据集,即使使用深度神经网络也难以获得理想的泛化性能。在Edge Impulse的完整工作流中,本章所讲的数据基础,将直接决定后续特征工程和模型训练的效率与上限。