基于Arduino的机器学习开发

描述

第一章 基于 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的模型训练和模型部署部分内容将放到下期介绍,需要的小伙伴请移步公众号目录,关注以获取最新资料~

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分