0:06) 模型测试(Test Data)

  • 部署模型前,先用保留的测试集测试模型

  • 在 Edge Impulse 的模型测试页面:

    • 全选测试样本

    • 点击“分类所选样本”

  • 如果预测错误:

    • 会用红色高亮显示


(0:31) 测试集准确率与过拟合

  • 如果动作每次都做得非常一致:

    • 模型准确率可能接近 100%

  • 如果:

    • 测试集准确率 << 训练集/验证集准确率

则可能:

  • 出现了 过拟合(Overfitting)

解决办法:

  • 重新训练

  • 使用减少过拟合的方法:

    • 正则化

    • Dropout

    • 增加数据量

    • 数据增强等


(0:54) 手机实时分类(Live Classification)

进入实时分类页面:

步骤:

  1. 手机打开 SmartphoneAddToPulse 网站

  2. 连接项目

  3. 点击“开始采集”

动作测试:

  • 左右晃动

  • 上下移动

  • 画圈

  • 静止


(1:23) 实时分类结果观察

  • 系统会显示:  

    • 原始加速度计数据

    • 各动作预测概率

例如:

  • 左右动作:

    • “左右”标签概率最高

  • 上下动作:

    • “上下”标签概率最高


(1:54) 动作切换阶段的问题

如果:

  • 正在从左右动作切换到上下动作

模型可能:

  • 难以识别

原因:

  • 动作处于“过渡状态”

  • 不属于明确类别

红色预测:

  • 表示模型不确定


(2:07) Arduino 也可实时分类

除了手机:

  • 连接到 Edge Impulse Daemon 的 Arduino 也能实时分类


(2:19) 手机实时分类模式

开启:

  • “切换到实时分类模式”

流程:

  1. 手机采集 2 秒数据

  2. 自动分类

  3. 重复循环


(2:53) WebAssembly 本地运行

特点:

  • 分类直接在手机本地运行

  • 使用:

    • JavaScript

    • WebAssembly

不会:

  • 再连接 Edge Impulse 服务器


(3:03) WebAssembly 与 TensorFlow Lite

可以:

  • 下载训练模型

  • 打包成 WebAssembly

也可以:

  • 下载 TensorFlow Lite 模型

  • 直接在手机 App 中运行

注意:

  • TensorFlow Lite 不包含特征提取代码

  • 需要自己编写特征提取部分


Arduino Nano 33 BLE Sense 部署


(4:16) 部署模型到 Arduino

进入:

  • Deployment(部署)页面

选择:

  • Arduino Library


(4:49) EON Compiler

默认:

  • TensorFlow Lite 模型以 FlatBuffer 形式运行

EON Compiler:

  • 将模型编译为 C++ 源码

优点:

  • 节省:

    • RAM

    • Flash

建议:

  • 一般保持启用


(5:30) Analyze(分析)

Edge Impulse 会估算:

  • 推理时间

  • RAM 占用

  • Flash 占用

注意:

  • 估算基于:

    • 80MHz Cortex-M4F

而 Arduino Nano 33 BLE Sense:

  • 是 64MHz

所以:

  • 实际推理可能更慢


(6:07) 量化(Quantization)

建议:

  • 使用量化模型

优点:

  • 更省 RAM

  • 更省 Flash

缺点:

  • 准确率略微下降


(6:18) 生成 Arduino 库(可以在Vscode PlatformIO中运行)

点击:

  • Build

Edge Impulse 会:

  • 生成 Arduino ZIP 库

注意:

  • 直接将其解压到PlatformIO工程目录的lib文件夹里

  • 再将示例代码粘贴到main.cpp文件中,即可进行烧录

  • 温馨提示:建议不要使用arduino,因为它每次修改代码,都会将全部文件重新编译一遍而且速度极慢(AI项目编译量本身就很大),建议使用PlatformIO,支持增量编译


连续推理(Continuous Inference)


(10:46) 加速度计连续演示

特点:

  • 使用多线程

  • 后台持续推理


(11:16) 推理线程

