2、环境准备:注册Edge Impulse账号、创建项目、导入传感器数据(CSV/实时采集)、数据预览与基础管理
在开始使用Edge Impulse进行边缘机器学习模型开发之前,环境准备是决定后续工作流顺畅度的关键环节。很多初学者在模型训练阶段遇到的数据格式错误、样本标签混乱、设备连接失败等问题,往往可以追溯到环境准备阶段的疏忽。本章将系统讲解从账号注册到数据基础管理的完整流程,帮助您建立一套规范、可复现的数据工程基线。我们将重点解决三个核心问题:如何高效创建项目结构、如何将不同来源的传感器数据正确导入平台、以及如何通过数据预览与基础管理确保训练数据的质量与一致性。
2.1 账号注册与项目创建:从零搭建工作空间
核心原理
Edge Impulse采用基于云端的SaaS架构,所有数据处理、特征生成和模型训练均在云端完成。账号体系分为免费开发者版(Developer)和企业版(Enterprise),两者的核心区别在于数据隐私保护级别、协作功能以及可用的计算资源。免费版允许创建3个公开项目,每个项目有数据存储上限(通常为100MB原始数据),适合学习和小规模原型验证。企业版则支持私有项目、SSO登录、团队协作以及本地部署选项,适用于生产环境。
项目(Project)是Edge Impulse中最基本的工作单元,它封装了数据集、特征生成配置、模型训练结果以及部署目标。一个项目对应一个具体的机器学习任务,例如"基于加速度计的跌倒检测"或"麦克风声音分类"。项目创建时需明确三个关键参数:项目名称(建议使用语义化命名,如"imu_gesture_v2")、目标设备(影响后续特征生成器的默认参数)以及数据采集方式(决定数据导入的接口类型)。
操作流程
- 注册账号:访问
https://studio.edgeimpulse.com,支持Google/GitHub账号OAuth登录,或使用邮箱注册。建议使用企业邮箱以便后续升级。 - 创建项目:登录后点击"Create new project",输入项目名称和描述。在"Target device"下拉框中选择您实际使用的硬件平台(如ESP32、Arduino Nano 33 BLE Sense、手机等),该选择会影响后续特征生成器的推荐参数。
- 配置标签体系:在项目设置(Dashboard)中,预先定义好所有类别标签(Label)。例如手势识别项目可定义"up、down、left、right、circle"五个标签。预定义标签可避免后续数据导入时出现拼写不一致的问题。
- 设置数据采集参数:在"Data acquisition"页面,设置默认采样率(如100Hz)、样本时长(如2秒)以及传感器通道数。这些参数将作为后续数据导入的校验基准。
案例拆解:从零搭建一个振动监测项目
假设您需要为一个工业电机建立振动异常检测系统。初始目标是区分"正常运转"和"轴承磨损"两种状态。在创建项目时,您选择目标设备为"Arduino Nano 33 BLE Sense"(内置IMU传感器),采样率设置为1000Hz(因为振动信号通常需要较高采样率),样本时长为1秒(足够捕捉多个振动周期)。标签体系预定义为"normal"和"fault"。项目创建完成后,您可以在Dashboard中看到项目ID、数据存储用量以及API密钥,这些信息在后续使用CLI工具或API导入数据时至关重要。
常见误区与总结
- 误区1:忽略目标设备选择。目标设备决定了Edge Impulse推荐的传感器配置和特征生成器参数。如果实际使用设备与项目设置不符,可能导致特征生成器输出不匹配。
- 误区2:标签体系设计过于随意。标签名称应使用小写字母和下划线,避免空格和特殊字符。例如使用"bearing_fault"而非"Bearing Fault!"。
- 误区3:不设置采样率基准。如果后续导入的CSV文件采样率与项目设置不一致,Edge Impulse会发出警告,但不会自动重采样,这可能导致特征提取时的时间窗口计算错误。
2.2 传感器数据导入:CSV上传与实时采集双通道
核心原理
Edge Impulse支持两种数据导入模式:批量上传(CSV)和实时采集(Device)。CSV上传适用于已有历史数据或从其他系统导出的数据,其核心要求是数据格式必须符合平台规范:每列代表一个传感器通道,每行代表一个时间采样点,且必须包含时间戳列(或通过采样率推算)。实时采集则通过Edge Impulse的固件(Firmware)在开发板上直接采集数据并无线传输到云端,适用于需要现场采集新数据的场景。
数据导入的底层逻辑是"样本(Sample)"的概念。一个样本是包含固定时长数据的独立单元,例如一个2秒的加速度计数据片段。每个样本必须关联一个标签。Edge Impulse将样本组织为"训练集(Training)"和"测试集(Testing)"两部分,默认按80/20比例随机划分,但用户可手动调整。
CSV文件导入详细步骤
- 准备CSV文件:文件格式应为纯文本,每列用逗号分隔。第一行可以是列名(如"timestamp,acc_x,acc_y,acc_z"),也可以直接是数据。如果包含时间戳列,建议使用Unix时间戳(毫秒级)或ISO 8601格式。
- 进入上传界面:在"Data acquisition"页面,点击"Upload data"按钮,选择"CSV file"选项。
- 配置解析参数:指定CSV文件中的列名映射关系。例如将第1列映射为"timestamp",第2-4列映射为"acc_x/acc_y/acc_z"。设置采样率(如果CSV中没有时间戳列)或自动检测时间戳。
- 设置样本切割方式:选择"Split into samples"选项,设置每个样本的时长(如2秒)和重叠率(如0%)。Edge Impulse会自动将长序列数据切割为多个样本。
- 分配标签:为这批数据指定标签。如果CSV中包含标签列,可自动映射;否则手动选择标签。
- 上传并验证:点击上传后,系统会进行格式校验。若出现错误,会提示具体行号和原因。
实时采集操作流程
- 烧录Edge Impulse固件:在"Devices"页面,选择您的开发板型号,下载对应的固件(.bin文件),使用烧录工具(如Arduino IDE或STM32CubeProgrammer)烧录到设备。
- 连接设备:将开发板通过USB连接到电脑,或通过WiFi/蓝牙连接到Edge Impulse云端。在"Devices"页面点击"Connect"按钮,等待设备状态变为"Online"。
- 配置采集参数:在"Data acquisition"页面,选择已连接的设备,设置采样率、样本时长和传感器通道(如加速度计、陀螺仪、麦克风等)。
- 开始采集:点击"Start sampling"按钮,设备开始实时采集数据并上传。采集过程中可实时预览波形。
- 标注与保存:采集完成后,为样本分配标签并保存。建议每个标签至少采集50个样本,以保证训练效果。
// CSV文件示例(加速度计数据,100Hz采样率)
timestamp,acc_x,acc_y,acc_z
1700000000000,0.12,-0.98,0.34
1700000000010,0.15,-0.97,0.33
1700000000020,0.11,-0.99,0.35
...
// 注意:timestamp为毫秒级Unix时间戳,间隔10ms对应100Hz采样率
案例拆解:导入历史振动数据并处理采样率不一致问题
某团队有一批从工业数据记录仪导出的振动数据,原始采样率为2000Hz,但Edge Impulse项目设置为1000Hz。直接上传会导致时间戳间隔不一致,特征生成器计算频率特征时出现偏差。解决方案是:在导入前使用Python脚本对数据进行重采样,将2000Hz降采样到1000Hz。具体操作是使用scipy.signal.resample函数,将数据长度减半,并重新生成时间戳。重采样后,数据量从原来的200万行减少到100万行,但保留了关键频率成分(振动信号主要能量集中在500Hz以下,满足奈奎斯特采样定理)。导入后,在数据预览中确认波形无畸变,样本切割正常。
常见误区与总结
- 误区1:CSV文件包含非数值字符。如"NaN"、"null"或空值,会导致解析失败。应在导入前清洗数据。
- 误区2:忽略时间戳精度。如果时间戳使用秒而非毫秒,且采样率较高,会导致时间戳重复,Edge Impulse会报错。
- 误区3:实时采集时设备连接不稳定。WiFi信号弱或USB供电不足会导致数据丢包。建议使用有线连接或确保设备靠近路由器。
- 误区4:样本时长设置过短。对于振动信号,1秒样本可能不足以捕捉完整的故障特征周期。建议根据信号特性设置样本时长,通常为信号周期的5-10倍。
2.3 数据预览与基础管理:质量保障的第一道防线
核心原理
数据预览(Data Preview)是Edge Impulse提供的可视化工具,用于在训练前检查数据的正确性和分布情况。它支持时域波形图、频谱图以及多通道对比视图。数据管理则包括样本的增删改查、标签调整、数据集划分以及版本控制。良好的数据管理习惯可以显著减少模型训练中的调试时间。
数据预览的核心价值在于发现"隐性错误":例如传感器通道接反(X轴和Y轴数据互换)、信号饱和(数值恒定在最大值)、基线漂移(信号缓慢偏移)等。这些问题在数值统计中可能不明显,但在波形图中一目了然。
数据预览操作指南
- 进入预览界面:在"Data acquisition"页面,点击任意样本的"Preview"按钮,或点击"Raw data"标签页查看所有样本。
- 选择视图模式:支持"Time series"(时域)、"Spectrogram"(频谱)、"FFT"(快速傅里叶变换)三种视图。对于振动信号,建议同时查看时域和频谱。
- 多通道对比:勾选多个通道(如acc_x、acc_y、acc_z),观察它们之间的相位关系和幅值比例是否合理。
- 检查统计指标:查看每个通道的均值、方差、最大值、最小值。如果某个通道的方差接近0,说明该传感器可能未正常工作。
数据基础管理功能详解
| 管理功能 | 操作路径 | 适用场景 | 注意事项 |
|---|---|---|---|
| 样本删除 | 选中样本 → Delete | 删除异常样本(如设备跌落时采集的数据) | 删除后不可恢复,建议先导出备份 |
| 标签修改 | 选中样本 → Edit label | 纠正错误标注或合并类别 | 批量修改时注意标签分布变化 |
| 数据集划分 | Dashboard → Train/Test split | 调整训练集与测试集比例 | 默认80/20,建议测试集至少每类20个样本 |
| 数据导出 | Dashboard → Export data | 备份数据或迁移到其他项目 | 导出格式为JSON或CSV |
| 版本快照 | Dashboard → Create snapshot | 在关键节点保存数据版本 | 快照包含数据和标签,可用于回滚 |
案例拆解:通过数据预览发现传感器通道错位问题
某团队在采集人体运动数据时,使用IMU传感器(包含加速度计和陀螺仪)。在数据预览中,他们发现acc_x通道的波形与预期不符——当设备水平放置时,acc_x应接近0,但实际显示为-1g(重力加速度)。进一步检查发现,传感器在PCB上的安装方向与预期不同,导致X轴和Z轴数据互换。通过数据预览的时域波形对比,团队迅速定位了问题,并在后续采集中调整了传感器坐标映射。如果没有数据预览,这个问题可能在特征生成阶段才暴露,导致模型训练失败。
常见误区与总结
- 误区1:跳过数据预览直接训练。这会导致模型在异常数据上学习,产生"垃圾进,垃圾出"的结果。
- 误区2:数据集划分不均衡。如果某个标签的样本量远少于其他标签,模型会偏向多数类。建议使用"Stratified split"(分层抽样)确保每个标签在训练集和测试集中的比例一致。
- 误区3:不进行版本管理。当数据多次更新后,无法追溯模型训练时使用的具体数据版本,导致实验不可复现。
- 误区4:忽略数据平衡性检查。在"Dashboard"页面可以查看每个标签的样本数量直方图。如果发现某个标签样本过少(如少于20个),应补充采集或使用数据增强技术。
通过本章的学习,您已经掌握了Edge Impulse环境准备的核心技能:从账号注册到项目创建,从CSV批量导入到实时采集,从数据预览到基础管理。这些看似基础的操作,实际上是构建高质量机器学习模型的地基。在下一阶段,您将进入特征生成器的参数选择环节,届时您会深刻体会到,干净、规范、有代表性的数据是特征工程成功的前提。请务必在实际项目中反复练习本章内容,形成自己的数据管理SOP(标准操作流程)。