gada888 发表于 2022-8-31 22:32:46

用单片机来玩机器学习

本帖最后由 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的实战项目。敬请期待。。。。






云天 发表于 2022-9-3 13:19:48

https://studio.edgeimpulse.com/
大家能访问吗?我之前能访问,这半个月就上不去!

gada888 发表于 2022-9-3 14:01:32

云天 发表于 2022-9-3 13:19
https://studio.edgeimpulse.com/
大家能访问吗?我之前能访问,这半个月就上不去! ...

我这边chrome正常访问,要用google chrome浏览器或者微软的edge浏览器

云天 发表于 2022-9-3 20:14:37

我用电脑google chrome浏览器访问不了,用手机也不行。

小企鹅 发表于 2022-9-5 10:10:26

厉害厉害

vvjr 发表于 2022-9-6 14:17:07

6666666666
页: [1]
查看完整版本: 用单片机来玩机器学习