【在 Arduino 上使用机器学习】(三)在Arduino上使用自定义...
【在 Arduino 上使用机器学习】(一)在 Arduino 开发板上安装库及添加测试样本【在 Arduino 上使用机器学习】(二)Tensorflow上构建及训练模型
【在 Arduino 上使用机器学习】(三)在Arduino上使用自定义手势识别模型
在Arduino上使用自定义手势识别模型
接下来,我们会将刚刚在上一节中在 Colab 中训练并下载的 model.h 文件,用于我们的 Arduino IDE 项目中:
[*]在 Arduino IDE 中打开 IMU_Classifier.ino
[*]在 IDE 中创建一个新选项卡。并将其命名为 model.h。
[*]打开 model.h 选项卡,并从 Colab 下载版本的内容贴上去。(也可以直接将model.h文件拖到IMU_Classifier.ino旁边的选项卡位置)
[*]上传例程,点击:Sketch> Upload
[*]打开 Serial Monitor:Tools > Serial Monitor
[*]做一些手势
[*]每个手势的置信度将在 Serial Monitor 中显示(0 = 低置信度,1 = 高置信度)
将例程上传到板子中,打开串口监视器,做一些手势,发现几乎所有的手势被识别为曲肘(见下图),无论是击拳还是曲肘。仔细思考了一下发现了问题。原来训练的时候对“击拳”理解错误,以为是像武林高手一样击出去要收回来。实际上击拳只是将拳挥出去,收回的时候要非常缓慢,以免触发采样。同样曲肘也是,将手臂缓缓伸出,然后迅速收回,收回这个动作才是“曲肘”。
出现这个错误,需要重新采集样本。下面的动图是新采集的样本,可以看到两个动作之间区别还是很大的:
好在前面走了一遍,后来就非常顺利了。分别采集10个击拳和10个曲肘的动作样本。再回到colab里进行训练,重新下载model.h文件。将原来的文件删除:
重新上传文件并使用串口监视器观察,开始击拳和曲肘的动作,识别的非常准备:
采样率是每秒119HZ,每秒采集119个样本,做10次动作可以采集1190个样本,样本量还是比较高的。为了样本的准确性,动作一定要标准,否则预测结果会不理想。
数字代表置信度,置信度越高,所预测的动作可能性越大。最后预测的结果与实际动作完全一致。
教程参考:https://blog.arduino.cc/2019/10/15/get-started-with-machine-learning-on-arduino/在 Arduino 上使用机器学习
"想获得更多乐趣?您可使用 Emoji_Button.ino 示例创建 USB 键盘,在 Linux 和 macOS 中输出表情符号字符。尝试将 Emoji_Button.ino 示例与 IMU_Classifier.ino 例程相结合,创建手势控制的表情符号键盘 。"
如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:
[*]Arduino
https://www.arduino.cc
[*]Arduino Nano 33 BLE Sense
https://store.arduino.cc/nano-33-ble-sense
[*]TensorFlow Lite Micro
https://www.tensorflow.org/lite/microcontrollers/overview
[*]Arduino 库管理器
https://www.arduino.cc/en/guide/libraries#toc1
[*]发布
https://github.com/arduino/ArduinoTensorFlowLiteTutorials/tree/master/GestureToEmoji
[*]每个人/Arduino 社区
https://create.arduino.cc/projecthub
[*]权重参数的量化
https://petewarden.com/2016/05/03/how-to-quantize-neural-networks-with-tensorflow/
[*]Arduino 网页编辑器
https://create.arduino.cc/editor
[*]Arduino IDE
https://www.arduino.cc/en/main/software
[*]TensorFlow 代码库
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/micro
[*]arduino-cli
https://github.com/arduino/arduino-cli#arduino-cli
[*]使用 Arduino 与 Tensorflow.js 玩街头拳击游戏
https://medium.com/@devdevcharli ... low-js-6b0e4734e118
[*]原始版本
https://github.com/sandeepmistry/aimldevfest-workshop-2019
[*]入门指南
https://www.arduino.cc/en/Guide/NANO33BLESense
[*]故障排除
https://www.arduino.cc/en/Guide/Troubleshooting
[*]IMU_Classifier.ino
https://github.com/arduino/ArduinoTensorFlowLiteTutorials/blob/master/GestureToEmoji/ArduinoSketches/IMU_Capture/
[*]Google Colab
https://colab.research.google.com/
[*]arduino_tinyml_workshop.ipynb
https://github.com/arduino/ArduinoTensorFlowLiteTutorials/blob/master/GestureToEmoji/arduino_tinyml_workshop.ipynb
[*]IMU_Capture.ino
https://github.com/arduino/ArduinoTensorFlowLiteTutorials/blob/master/GestureToEmoji/ArduinoSketches/IMU_Classifier/IMU_Classifier.ino
[*]Emoji_Button.ino
https://github.com/arduino/ArduinoTensorFlowLiteTutorials/blob/master/GestureToEmoji/ArduinoSketches/Emoji_Button/Emoji_Button.ino
youxi 本帖最后由 Koman 于 2020-7-12 22:17 编辑
Good,成功了!每次采集10条数据除去空格行后一共是1191行。这里容易被误导。试了几次才OK,还是要非常感谢博主的发贴! Koman 发表于 2020-7-12 22:10
Good,成功了!每次采集10条数据除去空格行后一共是1191行。这里容易被误导。试了几次才OK,还是要非常感谢 ...
是的,这是个大坑,在上一个帖子里有提及。 没想到arduino也能玩出这么高端的应用
页:
[1]