4. Edge Impulse平台入门

在完成振动数据采集与预处理的理论准备后,我们需要一个能够将原始振动信号转化为可部署故障分类模型的实战环境。Edge Impulse作为目前工业界与学术界应用最广泛的边缘机器学习平台,提供了从数据标注、特征工程、模型训练到固件部署的全链路解决方案。本章将带你完成平台注册、项目创建、界面功能拆解以及振动数据上传与管理的完整操作闭环,确保你能够熟练地在Edge Impulse中搭建属于自己的第一个振动故障分类项目。

阶段1:账号与项目 注册账号 创建项目 项目配置 阶段2:数据采集 上传CSV/JSON 设备SDK采集 数据分割 阶段3:数据管理 标签标注 数据集划分 异常检测 阶段4:验证 数据完整性 类别平衡 时间戳检查 关键操作链路与数据流向 原始振动CSV 加速度计/陀螺仪 时间序列切割 窗口长度/步长 标签分配 正常/不平衡/磨损 训练/测试集划分 80% / 20% 分层抽样 • 数据上传支持拖拽与批量导入,单文件最大100MB • 每个样本需包含时间戳、X/Y/Z轴加速度值及标签列 • 建议每类故障样本不少于200个窗口,保证模型泛化能力 • 上传后可在“Data Explorer”中可视化检查数据分布

4.1 平台注册与项目创建

4.1.1 注册流程与账号类型选择

Edge Impulse的注册入口位于官网首页右上角的“Get Started”按钮。推荐使用企业邮箱或GitHub账号进行OAuth认证,这便于后续团队协作时的权限管理。免费版(Developer)提供每月最多3个活跃项目、每次上传100MB数据、以及每天120分钟的模型训练时长,对于课程学习和原型验证完全足够。若后续需要部署到工业级网关或批量设备,再考虑升级至Enterprise版。

注册完成后,系统会自动跳转到Dashboard。首次登录时,建议在“Profile Settings”中完成两项关键配置:默认数据格式(选择CSV,因为振动传感器输出通常为逗号分隔的文本流)和时区设置(影响时间戳解析)。这两项配置看似微小,但能避免后续数据上传时出现格式解析错误。

4.1.2 创建振动故障分类项目

点击右上角“Create new project”按钮,输入项目名称,例如“Vibration_Fault_Classification”。在“Project type”选择“Classification”(分类任务),因为我们要区分正常、不平衡、轴承磨损等离散故障状态。若后续需要预测剩余寿命,则选择“Regression”。项目创建后,系统会生成一个唯一的Project ID,该ID在调用API或使用CLI工具时作为身份标识。

经验提醒:项目命名建议遵循“设备类型_故障类型_算法版本”的格式,例如“Motor_BearingFault_v2”。这样在同时管理多个实验项目时,可以快速定位到特定实验条件,避免混淆。

4.2 界面导航与核心功能模块

Edge Impulse的界面设计遵循“数据→特征→模型→部署”的线性逻辑,左侧导航栏从上到下依次为:Dashboard(项目总览)、Data acquisition(数据采集)、Impulse design(特征与模型设计)、Model testing(模型验证)、Deployment(部署)。理解这个导航顺序,就掌握了平台的核心工作流。

导航模块 核心功能 振动分类场景中的典型操作
Dashboard 项目概览、成员管理、导出设置 查看已上传数据量、训练时长配额、项目ID
Data acquisition 数据上传、设备连接、数据切割 上传CSV文件,设置窗口长度(如1024点)与步长(512点)
Impulse design 特征提取参数、模型架构选择 选择频谱特征或小波特征,配置神经网络层数
Model testing 模型训练、混淆矩阵、特征重要性 查看正常/故障类别的分类准确率与F1分数
Deployment 生成C++/Python库、OpenMV固件 导出为Arduino库或Linux可执行文件

在“Data acquisition”页面中,右侧的“Collect data”区域提供了三种数据接入方式:Upload data(手动上传文件)、Connect a device(通过SDK连接开发板实时采集)、Use your mobile phone(利用手机传感器采集)。对于本课程,我们主要使用Upload data方式,因为工业振动数据通常由专用采集卡或PLC系统导出为CSV文件。

4.3 振动数据上传与格式规范

4.3.1 数据格式要求与模板

Edge Impulse对CSV文件有严格的格式要求。每行代表一个时间点的采样数据,列顺序固定为:timestamp, x_axis, y_axis, z_axis, label。其中timestamp可以是Unix时间戳(毫秒级)或相对采样序号;x/y/z为加速度计三轴读数,单位建议统一为m/s²或g;label为字符串类型的类别标签,如“normal”、“imbalance”、“bearing_wear”。

timestamp,x_axis,y_axis,z_axis,label
0,0.12,-0.34,9.81,normal
1,0.15,-0.31,9.78,normal
2,0.11,-0.36,9.82,normal
...
500,2.34,-1.56,9.45,imbalance
501,2.41,-1.62,9.40,imbalance

上传时,系统会要求指定“Label”列对应的类别名称。如果CSV中已包含label列,系统会自动识别;若没有,则需在上传界面手动为整个文件指定一个标签(适用于单一故障类型的文件)。

4.3.2 数据切割与窗口参数设置

振动信号是连续的时间序列,但模型训练需要固定长度的样本。Edge Impulse的“Data acquisition”页面提供了Window length(窗口长度)和Window increase(窗口步长)两个关键参数。窗口长度决定了每个样本包含的采样点数,直接影响频率分辨率;步长则控制相邻样本的重叠程度,影响样本数量。

参数选择原则:对于转速为1500RPM(25Hz)的电机,若采样率为2kHz,一个旋转周期包含80个采样点。建议窗口长度至少覆盖5个旋转周期(即400点),以保证特征提取时能捕捉到完整的振动周期。步长通常设为窗口长度的50%(即200点),这样既能保证样本数量充足,又不会因过度重叠导致数据冗余。

设置完成后,点击“Split data”按钮,系统会按照默认的80/20比例将数据划分为训练集和测试集。这里需要注意,Edge Impulse默认采用随机划分,但振动数据具有时间连续性,随机划分可能导致同一段连续信号同时出现在训练集和测试集中,造成数据泄漏。因此,建议在“Dataset”选项卡中手动选择“Preserve order”模式,按时间顺序前80%作为训练集,后20%作为测试集。

4.4 数据管理、标注与质量验证

4.4.1 数据标注与类别平衡检查

数据上传并切割后,进入“Data Explorer”页面。这里以散点图形式展示所有样本的特征分布(默认使用PCA降维后的前两个主成分)。你可以直观地看到不同类别的样本是否形成清晰的聚类。若发现“normal”类样本有500个,而“bearing_wear”类只有50个,则属于典型的类别不平衡问题。此时需要返回数据采集阶段,补充故障样本,或使用平台提供的“Resample”功能进行过采样。

标注操作在“Labeling”选项卡中完成。对于振动数据,通常不需要逐样本手动标注,因为CSV文件中已包含标签列。但若数据来自无标签的采集设备,则需在“Labeling”界面中,通过框选散点图中的聚类区域,批量分配标签。这种半自动标注方式在处理大量未标记数据时效率极高。

4.4.2 数据质量检查与异常值处理

在“Data quality”面板中,系统会计算每个样本的均值、方差、峰值等统计指标。振动数据常见的质量问题包括:传感器饱和(读数长时间处于满量程)、漂移(均值随时间缓慢变化)、尖峰噪声(偶发的大幅值脉冲)。对于饱和数据,应直接删除对应样本;对于漂移,可通过高通滤波预处理;对于尖峰噪声,可采用中值滤波或阈值截断。

风险提示:切勿在Edge Impulse平台内直接修改原始数据。平台的设计理念是“数据不可变”,所有预处理操作应在上传前完成。若发现数据质量问题,应回到本地Python环境,使用pandas或scipy进行清洗后重新上传。否则,后续模型训练的结果将无法溯源。

4.5 实战案例:电机轴承故障数据上传与验证

场景背景:某工厂的离心泵电机(转速2980RPM,采样率12.8kHz)出现异常振动,现场采集了正常状态和轴承外圈故障两种工况的数据。数据以CSV格式存储,每个文件包含约30秒的连续采样(约384,000行)。工程师需要将这些数据上传至Edge Impulse,建立初步的故障分类模型。

初始现象与目标:原始CSV文件大小为45MB,包含两个文件:normal.csv和fault.csv。目标是将数据切割为窗口长度为1024点(对应80ms)的样本,并确保训练集与测试集的时间连续性。

操作步骤:

  1. 在Data acquisition页面,点击“Upload data”,选择normal.csv,在“Label”输入框中填写“normal”。重复操作上传fault.csv,标签为“fault”。
  2. 设置Window length为1024,Window increase为512。系统自动生成约750个样本(正常375个,故障375个)。
  3. 在“Dataset”选项卡中,选择“Preserve order”模式,将前80%样本(按时间顺序)划为训练集,后20%为测试集。
  4. 进入Data Explorer,观察散点图。发现正常样本与故障样本在PCA空间中明显分离,但存在少量重叠区域。进一步检查发现,重叠样本均来自设备启停阶段的瞬态振动。
  5. 在“Data quality”面板中,筛选出峰值超过±5g的样本,共发现12个异常样本(均为传感器安装松动导致的冲击脉冲)。删除这些样本后,重新划分数据集。

结果对比:删除异常样本前,训练集包含600个样本;删除后为588个样本。虽然样本量减少2%,但后续模型训练的准确率从91.2%提升至96.8%,且混淆矩阵中的假阳性率显著下降。这说明数据质量对模型性能的影响远大于样本数量。

风险与代价:删除样本的操作不可逆,若后续发现误删了有效数据,需要重新上传原始文件。因此,建议在删除前先导出异常样本列表,备份至本地。

复盘经验:振动数据中的异常值往往对应真实的物理事件(如设备启停、负载突变),而非纯粹的噪声。在删除前,应结合设备运行日志判断是否为有效工况。本案例中,12个异常样本均出现在设备启动后的前2秒,属于瞬态过程,对于稳态故障诊断任务而言,删除是合理的。

4.6 常见误区与总结复盘

常见误区 后果 正确做法
忽略时间戳列,直接上传无时间序列的数据 系统无法正确排序,导致窗口切割错乱 确保CSV首列为时间戳或递增序号
所有类别数据放在同一个CSV中,但未设置label列 系统将所有数据视为同一类别 每个文件单独上传,或确保CSV包含label列
窗口长度设置过短(如64点) 频率分辨率不足,无法区分低速故障特征 根据转速计算窗口长度,至少覆盖5个旋转周期
使用随机划分而非时间顺序划分 数据泄漏,模型评估结果过于乐观 使用“Preserve order”模式,按时间顺序划分
上传后直接训练,未检查数据质量 传感器饱和或尖峰噪声导致模型误判 在Data quality面板中检查统计指标,删除异常样本

本章完成了Edge Impulse平台从注册到数据管理的全流程操作。重点在于理解数据格式规范、窗口参数对特征提取的影响,以及数据质量验证的重要性。在下一阶段,我们将基于这些已管理好的数据,进入Impulse design模块,设计适用于振动信号的特征提取流程与分类模型架构。请务必确保你的项目中已存在至少两类标签(如normal与fault),且每类样本数不少于200个,这是后续模型训练的最低数据要求。