Funpack第二季第一期-Syntiant TinyML-手势识别效果展示
本片文章分享我在Funpack第二季第一期活动中使用Syntiant TinyML开发板进行手势识别开发的流程及效果展示
标签
嵌入式
Funpack第二季第一期
Syntiant TinyML
反正都一样
更新2022-07-05
580

FkfH7VpqUa-01egB8U1nzjTjiVqM

项目介绍

这里是我参加Funpack第二季第一期活动的任务总结报告,我所完成的是任务二,手势识别。

在edge impulse网站上训练好不同手势运动的模型文件,下载到开发板上后,利用板子上的6轴运动传感器感应到手势的移动,并将数据传给SAMD21主处理器,主处理器再将数据通过SPI的方式传给NDP101神经决策处理器,NDP101通过下载进去的模型去判断传来的数据属于哪种手势变化,当然,手势识别有一定的概率性,若是训练的模型不够完善,可能会发生误识别

主要硬件介绍

SAMD21:Cortex-M0+内核 32位低功耗48MHz ARM MCU,内置256KB FLASH和32KB SRAM,5个数字I/O,与Arduino MKR系列板兼容,其中包含1路UART接口和1路I2C接口(包括在数字I/O引脚中)

NDP101神经决策处理器:可以使语音和传感器应用程序分别在 140 和 100 微瓦以下运行,与基于 MCU 的传统 MCU 相比,吞吐量提高 20 倍,系统效率提高 200 倍

三色 RGB LED:本次任务通过这个led灯显示不同的颜色来表示识别的不同手势

BMI160 6轴运动传感器:获取位置及速度变化数据

SPH0641LM4H麦克风:获取语音数据

SD卡插槽:不同于语音识别的项目,手势识别项目需要插SD卡进行操作

板子上的IO:

Fp6joZ_6FcDoN74Guq96oSdjpsnd

主要软件介绍

   1、手势模型文件的训练:

   建议使用谷歌浏览器,网址:https://studio.edgeimpulse.com

   Flyc_h5_KH199jZrPake_Y6eQNMc

   Fk_2a8ZhH44mFK2DCp_bjWgoiOBl

上图可以看出,在项目中我一共设计了5个动作,且训练与测试的数据大约为8:2

FrhnupxEWz2JSjvPX8gHG81bNQWP

   五个手势分别为:旋转,闲置,左右移动,上下移动,摆动

   选择合适的处理块,学习块,就可以开始训练模型

FlFW1NMiCCkRO5TfAZ5bm5f_ttIA

   我这里运气不错,测试效果不错,不同的手势数据都分的很开,说明我的几个手势都有很大的不同点

FlTrIQQZ4G_bvNRG-Majqrm5fS_h

最后尽可以生成模型下载进板子中了

 

   2、代码实现

FpxCcZ1wlGddVre2gXn-NCPoPf4D

可以从官方的github上下载到tinyml的固件库,windos电脑点击最下面那个bat文件就可以安装程序编译所需要的库了。为了适配我们下载进去的手势识别的模型文件,我们还需进行一些修改

FokEl29Qw0vR5ddTgQk3OmYMFac-

这个文件里的这个宏定义,模型标签的数量为5,因为我们有5种手势

FsmaCovgt_mijtKWuupF0yWSB-XC

该文件的这个变量,可以将我们各个手势的标签名填入

FtgNlSooWwVhIOcBUxq30yPN0C0p

该文件的这里,因为我们使用的是6轴运动传感器,且先前下载进去的是由运动传感器检测到的不同位置速度变化数据所产生的的模型文件,这里应该使用ei_model_sensor.bin,下面那个文件名是语音模型文件名

FhoKN4pUbbcmRnZ5eUFGo20VeN2E

最后,就是.ino文件里面。板子会一定间隔检测所传来的位置速度变化数据,随后在中断中触发该函数,而在该函数中,我们可以根据传来的参数进行匹配,从而判断出当前是什么手势,并且开启不同颜色的LED灯

功能展示

FixG2h--r-kx1JuY4Wj2I02BDycj

闲置时显示白灯

FjFxdPDGl_o6J1jJgoVS5RoQYUlz

旋转时显示绿灯

Fgi13oc_Pkb_kv2p3SX3ke-zVBHs

左右移动显示蓝灯

心得体会

从这次的活动中,我学习到了如何用edge impulse生成深度学习的模型数据,并将其部署在嵌入式开发板上,使板子具有判断一些复杂,人类无法正确处理的模拟数据。

其实在上面的5个手势识别中,上下移动开启红灯这项并没有很好的实现,即使是上下移动,也是显示了闲置时的白灯,我想是因为我的训练数据还太少的原因,使模型并不能很好的分辨出闲置与上下移动的数据差别。

当然也有可能,我选的手势本身就不太合适,即上下移动跟闲置这两个手势本身就存在着一定的数据相似。

总的来说,还是学到了不少新知识的,十分感谢硬禾学堂平台。

附件下载
FunPack第2季第1期.zip
我的手势数据,固件代码
团队介绍
个人
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号