线程功能:

  1. 复制缓冲区

  2. 转 NumPy 数组

  3. 运行分类器

每:

  • 约 200ms 执行一次


(11:46) 平滑(Smoothing)

作用:

  • 多次预测求平均

  • 提高稳定性

因此:

  • 动作需持续几秒钟


(12:06) 主循环线程

功能:

  • 缓冲区滚动

  • 删除旧数据

  • 添加新数据

  • 保持 100Hz 采样


(12:27) DSP 时间

DSP 时间:

  • 特征提取耗时

Inference 时间:

  • 模型推理耗时


(13:11) 不确定性

如果:

  • 动作不规则

  • 动作在过渡中

则:

  • 不确定性上升


异常检测(Anomaly Detection)


(14:27) 异常检测简介

作用:

  • 判断系统是否异常

可使用:

  • 有监督学习

  • 无监督学习


(14:47) 信用卡欺诈案例

思想:

  • 正常数据形成“分布区域”

  • 新数据超出边界:

    • 判定为异常


(16:17) 工业预测维护

应用:

  • 电机

  • 压缩机

  • 航天设备

目标:

  • 提前发现故障


(17:18) 手机异常检测实验

训练:

  • 左右动作

测试:

  • 前后动作(未训练)

结果:

  • 分类器会误分类

  • 但光谱特征显示:

    • 它形成了新的“簇”


K-Means 异常检测


(18:21) 添加异常检测模块

在 Pulse Design 中:

  • 添加 K-Means Anomaly Detection


(18:37) K-Means

属于:

  • 无监督学习(没有标签)

作用:

  • 找数据簇(Cluster)


(19:18) 异常分数

每个样本:

  • 会得到异常分数

规则:

  • 0.3

    • 认为异常


(19:32) RMS 特征

建议:

  • 使用:

    • X RMS

    • Y RMS

    • Z RMS 

因为:

  • 分离效果最好


(20:01) 实时异常检测

输出新增:

  • Anomaly(异常值)

含义:

  • 数值越大

    • 越异常


Arduino 异常检测


(20:34) 单片机部署异常检测

步骤:

  1. 添加 K-Means 模块

  2. 重新训练

  3. 下载新 Arduino 库

  4. 导入 Arduino IDE


(21:28) 异常检测代码变化

新增:

  • Result.anomaly

用途:

  • 判断动作是否异常

阈值:

  • 0.3


(22:17) 测试未训练动作

例如:

  • 前后运动

现象:

  • 分类器会尝试分类

  • 但异常分数会很高


工业案例:智能托盘


(23:24) 工业嵌入式 ML

应用:

  • 物流

  • 工业自动化

  • 资产跟踪


(24:02) 智能托盘项目

使用:

  • 单片机

  • 三轴加速度计

识别:

  • 静止

  • 移动

  • 升降


(25:23) 信号处理与分类

通过特征处理:

  • 三种状态明显可分

模型准确率:

  • 约 95%


(26:12) 实际意义

企业可以知道:

  • 托盘移动多久

  • 静止多久

  • 升降多久

从而:

  • 优化物流效率


(27:05) 嵌入式 ML 的优势

无需:

  • 保存全部原始数据

只记录:

  • 状态变化

优点:

  • 节省存储

  • 降低功耗

  • 降低传输需求


本章节总结


(27:42) 神经网络回顾

学习内容:

  • 神经网络工作原理

  • 分类输出概率

  • 反向传播

  • 损失函数


(28:46) 训练现象

训练过程中:

  • Loss 下降

  • Accuracy 提高


(29:05) 混淆矩阵与指标

指标包括:

  • Accuracy

  • Precision

  • Recall

  • F1 Score


(29:25) 欠拟合与过拟合

学习:

  • 如何发现

  • 如何解决


(29:35) Edge Impulse 部署

Edge Impulse 会:

  • 自动封装模型库

方便:

  • 单片机部署


(29:53) 单片机推理流程

流程:

  1. 读取原始传感器数据

  2. 提取特征

  3. 模型推理

  4. 输出分类结果

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