2、环境准备:注册Edge Impulse账号、创建项目、了解数据采集与上传方式

在正式进入模型训练之前,环境准备是决定后续工作流顺畅度的关键环节。Edge Impulse 作为一款云端优先的嵌入式机器学习平台,其核心工作流围绕“数据采集 → 特征工程 → 模型训练 → 部署”展开。本章将带你完成从账号注册到项目创建,再到理解数据采集与上传方式的完整闭环,确保你能够正确地将传感器数据从物理世界映射到云端训练管道中。

Edge Impulse 环境准备与数据链路 ① 账号与项目 · 注册 Edge Impulse 账号 · 创建新项目(Project) · 选择目标设备与传感器 · 设置数据标签体系 ② 数据采集 · 内置设备(手机/开发板) · Edge Impulse CLI 采集 · 串口/蓝牙/WiFi 传输 · 采样频率与窗口长度 ③ 上传与验证 · 数据完整性检查 · 标签分布可视化 · 时间戳与传感器对齐 · 数据质量评分 数据流核心链路 传感器(IMU/麦克风) 采集设备(MCU/手机) 上传通道(USB/WiFi) Edge Impulse 云端 采样率 → 窗口大小 → 特征提取 → 模型训练 → 部署回设备 关键参数:频率(Hz)、窗口(ms)、重叠率(%)、标签类别

2.1 注册Edge Impulse账号与项目创建

核心原理:Edge Impulse 采用“项目(Project)”作为组织数据、训练任务和部署产物的基本单元。每个项目对应一个具体的机器学习任务(如“风扇故障检测”或“手势识别”),项目内部包含数据样本、特征管道、训练配置和部署目标。账号系统则负责资源配额管理、版本追踪和团队协作权限控制。

操作流程:

  1. 访问官网并注册:打开 edgeimpulse.com,点击右上角“Sign Up”。支持使用 GitHub、Google 账号快速注册,也可以使用邮箱创建独立账号。免费版(Developer)提供最多 3 个活跃项目,每个项目 10 分钟数据存储限制,足以完成课程实验。
  2. 创建新项目:登录后点击“Create new project”,输入项目名称(建议使用“任务-设备-日期”格式,如 gesture_imu_nano_202501),选择“Accelerometer”或“Audio”等默认传感器类型。注意:项目创建后传感器类型仍可在数据采集阶段调整,但提前选对可简化后续配置。
  3. 配置目标设备:在项目设置中,选择你最终部署的硬件平台(如 Nordic nRF52840、STM32、ESP32 或手机)。Edge Impulse 会根据设备自动优化特征提取和模型部署选项。
  4. 设置标签体系:在“Data acquisition”页面,预先规划好分类标签。例如手势识别项目可设置 up、down、left、right、idle 五个标签。标签名称应使用小写英文和下划线,避免特殊字符。
经验提醒:免费账号的项目数量有限,建议将同一类实验合并到一个项目中,通过不同“Data sample”的标签区分。例如“设备A_正常”和“设备B_正常”可以放在同一项目下,但标签名称中应包含设备标识,避免模型混淆不同设备的噪声特征。

2.2 数据采集方式详解

判断方法:Edge Impulse 提供三种主流数据采集路径,选择依据是硬件条件、数据量和实时性要求。下表对比了三种方式的适用场景与操作要点:

采集方式 适用硬件 传输接口 采样率上限 操作复杂度
Edge Impulse 手机端 iOS/Android 手机 WiFi/蜂窝网络 100 Hz(IMU) 低(无需代码)
Edge Impulse CLI 树莓派、PC + USB 传感器 USB 串口 取决于传感器驱动 中(需安装 CLI)
开发板固件(Data Forwarder) Arduino、STM32、nRF52 USB 虚拟串口 1000 Hz+ 中高(需烧录固件)

