3、Edge Impulse平台概览:熟悉Edge Impulse的界面布局、数据采集方式(上传、内置传感器)以及数据管理的基本操作

在开始构建任何机器学习模型之前,理解你所使用的平台是至关重要的。Edge Impulse 作为目前业界领先的边缘设备机器学习平台,其设计哲学是“数据为中心”——即模型的质量上限由数据决定。本章将带你系统性地熟悉 Edge Impulse 的界面布局、三大数据采集通道(文件上传、设备内置传感器、数据代理),以及数据管理中的核心操作。你将理解数据在平台中的流转路径,并掌握如何为后续的“训练集/验证集划分”打下坚实的数据基础。下图展示了 Edge Impulse 中数据从采集到进入 Studio 的核心链路,以及数据版本管理在其中的位置。

Edge Impulse 数据采集与流转链路 数据源 1. 文件上传 (CSV/WAV/JPG) 2. 内置传感器 (手机/开发板) 3. Data Forwarder (串口/代理) 采集与标注 - 数据采集 (频率/时长/传感器) - 标签管理 (类别/属性) - 时间序列/图像标注 数据管理 - 数据集查看/筛选/排序 - 数据切割 (Sample) - 版本控制 (Data Version) 训练集 / 验证集划分 - 按标签比例自动划分 - 按设备/时间序列划分 (防泄漏) 数据版本回滚与增量采集反馈 核心操作路径 数据流向 反馈/迭代路径

上图清晰地展示了 Edge Impulse 数据生命周期的核心链路。数据从左侧的三种来源进入平台,经过采集与标注后,在数据管理模块中进行清洗、切割和版本控制,最终流向右侧的训练集/验证集划分环节。理解这条链路,是避免后续模型过拟合或泛化能力差的前提。

3.1 界面布局与核心功能区

Edge Impulse 的界面设计遵循“项目制”逻辑。当你登录后,首先看到的是项目列表。进入一个项目后,左侧的导航栏是核心操作入口,它按照机器学习工作流顺序排列:Dashboard(仪表盘)、Data acquisition(数据采集)、Impulse design(脉冲设计)、ML pipeline(机器学习流水线)、Deployment(部署)。其中,与本章节最相关的是 Data acquisition 页面,它是所有数据操作的起点。

界面区域 核心功能 与数据划分的关系
Dashboard 项目概览、训练/验证集比例快速预览、模型性能摘要 可快速查看当前数据集的样本总数与类别分布,但无法在此进行划分操作
Data acquisition 数据上传、设备连接、数据采集、标签管理、数据集切割 数据划分的“原料车间”,所有原始数据均在此处完成预处理
Impulse design 定义输入特征(如时间序列窗口大小、图像分辨率) 窗口大小会影响后续训练集样本数量,需在此处提前规划
ML pipeline 特征生成、模型架构选择、训练参数配置 训练/验证集的划分比例在此处最终确认并执行

在 Data acquisition 页面顶部,你会看到三个关键按钮:Collect new data(采集新数据)、Upload data(上传数据)、Data forwarder(数据代理)。这三个按钮对应了三种不同的数据采集方式,下面将逐一详解。

3.2 数据采集方式一:文件上传(Upload Data)

这是最直接、最常用的方式,适用于已有历史数据集或从其他传感器采集好的数据文件。Edge Impulse 支持三种主要格式:CSV(逗号分隔值)、WAV(音频)、JPG/PNG(图像)。

核心原理:上传的数据文件会被平台解析为“样本(Sample)”。对于时间序列数据(如加速度计、麦克风),平台会根据你设定的“窗口长度(Window length)”和“窗口增加量(Window increase)”将长文件切割成多个短样本。例如,一个 10 秒的 CSV 文件,若窗口长度为 2 秒、增加量为 0.5 秒,则会生成约 17 个样本。这一步骤直接决定了后续训练集的大小。

操作流程:

  1. 点击 Upload data 按钮。
  2. 选择文件类型(CSV/WAV/图像)。
  3. 拖拽文件或浏览本地目录进行上传。
  4. 在“Label”输入框中填写该批数据的类别标签(如“idle”、“click”、“vibration”)。
  5. 关键步骤:选择 Data category(数据类别)。这里有两个选项:Training(训练集)和 Testing(测试集)。注意:Edge Impulse 中的“Testing”特指用于最终评估的测试集,而“Validation”验证集是在 ML pipeline 中从训练集中自动划分出来的。初学者常混淆此概念。
  6. 点击 Upload 完成上传。

