查看: 310|回复: 1

[项目] 在Arduino Nano 33 BLE Sense上用机器学习通过声音分辨不同的昆虫

[复制链接]

该用户从未签到

发表于 2020-7-15 11:15 | 显示全部楼层 |阅读模式
本帖最后由 zhenjia11111 于 2020-7-15 11:18 编辑

用机器学习识别植物的应用有很多,拿出手机,打开APP,拍张照片就可以一键识别眼前盛开的花朵叫什么名字。同样,如果你想识别昆虫的种类,也可以用机器学习来完成,有了Qeexo AutoML加上Arduino,即使不懂代码,你也可以自己动手做出用声音识别昆虫的应用。


我们以蜜蜂、蟋蟀和蝉这三种昆虫的声音为例。在Qeexo AutoML中创建一个新的项目,并通过Arduino Nano 33 BLE Sense 采集这三种昆虫的声音。考虑到在实际环境中采集昆虫声音的难度较大,我们选择通过网络下载这三种昆虫的声音文件,然后用播放音频的方式让Arduino来采集数据。每种昆虫的声音文件只需要30秒,再加上100秒的背景音(采集不播放任何音频文件情况下的背景声音,是为了与有声的情况进行区分)。同时为了让这个项目更有趣,我们还加入了30秒的哨声文件,看机器学习是否能分辨哨声与昆虫声。



一、采集数据


设备:
一台装有Windows或Mac系统的电脑
一个Arduino Nano 33 BLE Sense*


在正确安装好Qeexo AutoML之后,将Arduino连接到电脑上,就可以直接进行数据采集。


首先创建项目,为项目命名,然后选择项目类型,由于我们需要进行多种昆虫声音的识别,所以这里应该选择“Multi-class Classification”。最后选择目标硬件,我们使用的是ArduinoNano 33 BLE Sense,可以看到在Qeexo AutoML支持的所有硬件平台中,Arduino Nano 33 BLE Sense这一行的图标“READY”为绿色,显示硬件已经准备好,点击选择并按下“CREATE”以创建项目。

1.png


项目创建完成之后,就可以进行数据采集了。Qeexo AutoML既支持数据上传,也支持现场采集数据。在这个项目中,我们则是直接使用Arduino来采集数据。由于数据在很大程度上影响着机器学习项目的最终结果,所以我们应该尽量采集质量更好的数据。


第一步,创建环境,按照自己的喜好为其命名,比如,我们为这个项目创建了一个名为“microphone_insect_sound”的环境。


第二步,传感器配置。在这一个步骤中,我们可以选择自己想要使用的传感器以及传感器对应的数据频率,Arduino Nano 33 BLE Sense支持多种传感器,包括声音传感器,加速度计,陀螺仪,温度传感器,湿度传感器,压力传感器,等等。由于我们的项目是对于昆虫声音的识别,所以只需要选择声音传感器。完成传感器配置之后,系统会创建一个数据采集的library,并将其推送到Arduino硬件上以便进行采集数据。


第三步,采集数据。由于声音是持续性的数据,所以我们选择的数据类型为“Continuous”。我们首先进行背景音采集,将这个数据文件标注为“Background”,并将数据采集时间(s)设定为100。最后点击“RECORD”按钮,进入数据采集页面。


2.png


在数据采集页面上方有“START”按钮,点击按钮就可以正式开始采集数据了。由于我们采集的是背景音,所以在这个环节我们不需要进行任何操作,Arduino上的声音传感器会自动采集环境中的声音信号。但需要注意的是,在采集过程中,我们不应该制造任何噪音。


3.png


背景音采集完成之后,页面自动回到上一步,我们就可以采集下一种数据了。同样,标注数据种类,输入数据采集量/时间(s),然后进入采集页面。例如,我们将蜜蜂的声音标注为“BEE”,输入的数据量/时间(s)为30。开始数据采集前,先开始播放蜜蜂的声音,以确保不会有空白无声的情况被系统标注为“BEE”,再开始让Arduino采集数据。

按照同样的方法完成所有种类的数据采集之后,我们就可以进入Training页面了。


二、训练模型


在Training页面上,我们可以通过Visualization功能查看每一种数据对应的图表,方便我们发现数据中比较明显的问题。


4.png


之后,选择好所有需要的数据 (Background, BEE, CRICKET,CICADA),点击“START NEW TRAINING”,就可以正式开始训练模型了。


首先我们要决定是否使用Group Labels功能,这个功能可以用来将2个或者多个数据文件变成一个群组,例如,如果我们采集了2个不同种类蟋蟀的声音数据,在这个项目中,我们不需要识别不同种类的蟋蟀,只需要将蟋蟀和其他昆虫的声音区别开,所以我们可以将这2种蟋蟀的声音数据变成一个数据群组来使用。


5.png


如果你的数据不需要进行Group操作,也可以直接进入下一步“Inference Settings”。如果你不了解机器学习,在这里可以选择让系统自动进行设置。当然,你也可以选择手动对数据进行更精准的设置。


6.png


完成之后,我们就可以对算法进行选择了。在这里,我们打开“Feature Selection”,“Hyperparameter Tuning”,“Generate Learning Curve”这三个功能,并选择Qeexo AutoML提供的ANN, CNN, GBM, LogisticRegression, Random Forest, XGBoost共6种算法,来创建机器学习模型。


7.png


模型创建的进度会在页面上实时显示,当所有模型都完成之后,点击“TRAININGRESULT”就可以查看结果了。


8.png


三、模型选择与测试


在Models页面中,可以查看我们选择的每一个模型的Cross validation,Latency和Size等信息,Qeexo AutoML平台还提供了每一个模型对应的可视化图表,方便用户了解。


9.png

10.png

11.png

12.png

13.png

在我们的昆虫声音识别项目中,GBM和LR模型的表现最佳,所以我们可以选择其中一个模型,点击PUSH TO HARDWARE将模型推送到Arduino上,并通过播放不同的声音来查看分类结果是否准确。当然如果你希望将建好的模型下载到电脑上,则可以点击SAVE来保存模型文件。


14.jpg


此时,一个用机器学习完成的昆虫声音识别应用就完成了,在这个过程中,我们只花费了十多分钟的时间,没有进行任何编程,就完成了一个准确率相当不错的项目。你也赶紧来试试吧。


*“Sense”is the model with sensors installed, which we need

如果你也想试一下,目前Qeexo AutoML正在免费试用阶段,只要到https://automl.qeexo.com/注册铜牌会员账号,就可以完成和上面一样的机器学习项目了。
  • TA的每日心情
    奋斗
    2016-12-30 20:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-7-15 22:43 | 显示全部楼层
    楼主利用这功能做个打蚊子的设备吧,一定有不少坛友想在你这定货
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    Arduino UNO中文数据手册
    Arduino UNO中文数据手册
    2018.9.23重新翻译整理 转载请注明来自Arduino中文社区,并附本帖链接 本帖地址:http
    LabVIEW监控温度传感器
    LabVIEW监控温度传感器
    这里涉及 dht11 数字温度湿度传感器模块、TM1637数码显示模块、LabVIEW。 功能
    黑乌鸦的Arduino兵器库-----DS1302时钟模块
    黑乌鸦的Arduino兵器库---
    嗯 这是一个系列后期会罗列几乎所有的常见基础模块的demo所以 大家的回复将是我最大
    中文 字库 的8针 OLED 12864模块 arduino
    中文 字库 的8针 OLED 128
    屏幕电路SPI连线: 中文字库OLED Arduino UNO GND GND
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表