大数跨境
0
0

【回顾389期】TinyML实操工作坊 | ESP32项目实现手势识别

【回顾389期】TinyML实操工作坊 | ESP32项目实现手势识别 蘑菇云创客空间
2022-05-30
1
导读:我们熟悉的light老师将带领我们走进神奇的魔法课堂,教大家如何利用TinyML来制作一个能够识别手势的“魔杖”。



回顾389期


TinyML实操工作坊

 ESP32项目实现手势识别


点击图片观看回顾视频


5月26日,我们熟悉的light老师将带领我们走进神奇的魔法课堂,教大家如何利用TinyML来制作一个能够识别手势的“魔杖”。


效果演示



当Light老师手持传感器画出圆圈时,小灯就能发出蓝色的光芒。



而画出叉的轨迹时则会亮起红色的灯,TinyML精准识别出差别并做出了相应的反馈。

然而我们的运动轨迹非常飘忽不定,也没有什么规律可循,放在以前要做这样的手势识别是很件困难的事情。但TinyML的出现就成为了识别手势的捷径。



所用硬件与软件



ESP32、九轴传感器模块


让我们组装起来,Light还加了小灯与按钮,还是比较简单的,很适合入门!



在软件上,Light分为了两部分。一部分是Arduino用来写ESP32的代码。另外一部分是Python3.8版本用来做数据训练与数据采集。



框架与环境


在框架上Light老师选用了这三种:

Tensorflow

Keras

Tensorflow Lite Micro


在环境方面我们需要准备好这些:

Python:

Python 3.8

Tensorflow 2.9.2

numpy 1.22.4

PyOpenGL 3.1.6


Aruino: 

ESP32 Arduino 2.0.3

TensorFlowLite_ESP32 0.9.0




注意:一定要选这两项哦,只有新本版才有这些选项!


如果有同学喜欢用虚拟环境来跑也没有问题。




数据与模型


数据:

1.2s 数据长度,

100采样/s



模型:

线性全连接网络

720-向量输入

2-向量输出


有了这些基础铺垫,接下来我们就可以进入代码环节啦!


代码解析



大家可以看到Light老师写的Create Model函数,是创建一个模型,创建后可以列出模型的基本信息。


这是一个线性的模型,它拥有三层。每一层中的dense表示它是个全连接的网。解析为第一层输入为720,有32个神经元,2万多个参数输出,以此类推,总的参数量为23K。


那如何用代码来实现网络创建?



我们这可以这样,第一段其中的softmax通常用于多分类!这样我们就构建了一个模型。


第二段则包含优化器,决定我们的训练。还包含交叉熵,也是常用于分类问题。不理解的话可以只理解loss误差与metrics精度,其余照抄。


接下来就是数据采集一块,让我们转移阵地到Aruino!




一行为六个数据,代表六个传感器数据。每一行都是一次采集,120行构成一个完整的动作轨迹。



Loop为技术计时器,用来计算每一周期消耗了多少时间与工作负载。带有两种工作模式,一为训练模式,另一为推理模式。t为单次循环的微妙计数,每个周期为10毫秒的延迟。


解析代码的过程很长,远不止以上这些!感兴趣的小伙伴们可以在B站蘑菇云创客空间观看回顾视频。


Light老师还很贴心的在GitHub上分享了项目资料与代码,从下方网址进入!


https://github.com/mushroomcloud-cc/tinyml-workshop

(喜欢这个项目的小伙伴给一颗小星星呗~)


我们本期开放夜就到这里啦,下期再见!



蘑菇云创客空间致力于提供一个创新开放的交流平台,如果你热爱创造,喜欢创新,那就来蘑菇云实现自己的奇思妙想!


【声明】内容源于网络
0
0
蘑菇云创客空间
蘑菇云是一个位于张江高科技园区的开放式创客空间,无论你是骇客,硬件高手,艺术家,设计师,DIY爱好者,在这里都能找到属于自己的一片天地。
内容 1081
粉丝 0
蘑菇云创客空间 蘑菇云是一个位于张江高科技园区的开放式创客空间,无论你是骇客,硬件高手,艺术家,设计师,DIY爱好者,在这里都能找到属于自己的一片天地。
总阅读1.9k
粉丝0
内容1.1k