案例拆解:假设你有一批来自工业振动传感器的 CSV 数据,记录了 4 种机器状态(正常、不平衡、轴承磨损、松动)。每个 CSV 文件时长 60 秒,采样率 1kHz。如果你直接上传,平台会生成大量样本。此时,你需要在“Label”中分别选择对应的状态名称。若你希望验证集能代表不同时间段的工况,建议在采集时就将不同批次的文件分别上传,并利用后续的“Dataset”筛选功能进行划分,而不是全部混在一起。

3.3 数据采集方式二:内置传感器(Built-in Sensors)

Edge Impulse 支持通过浏览器直接访问设备的传感器。这主要针对两类设备:智能手机(通过浏览器 WebUSB/WebBluetooth)和 开发板(如 Nordic nRF52840 DK、ST IoT Discovery Kit)。这种方式适合快速原型验证,无需额外硬件。

操作流程(以手机为例):

  1. 在 Data acquisition 页面点击 Collect new data。
  2. 选择设备类型为“Smartphone”。
  3. 浏览器会弹出权限请求,允许访问加速度计、陀螺仪或麦克风。
  4. 设置采集时长(例如 10 秒)和传感器频率(如 62.5Hz)。
  5. 输入标签名称,点击“Start sampling”开始采集。

经验提醒:使用内置传感器采集时,务必注意设备放置位置和环境噪声。例如,采集“挥手”动作时,手机应固定在手腕上;采集“敲击”声音时,应保持环境安静。这些细节直接影响数据质量,进而影响验证集评估的可靠性。

对于开发板,流程类似,但需要先通过 USB 连接并烧录 Edge Impulse 提供的固件。平台会自动识别设备并显示传感器数据流。这种方式常用于物联网场景,但需注意开发板的存储空间有限,采集的数据会实时传输至云端,因此网络稳定性是关键约束。

3.4 数据采集方式三:Data Forwarder(数据代理)

当你的数据源是自定义硬件、串口设备或第三方软件时,Data Forwarder 是唯一的选择。它本质上是一个运行在你电脑上的 Python 脚本,负责将来自串口、MQTT 或文件的数据转发至 Edge Impulse 云平台。

核心原理:Data Forwarder 通过串口(如 COM3)或 TCP 端口读取原始数据流,并按照 Edge Impulse 的协议封装成 JSON 格式发送至云端。它支持 CSV 格式的连续数据流,也支持 JSON 格式的独立样本。

操作流程:

  1. 在 Data acquisition 页面点击 Data forwarder。
  2. 根据你的操作系统下载对应的代理程序(如 edge-impulse-data-forwarder)。
  3. 在终端中运行命令,并输入你的 API Key。
  4. 选择串口设备和波特率(如 115200)。
  5. 在平台端点击“Start sampling”,代理程序会开始读取串口数据并上传。
# 示例:启动 Data Forwarder 并连接串口
edge-impulse-data-forwarder --baud-rate 115200 /dev/ttyUSB0

常见误区:很多用户误以为 Data Forwarder 只能用于实时数据。实际上,它也可以用于回放预先录制的数据文件(通过 --file 参数)。这在需要重复测试不同划分策略时非常有用。

3.5 数据管理的基本操作:切割、筛选与版本控制

数据管理是确保训练集/验证集划分有效性的最后一道防线。Edge Impulse 提供了三个核心工具:切割(Split)、筛选(Filter)、版本控制(Data Version)。

3.5.1 数据切割(Split Sample)

在 Data acquisition 页面,点击任意一个样本右侧的“...”菜单,选择“Split”。你可以手动拖动切割线,将一个长样本切成多个短样本。这对于处理包含多个动作的连续记录非常有用。例如,一段 30 秒的连续操作视频,你可以将其切割为 10 个 3 秒的独立动作样本。

3.5.2 数据筛选与批量操作

