Wio Terminal Edge Impulse 教程

Edge Impulse 可以帮助开发人员创建具有嵌入式机器学习的下一代智能设备解决方案。使得今天由于成本、带宽或功率限制而被丢弃的 99% 的传感器数据,在边缘人工智能技术的加持下,将得到有价值的利用。

好消息是,Edge Impulse 官方已经正式支持 Wio Terminal 了,这意味着我们可以使用 Wio Terminal 进行最前沿的机器学习!

安装依赖

要在 Edge Impulse 中使用 Wio Terminal,需要安装以下软件依赖:

  1. Node.js v12 或更高版本,参考 Node.js 安装

  2. Arduino CLI,Linux 和 macOS 可执行下面命令安装:

    curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
    
  3. Edge Impulse CLI 和 serial monitor
    npm install -g edge-impulse-cli 
    

提示:如果安装 Edge Impulse CLI 时出现问题,请参考 Installation and troubleshooting 排除故障。

连接 Edge Impulse

安装好软件依赖之后,下一步就是将 Wio Terminal 开发板连接到 Edge Impulse 平台。

1. 更新 Wio Terminal 固件

连接 Wio Terminal 到你的电脑,将 Wio Terminal 的电源开关从“ON”位置进一步向下滑动,松开,再次滑动并松开(即快速向下滑动两次),进入 Bootloader 模式(DFU 模式)。

之后你会看到一个名为“Arduino”的外部驱动器出现在你的 PC 中。下载 Edge Impulse uf2 固件文件,将其拖到 Arduino 驱动。这样,就把 Edge Impulse 加载到 Seeeduino Wio Terminal 啦!

提示:你可以下载 Wio Terminal Edge Impulse 源代码,以便于修改和构建你的固件。

2. 设置 Keys

打开 Shell 终端,执行下面命令:

$ edge-impulse-daemon

提示:连接到新设备时,运行 edge-impulse-daemon --clean 以删除以前的缓存。

$ edge-impulse-daemon 
Edge Impulse serial daemon v1.14.0
? What is your user name or e-mail address (edgeimpulse.com)? rudy
? What is your password? [hidden]
Endpoints:
    Websocket: wss://remote-mgmt.edgeimpulse.com
    API:       https://studio.edgeimpulse.com/v1
    Ingestion: https://ingestion.edgeimpulse.com

[SER] Connecting to /dev/ttyACM0
[SER] Serial is connected, trying to read config...
[SER] Retrieved configuration
[SER] Device is running AT command version 1.3.0

Setting upload host in device... OK
Configuring remote management settings... OK
Configuring API key in device... OK
Configuring HMAC key in device... OK
[SER] Device is not connected to remote management API, will use daemon
[WS ] Connecting to wss://remote-mgmt.edgeimpulse.com
[WS ] Connected to wss://remote-mgmt.edgeimpulse.com
? What name do you want to give this device? wiot01
[WS ] Device "wiot01" is now connected to project "rudy-project-1"
[WS ] Go to https://studio.edgeimpulse.com/studio/73336/acquisition/training to build your machine learning model!

3. 验证设备是否连接成功

打开 Edge Impulse 网页,点击左边导航栏的 Devices,查看设备是否连接成功。如果看到类似下面的信息,则说明 Wio Terminal 已成功连接 Edge Impulse 平台。

下面我们一起来制作第一个 Edge Impulse 项目,快速训练和部署一个简单的神经网络。我们以 石头剪刀布手势识别 为例,因为它足够简单,只需要用到 Wio Terminal 内置的光传感器,即可对石头剪刀布手势进行分类。

视频:Wio Terminal TinyML Course #1 Intro – Machine Learning on Microcontrollers with Arduino IDE

采集训练数据

打开 Edge Impulse,切换到 Data acquisition 页面。添加标签(rock、paper、scissors),选择传感器,设置采样长度为 10000 ms(10秒),频率为 100Hz。

点击“Start sampling”开始采集数据,为每个手势采集 10 个样本(在 Wio Terminal 光传感器附近挥手即可)。

这是一个很小的数据集,但我们也有一个很小的神经网络,因此在这种特殊情况下,欠拟合比过拟合的可能性更大。

  • 欠拟合:当统计模型或机器学习算法无法捕捉数据的潜在趋势时,就会被称为欠拟合,这种情况主要出现在模型大小太小而无法为数据制定一般规则时,存在许多不同种类的噪声。
  • 过拟合:当统计模型开始从我们数据集中的噪声和不准确的数据条目中学习时,它被称为过拟合。当你拥有大型模型和相对较小的数据集时,就会发生这种情况 —— 模型可以“by heart”学习所有数据点,而无需进行泛化。

因此,在收集样本时,重要的是为模型提供多样性以便能够更好地泛化。例如具有不同方向、速度和距离传感器的样本。一般来说,网络只能从数据集中存在的数据中学习。因此,如果你拥有的唯一样本是传感器上方从左向右移动的手势,则不应期望经过训练的模型能够识别从右向左或向上、向下移动的手势。

Leave a Reply