添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本帖最后由 gada888 于 2022-9-30 22:28 编辑
这是即tinyML开篇之后的实战篇篇一。开篇那个帖子列出了微机器学习所需要用的软硬件和跑通流程。感兴趣的可以去参考一下。这一篇进入实作内容。来一个手势辨识。
这次硬件仍然用WIO terminal作为主控。
TinyML 的 tiny 代表 ML 模型已针对低功耗的微型装置进行最佳化,但是 Arduino初级系列的各种 MCU 的算力不足。所以用了ARM系列的大算力MCU来干活,
TinyML的常见应用如下:
这次做剪刀、石头、布的光线遮断样式不同来区分,做一个很小的数据集,每个种类做10个样本。一共30个样本。虽然样本量极小,有欠拟合的风险,但是可以通过增加样本来进行调整。
需要执行以下命令
Wio Terminal
注册Edge Impulse
PC端安装Arduino IDE 2.0
https://files.seeedstudio.com/ar ... o_boards_index.json
Node.js 1.6
安装edge impulse CLI tool 上传资料
npm install -g edge-impulse-cli
1.  Wio terminal 上传单笔资料到  Edge Impulse
2.  把资料整理到不同类别,反覆操作
3.  设计 Impulse:资料处理、定义模型
4.  测试神经网路效能、修改、重复
5.  汇出神经网路档案
6. 透过 Arduino IDE 烧录至 Wio
7. Wio 执行离线推论,完成!
Edge Impulse的训练流程如下
Impulse design
Create impulse
Raw data
NN Classifier
Retrain model
Live classification
Deployment
接下来面对自己写代码还是用Seeed的官方firmware。后者可以更快的上手。以上传firmware为例
先上传 firmware
再于 cmd 中执行 edge-impulse-daemon --clean
清除设定后进入新的专案(需要重新登入)
然后由EdgeImpulse网站Data acquision的下拉式选单
选择许多wio 已支援的传感
我们收集了训练模型所需的数据样本。然后送入神经网络,并对数据进行预处理。有时我们只是重新缩放数据,可以将 0 到 1000 范围内的值转换为 0 到 1 范围内的值 - 因为神经网络处理较小的数字比处理较大的数字表现更好。 TinyML 中使用的神经网络参数数量小(数字神经元之间的连接),所以我们经常还应用更复杂的预处理技术从 Raw 中提取所谓的特征数据,这加快了训练过程。
神经网络由输入层,隐藏层和输出层组成,大家先了解个大概,细讲1个小时讲不完。简单说,神经网络通过自己的框架把输入的数据的特征找出来。
static unsigned long last_interval_ms = 0;
float light;
if (millis() > last_interval_ms + INTERVAL_MS) {
last_interval_ms = millis();
light = analogRead(WIO_LIGHT);
Serial.println(light);
//Serial.print('\t');
把上述代码插入到static_buffer.ino里面去。然后上传,就得到最后的结果了。static_buffer.ino是从edgeimpulse里导出的给arduino的.zip文件里的。