平台支持按标签、设备 ID、采集时间等条件进行筛选。你可以通过勾选多个样本,进行批量删除、批量修改标签或批量移动至不同数据集(Training/Testing)。关键技巧:在划分验证集时,建议使用“Device”维度进行筛选。例如,如果你有 3 个不同的传感器节点采集的数据,应确保每个节点的数据在训练集和验证集中都有分布,而不是将节点 A 的数据全部划入训练集,节点 B 的数据全部划入验证集。这会导致验证集无法反映真实部署场景。

3.5.3 数据版本控制(Data Version)

Edge Impulse 允许你对当前数据集创建快照(Snapshot)。在 Data acquisition 页面右上角,点击“Create new version”。这会在你调整数据(如删除异常样本、重新切割)后,保留一个可回滚的存档。这对于实验对比至关重要——你可以基于版本 1 训练模型 A,基于版本 2 训练模型 B,然后对比两者的性能差异,而无需担心数据变动带来的干扰。

操作 适用场景 对验证集划分的影响
切割(Split) 长序列数据需要细粒度样本 增加样本数量,需重新划分比例
筛选(Filter) 剔除异常值或聚焦特定设备数据 可能改变类别分布,需检查划分后的类别平衡
版本控制(Version) 实验对比、数据回滚 确保不同实验基于同一数据快照,划分结果可复现

风险提示:在数据管理阶段,最常见的错误是数据泄漏。例如,你在切割样本时,如果切割点恰好落在动作的中间,会导致训练集和验证集中出现“半截”动作,模型会学到不完整的特征。建议在切割时,确保每个样本包含完整的动作周期。此外,不要忘记在切割后重新检查标签是否正确。

3.6 案例复盘:从原始数据到可用的训练/验证集

为了将上述概念串联起来,我们来看一个完整的案例。假设你正在为一个智能门锁设计“敲击模式识别”功能,需要区分“敲门”、“拍门”、“踢门”三种动作。

背景与约束:你只有一个开发板(内置加速度计),且需要在一天内完成数据采集和初步验证。网络环境不稳定,无法长时间在线采集。

初始现象与目标:你采集了 20 分钟原始数据,但发现数据中混有大量环境振动噪声。目标是通过数据管理,生成一个干净的、类别平衡的训练集和验证集。

关键操作步骤:

  1. 采集:使用 Data Forwarder 连接开发板,以 100Hz 频率采集加速度数据。每次敲击动作持续约 1 秒,因此设置窗口长度为 1 秒,窗口增加量为 0.5 秒。
  2. 上传与初步标注:将采集的数据上传至平台,分别标注为“knock”、“slap”、“kick”。此时,数据类别分布为:knock 120 个样本,slap 90 个样本,kick 110 个样本。
  3. 数据清洗:在 Data acquisition 页面,通过筛选功能查看每个类别的样本波形。发现部分“knock”样本的波形幅值异常低,经分析是敲击力度过轻导致。使用批量操作删除这些低质量样本,最终得到 knock 100 个,slap 90 个,kick 100 个。
  4. 创建数据版本:点击“Create new version”,命名为“clean_v1”。
  5. 划分策略:在 ML pipeline 中,设置训练集/验证集比例为 80/20。但这里有一个关键点:由于数据来自同一个设备,且采集时间连续,如果随机划分,验证集中可能包含与训练集时间上相邻的样本,导致评估结果过于乐观。因此,我们采用按时间顺序划分:前 70% 的数据作为训练集,后 30% 作为验证集。这模拟了“用过去预测未来”的真实场景。
  6. 结果对比:使用随机划分时,模型验证准确率为 95%;使用时间顺序划分时,准确率降至 88%。虽然准确率下降了,但后者更真实地反映了模型在未知未来数据上的表现。

复盘经验:这个案例揭示了数据管理中的一个核心矛盾:数据量充足但分布不均。通过版本控制,你可以轻松回退到“clean_v1”重新尝试不同的划分策略,而无需重新采集数据。此外,时间序列数据的划分必须考虑时间相关性,否则验证集将失去意义。

总结复盘:本章节的核心在于理解 Edge Impulse 的数据管理能力边界。平台提供了强大的采集与预处理工具,但最终的划分策略(如按时间、按设备、按比例)需要你根据业务场景自行决策。记住,验证集不是“锦上添花”,而是模型上线前的最后一道质检关卡。在下一阶段进入 Impulse design 之前,请确保你的数据已经过清洗、切割、版本控制,并明确划分策略。