Funpack第九期—在SensorTile.box上使用qeeox进行声音分类识别
SensorTile.box Qeeox 机器学习 神经网络 声音分类 stm32
标签
嵌入式系统
测试
aramy
更新2021-06-11
1072

内容介绍

    项目介绍这是Funpack第九期活动带来的一款SensorTile.box开发板。SensorTile.box开发板主控芯片是STM32L4,携带多种传感器(数字温度传感器(STTS751)、 六轴惯性测量单元(LSM6DSOX)、 三轴加速度计(LIS2DW12和LIS3DHH)、 三轴磁力计(LIS2MDL)、高度计/压力传感器(LPS22HH)、 麦克风/音频传感器(MP23ABS1)、 湿度传感器(HTS221)),整个开发板包括电池集成在一个小盒子内,可玩性超高。

    任务这里选择的是任务三:使用神经网络系统,实现特定声音检测功能,如:口哨、咳嗽、鸟叫等,可参考官方提供的婴儿啼哭检测。
    按开发板的介绍,这个开发板支持机器学习,提供了一个检测婴儿啼哭的例程,可以在手机APP中通过蓝牙连接到开发板,通过麦克风识别是否有婴儿啼哭。不过找了一圈,没发现源代码。无法做参考。通过直播课,老师介绍了一个新工具“Qeexo”,发现QeexoAutoML支持这款开发板,于是打开了新世界。定义了一下自己要实现的任务:通过SensorTile.box来分辨 蝉鸣、海浪、口哨、普通噪音 四类声音。从网络上下载了海浪和蝉鸣的音频文件,口哨就由自己人肉生成了。

    实现过程首先需要在https://automl.qeexo.com/ 网站上注册用户。需要科学地访问该网站。下载一个QeexoAutoML-installer-Windows.exe进行安装。这里安装需要特别留心,该软件应该是一个操作系统连接SensorTile.box开发板的程序,用到了python。我的机器本来就安装了Anaconda,配置好了python环境,然后怎么也装不上该软件,换了机器也不行,后来发现,必须再单独安装一下python3.8.8,然后把单独安装的python环境设置到最优先,才成功安装。 
       安装好对应的软件后,按网站说明文档,从st网站上下载带AI的固件(en.fp-ai-sensing1.zip),用STM32CubeProgrammer烧写到开发板中。安装好驱动程序。

FubmKi8e1VsVQtxqoORnEx80NFJk

        在qeexo网站,创建一个项目,硬件选择SensorTile.box。我觉得我这个应该算是多分类问题吧,所以就选择了多分类。

FnwBMAgOmCXa7KqLOeZR17yXDS_U
     接下来就是收集数据了,将开发板与电脑用usb线连接好。这里传感器就只选择麦克风,采样率只有16000Hz,没有其它选择,选中传感器后,页面就会和开发板进行连接,如果连接报错,尝试一下断电,按BOOT按键重启开发板,保证开发板与页面的连接。
      然后就是收集数据啦!我这里都是选择收集50个数据作为样本。
Ftnzycr2oSARs8nSl74nWJl-9zpl
这里不知为啥DATA CHECK总是出错,不过没关系,不影响后边的使用。收集到4组数据,每组都是50个样本。这个网站还提供了对数据的可视化。可以通过页面图形化地查看数据。FrnzQwd_36-SOkeYz15Nxpz2Ax3n
       
     收集完数据后,就到了训练的步骤了。回到Data页面,选中四组数据点击start new training开始一个训练。训练中有很多参数可以选择,但具体的还不是太清晰,大多数选择默认就好。
FgUJqqHgsHDGuxYNyQaa5-v4UG_g
FsJVxetC-O55avLEy2w0flXOIE0F
Fj7rXRY92ww7ffMs-nfLgieQvXlC
在最后一步,可以选择训练用的模型,这里提供了超多的模型,认识的有支持向量机(svm),神经网络(cnn,rnn),随机森林(RF),还有大量不认识的模型。这里我做了两个模型进行训练,一个是全用默认的参数,一个是用fft处理音频,然后再跑机器学习。但是结果没看出太大区别。训练是在服务器上运行的,CNN,RNN的模型跑起来真的是慢!不过可以关掉页面,第二天再来看结果,基本次日就跑完了。
FiVYXppSFIzfJN_1KDsP3PHCMhic

   这里是跑完的结果图:
Fnjb2o5hJhSC3kCF3fY7pcqUmMby
将开发板用usb查到电脑,点击push to hardward就可以在线烧写到开发板,也可以点save的按钮,下载固件,自行用工具烧写。latency的错误,不知是什么造成的,似乎没有影响。烧写后LIVE TEST就可以点击了,选择好连接模式,可以选择USB连接或是蓝牙连接。USB连接是通过usb口模拟串口和上位机通讯,连接后就可以在页面看见测试的结果了。通过蓝牙也测试了一下,会出现一个QX-3XJ0的设备,有蓝牙适配器的话,可以连接,但是没找到合适的手机APP。
Fnkdye1yInIXNbHkV5bxzfrecDZRFk1ymDqUi-vGY62NUeCD0qxebwIwFjgiy85N6XLUY1n4FLAyrx5H-xgMFqlsK80n_s3IFPGyeKqmqx7QwN5E
Fn8Oays_bzFgxFMwh6xYXzLaiYt8
也可以直接使用串口工具。波特率设置为115200,就能直接从开发板中读取到识别信息。获得的信息是四个分类的概率信息,获取最大的概率值,做为结果就可以了。

    FuOlsFHzntxI93RjBW2pkh9a9XZd
    网站提供了多种机器学习的模型,并提供了大量机器学习的可视化界面,可以通过多角度观察学习过程。对结果模型在开发板上验证,感觉不是交叉验证的分高的分类就分的好。CNN、ANN神经网络模型训练超慢,支持向量机SVM速度很快,对比效果感觉差不多。在验证过程中,海浪声音和噪音分辨成功的几率不是太高,但是口哨和蝉鸣就分辨的非常好。各种模型中,CNN、SVM的效果非常不错,大多数模型对海浪声都识别的不太好。不过机器学习感觉还是很复杂,还有太多的不明白。网站提供训练后完整的固件,可是没提供源代码,使用qeexo感觉功能很强大,可是无法定制需求。

对本活动的心得体会

    体验到机器学习的强大,让我了解到qeexo这样先进的机器学习工具。但还是希望网站能组织大家一起学习机器学习,就像圈圈大神说的那样:机器都开始学习了,我们还等什么!


    

附件下载

binfile.zip

团队介绍

团队成员
aramy
单片机业余爱好者,瞎捣鼓小能手。

评论

0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号