news 2026/5/13 9:49:14

(B站TinyML教程学习笔记)C8 edge impulse 快速入门+C9 数据提取+C10 运动数据的特征提取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(B站TinyML教程学习笔记)C8 edge impulse 快速入门+C9 数据提取+C10 运动数据的特征提取

0:06 - 1:00 为什么使用 Edge Impulse

常见机器学习开发方式

传统机器学习通常会使用:

  • TensorFlow
  • Scikit-learn

这些框架功能强大,但:

  • 学习成本高
  • 需要写大量代码
  • 对嵌入式开发者不太友好

Edge Impulse 的作用

Edge Impulse

核心特点:

  • 图形化界面
  • 不需要深入学习AI框架
  • 自动完成训练流程
  • 适合嵌入式AI/TinyML
  • 可以快速部署到单片机

核心思想:

“让嵌入式工程师不用精通AI框架,也能做机器学习项目”


1:01 - 1:58 Edge Impulse 项目流程

创建项目流程

进入平台后:

  1. 创建项目
  2. 给项目命名
  3. 打开项目

Edge Impulse 的完整机器学习流程

左侧面板展示整个AI流程:

数据采集 ↓ Impulse(机器学习流水线) ↓ 训练模型 ↓ 部署到嵌入式设备

这里的 Impulse:

可以理解为:

“数据处理 + 特征提取 + AI模型”的组合流程


1:31 - 2:04 API Key 与数据上传

API Key

作用:

  • 连接手机
  • 连接单片机
  • 上传数据
  • 实时测试

HMAC Key

用于:

  • 自动上传数据
  • 脚本化数据采集
  • 自动训练流程

适合:

  • 自动化AI训练
  • 批量数据采集

2:04 - 3:00 Edge Impulse 支持的数据上传方式

方法1:直接上传文件

支持:

  • 音频
  • 图像
  • JSON
  • CSV
  • 原始传感器数据

方法2:命令行工具上传

适合:

  • 自动化
  • 脚本上传

方法3:开发板实时上传

例如:

  • Arduino Nano 33 BLE Sense

可以实时上传:

  • 加速度计
  • 陀螺仪
  • 麦克风
  • IMU数据

方法4:手机上传

手机可以作为:

  • 传感器设备
  • AI测试设备

非常适合入门实验。


3:06 - 3:23 手机连接 Edge Impulse

流程:

设备页面 ↓ 连接新设备 ↓ 显示二维码 ↓ 手机扫码 ↓ 连接成功

连接后:

手机会出现在设备列表中。


3:29 - 6:33 Arduino Nano 连接流程

进入 Bootloader 模式

方法:

快速按两次 Reset 键。

现象:

黄色LED闪烁。


3:55 - 5:00 安装开发环境

需要安装:

1. Node.js

Node.js

作用:

运行 Edge Impulse CLI 工具。


2. Arduino CLI

Arduino CLI

作用:

命令行管理Arduino。


5:01 - 5:14 安装 Edge Impulse CLI

命令:

npm install -g edge-impulse-cli

作用:

安装:

  • edge-impulse-daemon
  • 数据上传工具
  • 设备连接工具

5:14 - 5:42 烧录 Edge Impulse 固件

流程:

下载固件 ↓ 解压 ↓ 运行脚本 ↓ 自动烧录

烧录完成后:

按一次 Reset 重启开发板。


5:47 - 6:33 连接开发板到云端

命令:

edge-impulse-daemon

功能:

  • 登录账户
  • 选择COM口
  • 选择项目
  • 上传数据

6:54 - 8:59 手势识别项目

项目目标

制作“魔法棒”手势识别:

识别:

  • 左右挥动
  • 上下挥动
  • 画圆

7:15 - 8:24 为什么训练和部署必须用同类传感器

核心原则:

训练用什么传感器,部署最好也用什么传感器。

原因:

不同IMU:

  • 精度不同
  • 噪声不同
  • 灵敏度不同

否则:

模型可能失效。


7:49 - 8:06 FFT 为什么重要

这里第一次提到:

傅里叶变换(FFT)

作用:

把:

时域信号

转换成:

频域信号

用于提取:

  • 振动频率
  • 周期特征
  • 动作节奏

这是 TinyML 中非常重要的特征提取方法。


8:59 - 11:16 数据采集流程

四个类别

需要采集:

类别动作
left-right左右
up-down上下
circle画圆
idle静止

9:10 - 11:16 数据采集要求

每类约200秒数据

因为:

每次采样10秒。

所以:

200秒 ÷ 10秒 ≈ 20个样本

采集时的重要原则

保持一致性

包括:

  • 握持方式
  • 动作速度
  • 动作频率

否则:

模型会变难训练。


数据质量非常重要

如果图像:

  • 不规律
  • 没有重复模式
  • 噪声太大

就应该:

删除重新采集。


12:43 - 14:33 数据集划分

机器学习通常分:

数据集作用
Training训练模型
Validation调参
Test最终考试

推荐比例

类型比例
Train60~80%
Validation10~20%
Test10~20%

13:08 - 13:42 验证集的作用

验证集用于:验证模型训练的结果好坏

如果模型在验证集上表现不好,就调整超参数:

  • 学习率
  • 网络大小
  • Epoch数量等等

13:42 - 14:19 为什么测试集不能提前使用

因为:

