用单片机来玩机器学习
本帖最后由 gada888 于 2022-9-4 10:58 编辑今天给大家讲开源硬件Wio Terminal的开箱和Wio与tinyML网站edge impulse的结合来完成机器学习的挑战。这个帖子就作为开篇吧。或者作为一个避坑指南。
edge impulse平台让你在几乎不了解python和C++的情况下,快速做出TinyML项目。而鉴于TinyML项目都是面向C端的。目标用户群极其庞大。市场前景看好。似乎眼下影响它发展的最大障碍是ML单片机的价格。
static/image/hrline/line9.png
先来介绍Wio-terminal
Wio-terminal被选中的原因是edge impulse系统指定它为配合edge系统的硬件之一。有点小贵,但性能比arduino好很多。跑机器学习呢,没个大心脏(芯片)根本无法负荷,arduino的AVR小心脏只能望ML兴叹。而Wio Terminal 是一款专门用于 IoT 与 TinyML 的多功能开发板 – 包含了 ATSAMD51P19 晶片并以 ARM Cortex-M4F 为核心 (20MHz),已支援多种针对微控制器的 ML推论框架.
Wio开发板已包含:
光感测器(类比)
麦克风
可自订按钮 x 3
4 英吋彩色LCD
加速度感测器
Grove 接头 x 2
当然,这里不是要推销这个板子,以后会介绍能跑ML的其它类型的板子。只是刚好手里有这个板子。就拿它说事儿了。
Wio在开箱后,先要来一个测试,测试过程如下:
实测效果如下:edge平台给大家最大的惊喜之一是它导出的文件可以用在arduino ide这个最大的开源硬件ide。这让广大创客可以无缝接轨机器学习项目。
static/image/hrline/2.gif
下面隆重介绍下TinyML
TinyML 的 tiny 代表 ML 模型已针对低功耗的微型装置进行最佳化,例如 Arduino 为首的各种 MCU,各种应用纷纷出笼,但依然受限于 MCU 的算力。
常见应用:声音辨识、语音控制、影像辨识等
它内置和外延很多的传感。
光线传感 小夜灯 手势辨识
声音传感 拍手开门
加速度传感 倾斜警告装置
气体传感 瓦斯警报器
温湿度传感 物联网空调
但想通过ML实现以上功能,需要一个ML平台配合。当当当当。该edge impulse登场了。
我们接下来要注册 Edge Impulse
地址是:https://studio.edgeimpulse.com/
记下你的登录名和密码,后面要用到
static/image/hrline/3.gif
其它需要安装的工具
需要安装Arduino IDE 2.0、
arduino download
https://www.arduino.cc/en/software#experimental-software
edge官方要求arduino ide得是1.8以上。但个人实测ide 1.8也能跑通,装不装2.0其实无所谓,但最好装一个。
在arduino的prference导入 wio terminal 开发板定义
https://files.seeedstudio.com/ar ... o_boards_index.json
安装Node.js 最新版,例如nodejs v16
https://nodejs.org/zh-cn/download/
安装 edge impulse CLI tool 用来上传资料
通过CMD来安装,位置如下。有的人找不到AppData目录,需要打开win10隐藏文件。
C:\Users\Administrator\AppData\Roaming\npm\node_modules
安装命令是
npm install -g edge-impulse-cli
安装好的CLI的路径如上。如没装好,需要检查环境变量的设置
static/image/hrline/3.gif
把wio的这个按钮连续拨两下
这时候你的PC会出现一个arduino盘符
打开这个盘符,把wio-terminal -ei-1.4文件拖入盘中,这是硬件厂商官方发布的文件,它内置了一些wio上内置的传感的调用文件。
static/image/hrline/3.gif
edge impuls ML设置
要连接wio terminal,需要打开PC的CMD窗口。输入如下命令和你的登陆名与密码
edge-impulse-daemon --clean
并通过给出的网址,进入edge系统来做ML项目
设备支持的传感如下
edge主界面布局如下
然后开始取样,样本数据多一点好,不然会因为欠拟合导致精度不够。我这里做测试使用了光感传感来判断石头和布。
代码能力强的,可以看看你的ML项目的代码
我这里样本只有两笔,导致了欠拟合。精度不够,会在之后的测试中加大样本量看看。后续会持续报告。
接下来汇出库文件,这里Edge把本来python ML项目文件转成了C++文件来给arduino ide使用。让单片机也能玩高大上的东东。
案例文件并不能匹配我们选择的传感的具体功能。例如我这里想要剪刀石头布,然后打开不同颜色的LED。那么需要我们手动添加一些代码。案例提供了我们最讨厌的C++的内容。而我们只需要有ardiuno C的基础。添加获取传感数据的内容和执行其它命令。如下代码给出数据采样的内容。其它内容可根据自己需要添加。需要你有一定的arduino C的代码基础。
int raw_feature_get_data(size_t offset, size_t length, float *out_ptr) {
float features[??]; //这里的??是你的项目采样的频率
for (byte i = 0; i < ??; i = i + 1)
{
features=analogRead(WIO_LIGHT);
delay(??); //这里的??是你的训练数据时候设置的延迟
}
memcpy(out_ptr, features + offset, length * sizeof(float));
return 0;
最后烧录到Wio即可。以上是跑通ML的具体步骤,以后会出具体玩转edge ML的实战项目。敬请期待。。。。
https://studio.edgeimpulse.com/
大家能访问吗?我之前能访问,这半个月就上不去! 云天 发表于 2022-9-3 13:19
https://studio.edgeimpulse.com/
大家能访问吗?我之前能访问,这半个月就上不去! ...
我这边chrome正常访问,要用google chrome浏览器或者微软的edge浏览器 我用电脑google chrome浏览器访问不了,用手机也不行。 厉害厉害 6666666666
页:
[1]