(B站TinyML 教程学习笔记)C19 - 使用手机测试推理功能 +C20 - 部署训练好的模型到 Arduino+C21 - 异常检测+C22 - 工业嵌入式机器学习演示+C23 - 第二模块复习
0:06) 模型测试(Test Data)

-
部署模型前,先用保留的测试集测试模型
-
在 Edge Impulse 的模型测试页面:
-
全选测试样本
-
点击“分类所选样本”
-
-
如果预测错误:
-
会用红色高亮显示
-
(0:31) 测试集准确率与过拟合
-
如果动作每次都做得非常一致:
-
模型准确率可能接近 100%
-
-
如果:
-
测试集准确率 << 训练集/验证集准确率
-
则可能:
-
出现了 过拟合(Overfitting)
解决办法:
-
重新训练
-
使用减少过拟合的方法:
-
正则化
-
Dropout
-
增加数据量
-
数据增强等
-
(0:54) 手机实时分类(Live Classification)
进入实时分类页面:
步骤:
-
手机打开 SmartphoneAddToPulse 网站
-
连接项目
-
点击“开始采集”
动作测试:
-
左右晃动
-
上下移动
-
画圈
-
静止
(1:23) 实时分类结果观察


-
系统会显示:
-
原始加速度计数据
-
各动作预测概率
-
例如:
-
左右动作:
-
“左右”标签概率最高
-
-
上下动作:
-
“上下”标签概率最高
-
(1:54) 动作切换阶段的问题
如果:
-
正在从左右动作切换到上下动作
模型可能:
-
难以识别
原因:
-
动作处于“过渡状态”
-
不属于明确类别
红色预测:
-
表示模型不确定
(2:07) Arduino 也可实时分类
除了手机:
-
连接到 Edge Impulse Daemon 的 Arduino 也能实时分类
(2:19) 手机实时分类模式
开启:
-
“切换到实时分类模式”
流程:
-
手机采集 2 秒数据
-
自动分类
-
重复循环
(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) 推理线程
线程功能:
-
复制缓冲区
-
转 NumPy 数组
-
运行分类器
每:
-
约 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) 单片机部署异常检测
步骤:
-
添加 K-Means 模块
-
重新训练
-
下载新 Arduino 库
-
导入 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) 单片机推理流程
流程:
-
读取原始传感器数据
-
提取特征
-
模型推理
-
输出分类结果
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)