如果一直根据测试集调参:

模型会:

“偷偷记住测试集”

导致:

测试结果失真。


14:52 - 17:47 数据集代表性问题(极其重要)

这是机器学习最核心的问题之一。


贵宾犬例子

如果训练集:

全是贵宾犬。

模型可能学到:

  • 卷毛
  • 垂耳

而不是:

“狗”的本质特征。


本质问题

模型不会真正“理解”。

它只是:

找统计规律。


16:47 - 17:47 糟糕数据集案例

问题:

1. 背景统一

模型会误认为:

黑背景 = 狗。


2. 全是狗头

导致:

看见全身狗反而不会识别。


3. 没有卡通图

模型无法泛化到:

  • 插画
  • 动画
  • 卡通

17:35 经典原则

垃圾进 垃圾出 (Garbage In, Garbage Out)

数据差:

模型一定差。


17:59 - 20:40 数据不平衡问题

例子

99% 空地
1% 有狗

模型最终会:

永远预测“空地”

准确率还能有99%。


这叫:

朴素分类器(Naive Classifier)

特点:

  • 什么都预测成最大类别
  • 准确率虚高
  • 实际没用

19:19 - 19:49 解决方法

方法1:更多数据

永远有效。


方法2:平衡数据集

例如:

四分类:

每类约25%

20:40 - 21:47 Edge Impulse 自动平衡数据集

按钮:

Rebalance Dataset

自动:

  • 80% Train
  • 20% Test

22:06 - 23:52 什么是特征(Feature)

定义

Feature:

可测量的属性。

例如:

加速度计:

X Y Z

就是3个特征。


23:52 - 24:20 为什么单时刻数据是坏特征

因为:

动作本质是:

随时间变化。

单一时间点:

无法反映动作过程。


25:15 - 25:41 时间窗口思想(非常重要)

解决方案:

使用:

时间窗口(Window)

例如:

2秒数据。


25:24 - 25:41 本项目的数据规模

采样率:

62.5Hz

2秒:

62.5×2=125

每轴:

125个点。

3轴:

125×3=375

总输入:

375维。


25:48 - 27:53 深度学习的缺点

虽然神经网络可以:

自动学习特征。

但代价:

  • 算力大
  • 内存大
  • 数据量需求大
  • 推理慢

对于嵌入式:

压力非常大。


27:53 - 28:56 手工特征提取

RMS(均方根)

对125个点:

提取一个统计值。

优点:

  • 降低维度
  • 保留整体特征
  • 减少计算量

28:58 - 29:57 FFT 特征提取

FFT 的本质

把:

时间变化

转换成:

频率成分

为什么FFT适合动作识别

因为:

动作具有频率。

例如:

左右挥动:

大约1Hz。

FFT后:

会在1Hz出现峰值。


本节核心总结


Edge Impulse 是什么

一个:

面向嵌入式AI/TinyML的低代码机器学习平台。


本节最重要的几个概念

概念核心
Feature特征
Dataset数据集
Train/Validation/Test数据划分
FFT频域特征
Overfitting过拟合
Data Balance数据平衡
Time Window时间窗口
TinyML小型嵌入式AI

你现在应该真正理解的重点

AI项目真正最重要的东西

不是模型。

而是:

数据质量 + 特征提取

很多时候:

  • 数据集决定上限
  • 特征工程决定效果
  • 模型只是最后一步

这其实是很多AI初学者最容易忽略的地方。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 9:37:35

WSL2 全栈开发环境搭建:多版本语言管理实践

欢迎关注专栏:AI 开发技术 上一篇: WSL2 与 Ubuntu 22.04 基础环境部署指南 解析 Windows 下 WSL2 及 Ubuntu 22.04 的工程化安装与网络环境配置。下一篇: [WSL2 核心中间件部署实战] 详解在 WSL2 系统环境下快速搭建开发测试所需的核心中间件集群。 WSL2 全栈开发…

作者头像 李华
网站建设 2026/5/13 9:36:19

pyautocad深度解析:构建企业级CAD自动化工作流的架构设计与实战

pyautocad深度解析:构建企业级CAD自动化工作流的架构设计与实战 【免费下载链接】pyautocad AutoCAD Automation for Python ⛺ 项目地址: https://gitcode.com/gh_mirrors/py/pyautocad 在工程设计领域,CAD软件的自动化操作一直是提升生产效率的…

作者头像 李华
网站建设 2026/5/13 9:33:17

STM32H7 QSPI实战:手把手教你用HAL库驱动W25Q256JV Flash(含完整代码)

STM32H7 QSPI实战:从硬件连接到代码执行的W25Q256JV全流程指南 在嵌入式开发中,外部Flash存储扩展是提升系统数据容量的常见需求。W25Q256JV作为一款256Mbit的SPI NOR Flash,凭借其高性价比和稳定性能,成为许多STM32H7项目的首选。…

作者头像 李华
网站建设 2026/5/13 9:30:36

增量式编码器驱动开发实战:从原理到FPGA高速计数

1. 增量式编码器核心原理剖析 第一次接触增量式编码器时,我完全被它精妙的设计震撼到了。这种看似简单的装置,竟然能同时测量转速、转向和位置信息。拆开我们实验室的欧姆龙E6B2编码器,你会发现它的核心就是三个部分:发光二极管、…

作者头像 李华