3、数据采集与数据集管理:采集传感器数据(加速度计、麦克风、摄像头等)、数据标注、数据集划分(训练/测试)、数据平衡与增强策略
在Edge Impulse的impulse design流程中,数据采集与数据集管理是决定模型性能上限的基石。无论后续采用何种神经网络架构或信号处理流水线,如果输入数据的质量、覆盖度和标注准确性存在缺陷,最终部署的模型都难以达到预期的识别精度与鲁棒性。本章将系统讲解多类型传感器数据的采集方法、标注规范、数据集划分策略以及针对边缘端场景的数据平衡与增强技术,帮助您建立一套科学、可复现的数据工程流程。
3.1 多类型传感器数据采集的核心原理与工程约束
Edge Impulse支持从多种硬件平台采集数据,包括移动手机、开发板(如Arduino Nano 33 BLE Sense、ST IoT Discovery Kit)、专用传感器节点以及通过串口或SD卡导入的离线数据。不同传感器类型具有截然不同的数据特性,采集策略也需相应调整。
加速度计/IMU数据:通常以Hz为单位设置采样率,常见配置为50Hz-200Hz。对于人体活动识别(如走路、跑步、跳跃),100Hz已足够;而对于机械振动分析或电机故障诊断,则需要1kHz-4kHz的高采样率。每个样本通常包含X、Y、Z三轴数据,Edge Impulse中默认的窗口大小(Window Size)建议设置为2-5秒,步长(Window Increase)为窗口的50%-80%以实现重叠采样。
麦克风音频数据:Edge Impulse支持16kHz或更高采样率的音频输入,推荐使用16位PCM格式。音频分类任务(如关键词识别、环境声音分类)通常采用1-2秒的窗口长度,并配合FFT频谱特征提取。采集时需注意环境噪声控制,尽量在目标部署场景中采集数据,避免仅在安静实验室中录制。
摄像头图像数据:Edge Impulse支持RGB图像输入,可处理96x96、160x160等低分辨率图像以适应边缘设备内存限制。图像采集需覆盖不同光照条件、角度、距离和背景变化。对于目标检测任务,还需考虑目标尺度变化和遮挡情况。
| 传感器类型 | 典型采样率 | 推荐窗口长度 | 特征提取方式 | 边缘端内存估算 |
|---|---|---|---|---|
| 加速度计 (IMU) | 50-200Hz (活动识别) 1-4kHz (振动分析) |
2-5秒 | 时域统计、FFT频谱 | ~10-50KB/样本 |
| 麦克风 | 16kHz (语音) 8kHz (环境声) |
1-2秒 | MFCC、Mel频谱 | ~32-64KB/样本 |
| 摄像头 | 10-30 FPS | 单帧或连续帧 | CNN特征图 | ~27-150KB/帧 (96x96x3) |
样本大小 = 采样率 × 窗口长度 × 通道数 × 字节数。例如,3轴加速度计以100Hz采样、窗口3秒,则每个样本包含 100×3×3×4 = 3600字节(float32)。合理规划窗口大小可避免内存溢出。
3.2 数据标注:从原始信号到有监督标签
数据标注是将原始传感器数据转换为机器学习可用的监督信号的关键步骤。Edge Impulse提供了内置的标注工具,支持时间序列切片标注、图像边界框标注和音频事件标记。标注质量直接决定模型性能上限,因此必须建立严格的标注规范和校验流程。
标注粒度选择:根据任务类型,标注可分为三类:样本级标注(整个窗口属于一个类别)、事件级标注(在连续数据流中标记特定事件的时间范围)、像素级标注(图像中每个像素的类别)。对于活动识别,通常采用样本级标注;对于异常检测或关键词唤醒,则采用事件级标注。
标注流程建议:
- 定义标签体系:明确类别数量、名称和层级关系。例如,活动识别可定义"静止/走路/跑步/上下楼"四类,避免模糊标签如"其他"。
- 多人交叉标注:至少两人独立标注同一批数据,计算标注一致性(如Cohen's Kappa系数),对不一致的样本进行复核。
- 处理边界样本:对于时间序列数据,事件边界往往模糊。建议在标注时设置"过渡区"标签(如"走路→跑步过渡"),或直接丢弃边界前后0.5秒的数据。
- 标注后可视化校验:在Edge Impulse的"Data Explorer"中查看每个类别的样本波形/频谱图,检查是否存在明显错标或噪声样本。
3.3 数据集划分:训练/验证/测试的科学分割
数据集划分是评估模型泛化能力的基础。Edge Impulse默认将数据按比例划分为训练集(Training)、验证集(Validation)和测试集(Testing),但默认的随机划分方式在传感器数据场景下存在严重的数据泄漏风险。
核心原则:按数据源隔离划分。如果同一设备或同一用户的数据同时出现在训练集和测试集中,模型会通过记忆设备噪声或用户习惯来获得虚高的准确率,而在新设备或新用户上表现急剧下降。正确的做法是:
- 按设备划分:如果有3个采集设备,使用2个设备的数据训练,1个设备的数据测试。
- 按时间段划分:使用前70%时间的数据训练,后30%时间的数据测试,模拟模型在时间上的外推能力。
- 按用户划分:对于可穿戴设备,确保同一用户的数据不会同时出现在训练和测试集中。
Edge Impulse中的划分操作:在"Data"页面中,可以通过"Perform train/test split"功能手动指定每个样本的归属。建议在采集阶段就为每个样本添加元数据标签(如设备ID、用户ID、采集日期),然后在划分时按元数据过滤。
| 划分策略 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 随机划分 | 数据来源单一、环境稳定 | 简单、类别分布均匀 | 易数据泄漏,泛化性差 |
| 按设备划分 | 多设备部署、硬件差异大 | 评估跨设备泛化能力 | 需足够多设备 |
| 按用户划分 | 可穿戴、个性化模型 | 评估跨用户泛化能力 | 用户间差异可能过大 |
| 按时间划分 | 长期监测、概念漂移场景 | 评估时间外推能力 | 需考虑季节/周期因素 |
3.4 数据平衡与增强策略:提升模型鲁棒性的工程实践
边缘端传感器数据往往面临严重的类别不平衡问题。例如,工业设备故障检测中,正常运行数据占99%,故障数据仅占1%;语音唤醒场景中,唤醒词出现频率远低于非唤醒词。不平衡数据会导致模型偏向多数类,少数类召回率极低。
数据平衡方法:
- 欠采样:随机删除多数类样本,使各类别数量接近。适用于多数类数据量充足的情况,但可能丢失重要信息。
- 过采样:复制少数类样本或使用SMOTE等合成方法生成新样本。Edge Impulse中可通过"Data Augmentation"功能实现。
- 类别权重:在训练时设置损失函数的类别权重,提高少数类的惩罚系数。Edge Impulse的"Learn"页面中可调整Class Weights。
数据增强策略:数据增强通过对原始样本施加变换生成新样本,增加数据多样性,提升模型泛化能力。Edge Impulse内置了多种增强算子,也可通过自定义处理块实现。
// Edge Impulse 中常用的数据增强配置示例(以加速度计数据为例)
// 在 "Data Augmentation" 页面中启用以下选项:
// 1. 添加噪声:高斯噪声 σ=0.05
// 2. 时间缩放:0.9x - 1.1x 随机缩放
// 3. 轴旋转:绕Z轴随机旋转 ±15°
// 4. 时间偏移:随机平移 ±0.2秒
// 5. 幅值缩放:0.95x - 1.05x 随机缩放
针对不同传感器类型的增强策略:
- 加速度计:旋转、缩放、添加高斯噪声、时间扭曲(模拟不同运动速度)。
- 音频:添加背景噪声(不同信噪比)、时间拉伸、音调偏移、音量调整。
- 图像:随机裁剪、水平翻转、亮度/对比度调整、添加高斯噪声、随机擦除。
背景与约束:某制造企业需部署振动监测系统,在3台电机上安装加速度计(采样率2kHz),识别4种状态:正常、轴承磨损、转子不平衡、齿轮故障。每台电机运行环境不同(负载、转速、温度),且故障状态难以人为制造。
初始数据情况:连续采集7天,正常数据占92%,故障数据仅8%。其中轴承磨损数据仅采集到2小时,且全部来自1号电机。
分析判断:直接使用原始数据训练,模型对正常状态准确率99%,但对轴承磨损召回率仅35%。且由于故障数据全部来自1号电机,模型可能学习到1号电机的特定振动特征而非故障本身的特征。
操作步骤:
1. 数据划分:按电机划分,使用1号和2号电机数据训练,3号电机数据测试。
2. 数据平衡:对轴承磨损数据过采样(复制+添加噪声),对正常数据随机欠采样至总样本的60%。
3. 数据增强:对故障样本施加时间缩放(0.95x-1.05x)和幅值缩放(0.9x-1.1x),模拟不同负载条件。
4. 特征提取:使用FFT频谱特征(256点),窗口长度1秒,步长0.5秒。
结果对比:增强前测试准确率82%,轴承磨损召回率35%;增强后测试准确率91%,轴承磨损召回率78%。在3号电机(未参与训练)上的表现提升尤为显著。
风险与代价:过采样可能导致模型对特定噪声模式过拟合,需通过验证集监控。增强后的数据量增加3倍,训练时间从15分钟延长至40分钟。
复盘经验:数据平衡与增强不是简单的"复制粘贴",需要结合物理知识设计合理的变换范围。对于故障诊断,建议优先采集真实故障数据,增强仅作为补充手段。
3.5 常见误区与总结复盘
在数据采集与数据集管理环节,以下误区会显著影响模型性能,需要特别注意规避:
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 采样率设置过低 | 丢失高频特征,无法区分相似类别 | 根据信号最高频率的2-5倍设置采样率(Nyquist定理) |
| 窗口长度过短 | 无法捕捉完整事件周期 | 窗口长度至少覆盖一个完整事件周期(如一步约1秒) |
| 标注粒度不一致 | 模型学习到错误的边界信息 | 统一标注规范,使用过渡区标签 |
| 随机划分数据集 | 数据泄漏导致测试准确率虚高 | 按设备/用户/时间隔离划分 |
| 忽略类别不平衡 | 少数类召回率极低 | 使用过采样/欠采样/类别权重 |
| 增强过度 | 生成不真实的样本,损害模型性能 | 增强参数需基于物理约束验证 |
总结:数据采集与数据集管理是Edge Impulse建模流程中耗时最长、对最终效果影响最大的环节。建议遵循"先小规模验证,再大规模采集"的原则:先用少量数据跑通整个impulse流程,确认模型架构和特征提取方案可行后,再投入资源进行大规模数据采集和标注。同时,建立数据版本管理机制,记录每次采集的设备参数、环境条件和标注版本,确保实验可复现。在Edge Impulse中,合理利用其数据管理功能(如Data Explorer、Data Augmentation、Class Weights)可以显著提升数据工程效率,但核心的数据质量把控仍需工程师的领域知识和严谨态度。