Funpack第九期:用STM32评估板SensorTile.Box物联网节点搭建一个声音分类器
本项目将使用STM32L4系列的官方评估版,SensorTile.Box上面的传感器收集声音数据,使用AutoML来帮助进行训练,训练一个基于机器学习算法的声音分类器,用来实现区分男声和女声,最后把该模型部署到开发板上来测试。
标签
嵌入式系统
STM32
Robobachelor
更新2021-06-23
1142

1.前期准备——模型训练环境和驱动程序的安装

本部分参考QeexoAutoML的官方安装指南翻译而成,原文档参考以下链接:

Qeexo AutoML SensorTile.Box安装指南

1.1   安装Python 3.8.8

官方测试可用的版本是Python 3.8.8. QeexoAutoML的前端在浏览器上,但它需要依赖本地的Python环境才可以正常运行。Python 3.8.8下载地址:Python 3.8.8

注意安装时需要勾选设置有关环境变量的选项,如图:

Ftl5RZfLupf5BPbQFdaiaQNW1lQu1.2   安装QeexoAutoML

如果Python已安装并且设置好了环境变量,QeexoAutoML应该可以正常被安装。下载地址:QeexoAutoML下载

1.3   安装dfu-util

首先到这里下载dfu-util的可执行文件:https://github.com/GrumpyOldPizza/arduino-STM32L4/tree/master/tools/windows

下载dfu-util.exe之后,需要先在%PROGRAMFILES%新建一个名为dfu-util的文件夹,然后把dfu-util.exe移动至该文件夹中。如图:

FifN4URkLf9ebZXXFleMROPkQ6RE

1.4   确保SensorTile.box刷回原厂固件

官方固件可以在这里找到:https://www.st.com/en/embedded-software/fp-ai-sensing1.html

1.5   更新DFU驱动

我们使用Zadig来更新USB驱动程序。Zadig下载地址:https://zadig.akeo.ie/

首先让SensorTile.Box进入DFU模式:拔掉电池和USB线,按下板子上的Boot键不放,插入USB线之后再松手释放按键,即可进入DFU模式。成功进入DFU模式后板子上应该没有亮着的灯。

之后在Zadig“选项”中选择“列出所有设备”,在随后出现的菜单中找到STM32 BOOTLOADER。如图:

Fgp0l2J8yrFaulA-GEpE988Ed2c8

安装名称为“WinUSB (v6.1.7600.16385)”的驱动程序:

FmcMaRJjT9ygsSEGlwuA7JIpAM3t

1.6   安装STM32虚拟串口驱动

首先重启芯片,即拔掉再插回USB线以退出DFU模式。

打开设备管理器,检查这里虚拟串口的驱动是否正常,如果没有黄色叹号即可跳过此步骤。

Fgpi2Zn-jApriZ_tlhIAppA-tl7U

如果驱动不正常,可以到这里下载虚拟串口驱动:STM Virtual COM Port Driver

 

如果前期的准备工作都做好了之后,接下来的数据收集,特征提取,训练即测试等步骤都可以比较方便地使用我们的开发板了,AutoML这个工具可以完成烧录程序等不少事情,可以使我们专注于机器学习上。

2. 数据收集

Fmq47_nfKS1Bl5F122ybE_4GltXT

在数据收集这一步中,可以通过AutoML选中几个需要收集数据的传感器,设置数据的速率和分辨率,它会自动生成一个专门用于收集数据的STM32程序刷写到开发板中,可谓相当方便。这里我勾选了麦克风,采样率为最大的也就是默认的16kHz.

数据收集程序烧录完成,便可按照网页提示,输入每个分类的标签,然后开始录音了。在我的实验中,我找了一些男人和女人让他们随意说一些内容作为训练数据。

FhQiGjmeCefvsxnjnWFYtgM2nBYu

3.特征提取

这里AutoML平台提供了自动特征提取和手动选择,手动特征选择有下面这些可供选择。由于笔者对信号处理相关的知识不是特别了解,就先把这些特征都选择上试试看了。

Fi4qKTGhnNhzoorxcFw8H1Z3yBP0

4. 模型选择与训练

接下来就可以选择想要使用的模型,配置参数并进行训练了,如图所示。训练过程在服务器端完成,含有神经网络的模型可能会花费数小时的时间来完成训练。

FroZtDiqBScmREtCP1PzeInX6sgvFvf5SpR4vvu6JTIS7VVOWx595Cyd

5. 测试

训练完成后可以看到该模型的交叉验证的准确率大约为70%,不是特别高,这也与我的训练数据,模型选择,特征选择等都有关系。网站还提供了很多可视化工具,还可以测试部署到开发板上的推理的延时,可谓十分方便。测试效果可以参考视频的后半部分。

6. 总结

完成本项目后,我认为这个开发板的亮点在于,体现了未来嵌入式开发,物联网开发将会越来越方便,图形化操作部分取代代码的趋势。当拿到一个驱动已经完善,工具方便的评估板,要实现什么功能可以用更方便的图形化把大脑里的想法表现出来时,只能说真香。

对于本项目来说,距离实际应用还有很多工作要走,首先在于提升模型的准确度和减小计算量。本示例中用随机森林算法分类延迟为35ms,而采用卷积神经网络却有1000ms的延迟。并且准确率也还不够好,可能需要更加完整的数据集,并且反复调试参数。其次在于打通QeexoAutoML生成的固件与我们实际的需求,也就是说考虑如何把分类结果记录下来,如何再在AutoML训练的基础上继续增加我们想要的功能。

恳请各位读者提出宝贵的意见和建议,笔者微信:Jingyi_Wang2000,邮箱:Jingyi.Wang1903@student.xjtlu.edu.cn

团队介绍
团队成员
王景祎
西交利物浦大学 19届 数字媒体技术专业学生
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号