第一章 基于 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的模型训练和模型部署部分内容将放到下期介绍,需要的小伙伴请移步公众号目录,关注以获取最新资料~
是德科技为 PathWave ADS增添新分析工具
realme真我Q5系列新机发布:斩获京东、天猫双平台销量冠军
USB端口简化附件与计算机连接过程
软启动器的主要参数有什么
怎样根据介质选择流量计
基于Arduino的机器学习开发
什么是汽车的智能钥匙/智能空调
蓄电池的寿命和性能与放电制度和使用条件是息息相关的
自制个人电子名片,简单实用
加速嵌入式视觉和推理的开放标准:行业概述
RISC-V主要发明人:垂直半导体商业模式时代,RISC-V将势不可挡
SIwave的使用方法
用电压控制频率的LC振荡电路
MEMS惯性导航的应用
CMOS器件的输入信号上升时间为什么不能太长?
凌力尔特推出具集成输出断接功能的同步升压型DC/DC转换器LTC3122
示波器眼图的基本知识
用户视角下的中国人工智能 主流用例下沉碎片场景扩散
卧式蒸汽回收机的原理是什么,它的特点是什么
一份2019 AI算法岗求职攻略,快来“扫盲”吧!