操作流程(以开发板为例):

  1. 安装 Edge Impulse CLI:在终端执行 npm install -g edge-impulse-cli,确保 Node.js 版本 ≥ 14。
  2. 烧录数据采集固件:在项目页面选择“Data acquisition”→“Connect a device”,下载对应开发板的固件(如 edge-impulse-firmware-nrf52840),使用 nRF Connect Programmer 或 STM32CubeProgrammer 烧录。
  3. 连接设备:通过 USB 连接开发板,运行 edge-impulse-daemon,按提示登录并选择项目。设备会出现在“Devices”列表中,状态显示为“Connected”。
  4. 配置采样参数:在网页端设置采样频率(如 62.5 Hz)、窗口长度(如 2000 ms)和传感器通道(加速度计 X/Y/Z 或麦克风)。
  5. 开始采集:点击“Start sampling”,同时操作设备执行动作(如挥动手臂)。采集完成后数据自动上传至云端,并显示在“Raw data”列表中。
风险提示:采样频率并非越高越好。过高的采样率会生成大量冗余数据,增加训练时间和模型大小。对于人体活动识别,50-100 Hz 已足够;对于振动分析,可能需要 1 kHz 以上。窗口长度则需覆盖一个完整动作周期,例如手势识别建议 1-2 秒窗口。

2.3 数据上传与质量验证

核心原理:数据上传不仅仅是文件传输,更关键的是数据与标签的关联、时间戳对齐和格式校验。Edge Impulse 要求每个样本包含固定长度的传感器读数序列,并附带一个类别标签。上传后系统会自动计算数据质量指标,包括信号范围、噪声水平和缺失值比例。

操作流程:

  • 批量上传:在“Data acquisition”页面点击“Upload data”,支持 CSV、WAV 或 JSON 格式。CSV 文件需包含时间戳列和传感器数据列,每行代表一个采样点。
  • 标签分配:上传时可选择“Label”字段,或上传后批量选中样本进行标签修改。建议在采集时即通过固件预设标签,减少后期整理工作量。
  • 数据分割:在“Dashboard”页面,系统默认按 80/20 比例划分训练集和测试集。你可以手动调整分割比例,但需确保每个类别在训练集中至少包含 10 个样本。
  • 质量检查:点击单个样本,查看波形图。检查是否存在平线(传感器死机)、突变尖峰(电磁干扰)或数据截断(窗口不完整)。异常样本应删除或重新采集。
实战场景:假设你正在为工业电机做振动异常检测。使用 STM32 开发板 + MPU6050 传感器,采样率设为 500 Hz,窗口长度 1000 ms。采集了 50 个“正常”样本和 50 个“故障”样本。上传后,你发现“故障”样本中有 5 个波形出现明显削顶(传感器量程溢出)。此时应检查传感器量程配置,将 ±2g 改为 ±4g,重新采集这 5 个样本,而不是直接删除——因为删除会减少故障类别的代表性,影响模型泛化能力。

2.4 常见误区与总结复盘

误区一:忽略数据平衡。如果“正常”类别有 200 个样本,而“故障”只有 20 个,模型会严重偏向多数类。解决方法是采集时保持各类别样本数量接近,或使用数据增强(如添加噪声、时间偏移)扩充少数类。

误区二:采样参数与部署环境不一致。训练时使用 100 Hz 采样,但部署设备实际运行在 50 Hz,会导致推理性能下降。务必在项目设置中锁定采样频率,并在部署前用目标设备重新验证。

误区三:标签定义模糊。例如“异常”标签过于笼统,应细分为“轴承磨损”“齿轮断裂”“转子不平衡”等具体类型。清晰的标签体系有助于模型学习区分性特征,也便于后续故障定位。

总结复盘:环境准备阶段的核心产出物是一个结构清晰、数据质量可靠的项目。建议在开始采集前,先花 15 分钟规划标签体系、采样参数和样本数量目标。一个实用的经验法则是:每个类别至少 30 个样本,每个样本覆盖 2-3 个完整动作周期。数据质量远胜于数据数量,10 个干净样本优于 100 个噪声样本。完成本章环境准备后,你将拥有一个可复用的数据采集工作流,为后续特征工程和模型训练打下坚实基础。