查看: 117|回复: 0

【在 Arduino 上使用机器学习】(三)在Arduino上使用自定义...

[复制链接]
【在 Arduino 上使用机器学习】(一)在 Arduino 开发板上安装库及添加测试样本
【在 Arduino 上使用机器学习】(二)Tensorflow上构建及训练模型
【在 Arduino 上使用机器学习】(三)在Arduino上使用自定义手势识别模型

Arduino上使用自定义手势识别模型
接下来,我们会将刚刚在上一节中在 Colab 中训练并下载的 model.h 文件,用于我们的 Arduino IDE 项目中:
  • 在 Arduino IDE 中打开 IMU_Classifier.ino
  • 在 IDE 中创建一个新选项卡。并将其命名为 model.h。


36NewTab_modelh.png

  • 打开 model.h 选项卡,并从 Colab 下载版本的内容贴上去。(也可以直接将model.h文件拖到IMU_Classifier.ino旁边的选项卡位置)
37DoneUploading.png
  • 上传例程,点击:Sketch> Upload
  • 打开 Serial Monitor:Tools > Serial Monitor
  • 做一些手势
  • 每个手势的置信度将在 Serial Monitor 中显示(0 = 低置信度,1 = 高置信度)



将例程上传到板子中,打开串口监视器,做一些手势,发现几乎所有的手势被识别为曲肘(见下图),无论是击拳还是曲肘。仔细思考了一下发现了问题。原来训练的时候对“击拳”理解错误,以为是像武林高手一样击出去要收回来。实际上击拳只是将拳挥出去,收回的时候要非常缓慢,以免触发采样。同样曲肘也是,将手臂缓缓伸出,然后迅速收回,收回这个动作才是“曲肘”。
38test.png

出现这个错误,需要重新采集样本。下面的动图是新采集的样本,可以看到两个动作之间区别还是很大的:


好在前面走了一遍,后来就非常顺利了。分别采集10个击拳和10个曲肘的动作样本。再回到colab里进行训练,重新下载model.h文件。将原来的文件删除:
39deleteModelh.png

重新上传文件并使用串口监视器观察,开始击拳和曲肘的动作,识别的非常准备:
modelPredict.gif
采样率是每秒119HZ,每秒采集119个样本,做10次动作可以采集1190个样本,样本量还是比较高的。为了样本的准确性,动作一定要标准,否则预测结果会不理想。

数字代表置信度,置信度越高,所预测的动作可能性越大。最后预测的结果与实际动作完全一致。
40modelPredict.png

教程参考:

"想获得更多乐趣?您可使用 Emoji_Button.ino 示例创建 USB 键盘,在 Linux 和 macOS 中输出表情符号字符。尝试将 Emoji_Button.ino 示例与 IMU_Classifier.ino 例程相结合,创建手势控制的表情符号键盘 。"

如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:


Build&Train.gif
Build&Train_Correct.gif
IMU_Capture1.gif
modelPredict.gif
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail