项目概述

本模型使用 Wio Terminal 内置的光传感器,识别手势:石头(rock),剪刀(scissors),布(paper)。
这是一项使用基于规则的编程很难解决的任务。
因为人们每次做手势的方式都不完全一样,若使用编程方法,我们把不同的人不同的手势方式考虑进去,那将是成百上千条不同的规则。实际上这仍是理想化情况,仍有很多人不同的手势未被考虑到,速度,角度。频率,方向等任一因素的轻微变化都需为其建立新的规则,但机器学习可以轻松地处理这些变化。
总所周知,用相机传感器结合机器学习来识别手势是可能的,即使图像被缩小了很多。但使用光传感器,相当于仅使用了相机一个像素点来识别手势是完全不同水平的挑战。让我们通过此项目迎接挑战。

期望效果

期望实现的效果如下所示,Wio Terminal 实时展示当前对Wio Terminal的手势动作的识别结果。石头(rock),剪刀(scissors),布(paper)其中一种。
image.png

材料准备

为实现以上效果,我们需要:
硬件需求:Wio Terminal
连接方式:
image.png
(图)

项目步骤

  1. 创建与选择模型
  2. 数据采集
  3. 训练与部署
  4. 使用与编程

    项目步骤

    1.创建与选择模型

    1. 创建“内置光传感器识别手势”模型

    点击“创建与选择模型”,点击“内置光传感器识别手势”,如下图步骤1,2:
    image.png
    根据命名要求输入名称
    image.png
    点击“确认”
    image.png
    点击确定后会自动跳转到“数据采集”界面

    2.查看模型

    image.png

    2.采集数据

    1.默认标签

    image.png
    image.png

2. 连接设备并在 Codecraft 中上传默认采集数据程序

Wio Terminal连接就位后,在 Codecraft 的界面,点击 image.png,位置如下图所示。此操作将上传默认采集数据程序。
image.png
会出现“上传”的弹出窗口,如下图所示。
选择目前的Wio Terminal对应的串口号(未必如图中的COM20),点击“确定”按钮
image.png
弹窗提示正在上传,请稍后…
image.png
上传时间通常数十秒钟,完成后会看到下图所示的“上传成功”画面。如下图所示。
image.png
点击“我知道了”关闭上图的上传成功弹窗,回到编程界面。

内置光传感器识别手势 - 图14 注意

对于网页版的 Codecraft ,如果没有安装或者运行设备助手,可能会出现下图中还没有打开设备助手的提示。 image.png 这种状况可以参考:下载、安装和使用“设备助手”的内容。

3. 采集数据

在右上角有数据采集步骤介绍,根据介绍指示采集数据
image.png
注意:

  1. 注意Wio Terminal按键位置
  2. 动图gif已加速,实际动作可稍微放慢

image.png
根据Wio Terminal屏幕显示开始收集数据和结束收集。
image.png表示正在收集数据
image.png
image.png表示收集完毕
image.pngimage.png
Wio Terminal 显示收集完毕即可停止采集数据,CodeCraft仍在拼命加载中,是将数据从WioTerminal传至CodeCraft仍需1~2s。
待数据采集完毕
image.png

点击“训练与部署”
image.png

4. 采集自定义标签的数据

采集自定义标签的数据与采集默认标签步骤相似

  • 添加或修改标签
  • 上传采集数据程序
  • 采集数据
  1. 添加或修改标签
  • 添加标签

在标签的界面,点击 image.png,位置如下图所示。
image.png
在弹窗中输入标签名,点击确认,如下图步骤1,2.
image.png
添加成功后标签栏有新的手势标签“ok”
image.png

  • 修改标签

或通过修改标签名,将其中一个默认标签修改成自定义标签名:
鼠标单击需修改的标签,会出现修改标签的弹窗,进行修改即可
image.png
修改后原标签会替换成已修改的标签名
image.png
2. 上传采集数据程序
选择其中一个积木,如下图,将选择“rock”的积木改成选择“ok”
image.png
更改成功后如下图红框
image.png
点击“上传”,上传采集数据程序
image.png
选择目前的Wio Terminal对应的串口号(未必如图中的COM20),点击“确定”按钮,如下图步骤1,2
image.png
弹窗提示正在上传,请稍后…

image.png
上传时间通常数十秒钟,完成后会看到下图所示的“上传成功”画面。如下图所示。
image.png
点击“我知道了”关闭上图的上传成功弹窗,回到编程界面。

3.训练与部署

1.设置神经网络及参数

选择适合的神经网络规模:小中大型其中一个
设置参数,设置训练周期数(大于0的数),学习率(0~1的数),最低置信度(0~1的数)
image.png

2.开始训练模型

点击“开始训练”
image.png
开始训练,界面会提示“拼命加载中”。
image.png

“拼命加载中”持续时间因选择神经网络规模(小型中型大型),训练周期数的不同而持续时间不同,会因网络规模的增大所需时间加长,训练周期数的增大时间加长,所以请耐心等待。

也可通过观察“日志输出”推理还需等待时间。如下图,已完成“Epoch:62/500”说明总共需训练500轮,已训练了62轮。
image.png
加载完成后,能在“输出日志”中看到“模型训练任务已完成”
image.png

3.部署模型

在“模型训练报告”界面,点击“部署模型”。
image.png
image.png
弹窗提示部署完成,点击“确认”后,自动跳转到“使用与编程”界面。
image.png

4.使用与编程

1.编写模型使用程序

在“使用与编程”界面,点击“模型使用”即可使用已经部署的模型
image.png
image.png
编写如下程序即可尝试使用你的模型
image.png

2. 上传程序到Wio Terminal

点击“上传”按钮。
image.png
选择目前的Wio Terminal对应的串口号(未必如图中的COM20),点击“确定”按钮。
image.png
首次上传时间较长,且随模型复杂程度上传时间增长,请耐心等待。小模型上传时间大约为4分钟。
image.png
image.png

3. Wio Terminal测试模型效果

效果说明:
即使训练模型分数达到很高仍不代表模型就是好的模型,训练模型的分高而实际使用预测效果差的现象被称为过拟合(overfitting),相当于模型生硬记忆背诵了训练数据集的细节,在面临新的数据时不会做题了,是机器学习训练模型会遇到的问题。
解决此问题的办法:

  • 增加数据集
  • 降低学习率

再重新训练模型。

保存

点击“SuperMaker”
image.png
修改名称,点击保存
image.png

image.png
保存成功后可在“我的作品”中查找。
image.png
点击“rocks”即可查看对应作品。
image.png