第一章 基于 Arduino 的机器学习开发
1.1 基本介绍
本项目采用的开发板是Arduino Nano 33 ble Sense,模型训练平台为SensiML或者Edge Impulse。对于SensiML,模型部署平台为VS Code和PlatformIO;对于Edge Impulse,模型部署平台为Arduino IDE。
对于SensiML的开发,详细部分可以参考SensiML的开发文档;对于Edge Impulse的开发,详细部分可以参考Edge Impulse的开发文档。
项目以孤立关键词识别为例子,操作系统为Win10,介绍开发过程。
1.2 基于SensiML的模型训练和模型部署
1.2.1 注册SensiML账号
按图1-1填写信息,完成账号注册
图1-1
1.2.2 收集训练数据
先下载Data Caputure Lab软件进行采集,然后在DataCapture Lab登录SensiML账号,并New Project创建关键词识别项目,如图1-2所示
图1-2
然后使用手机录音机功能采集录音,每个录音只包含一个关键字的音频(建议关键词发音时长控制在1s内,有序间隔发音),将采集好的音频文件做好标签区分并上传到电脑端,在电脑端将音频文件格式统一转换为.wav格式(可以使用格式工厂软件进行转化)。
接着在Data CaptureLab软件中点击进入项目,在菜单栏File中选择ImportFiles的Wav Files,上传保存并转换好格式的音频文件,如图1-3所示。
图1-3
接着,对音频数据进行标注。先点击Switch Modes按钮,如图1-4所示,然后点击Capture按钮。进入采集界面后,选择界面最右方的File Metadata选项下的按钮“+AddMetadat”,如图1-5所示。进入配置界面,在SegmentLabels选项中添加该项目所需的所有标签,如图1-6所示。
图1-4
图1-5
图1-6
点击Capture Data Lab软件界面左上角的ProjectExplorer,对之前导入的音频文件进行逐个标注。点击音频文件即可进行标注,通过右键选择范围进行标注(通常关键词字数对应相同个数的音波),选择Edit Label添加对应的标签,如图1-7所示。
图1-7
在完成所有音频文件的标注后,平台会将数据和标注上传到SensiML账号云空间。
1.2.3 利用SensiML平台训练模型
首先,进入SensiML平台网站,登录账号,在Home菜单项处可以看到创建的项目,如图1-8所示
图1-8
点击项目最左边的打开按钮,进入项目训练配置部分。在左侧的菜单栏的Data Manager中,可以看到音频数据和标注的内容,如图1-9所示,这里不需要做任何操作。
图1-9
接着进入PrepareData部分,点击按钮“+ CREATE QUERY”,如图1-10所示,配置参数如图1-11所示,点击“Save”按钮,生成训练和测试数据项。
图1-10
图1-11
然后,点击“Build Model”进入模型搭建部分。由于本次实验是关键词识别,所以选择Keyword Spotting模型,点击“SELECT TEMPLATE”,进入配置界面。在配置界面的第二部分Select Pineline中,选择第一项,如图1-12所示;在第三部分Select Parameters中的“Query”选项中选择前面生成的数据集(如“data”),如图1-13所示。
图1-12
图1-13
生成模型后,就自动进入模型参数配置部分,点击最下面的按钮“OPTIMIZE”开始模型训练。(这里使用keySpot模型,理论上可以不修改数据就直接运行,如果要修改,可以点击每一层的图标进入修改配置界面,如图1-14所示)。
图1-14
模型训练后,可以在选择菜单项“Explore Model”查看训练结果,如图1-15所示。
图1-15
最后,点击“Download Model”菜单项下载模型。如图1-16所示:
图1-16
选择“Arduino Nano 3 BLE Sense”开发板,如图1-17所示,右侧为模型的基本信息。
图1-17
下载模型的基本配置如图1-18所示,选择下载lib模型文件,点击按钮“download”下载模型压缩包到本地端。
图1-18
1.2.4 使用VS Code和Platformio进入模型部署
首先,将下载好的模型压缩包解压,解压后的文件结构如图1-19所示:
图1-19
然后,在github将sensiml提供的nano33知识包下载到VS Code。将自己的模型文件中的./knowledgepack/sensiml/inc和./knowledgepack/sensiml/lib下所有文件、以及model.json文件复制到github下载下来的知识包的./lib/sensiml路径下,覆盖掉原有的所有文件,如图1-20所示。
图1-20
将./knowledgepack/knowledgepack_project的文件复制到github下载的知识包的./src路径下,覆盖原有的文件。
修改知识包的sensor_config.h文件。修改部分如图1-21所示:
图1-21
接着,把开发板nano33接入电脑,双击开发板的“reset”按钮进入烧录状态(烧录状态下端口会变),选择PlatformIO编译和上传模型,选择nano33ble_with_tensorflow的upload,如图1-22所示。
图1-22
然后,模型编译烧录成功后,用任意蓝牙调试设备连接开发板(烧录成功后开发板蓝牙名称为“Arduino”),同时在电脑端打开串口通信工具,即可以看到预测的信息和结果。
由于篇幅关系,基于Edge Impulse的模型训练和模型部署部分内容将放到下期介绍,需要的小伙伴请移步公众号目录,关注以获取最新资料~
全部0条评论
快来发表一下你的评论吧 !