0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino的机器学习开发

麦克泰技术 来源:编程笔记分享 2023-08-11 11:06 次阅读

第一章 基于 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填写信息,完成账号注册

929ec6ec-37f3-11ee-9e74-dac502259ad0.png
图1-1

1.2.2 收集训练数据

下载Data Caputure Lab软件进行采集,然后在DataCapture Lab登录SensiML账号,并New Project创建关键词识别项目,如图1-2所示

92be1218-37f3-11ee-9e74-dac502259ad0.png
图1-2

然后使用手机录音机功能采集录音,每个录音只包含一个关键字的音频(建议关键词发音时长控制在1s内,有序间隔发音),将采集好的音频文件做好标签区分并上传到电脑端,在电脑端将音频文件格式统一转换为.wav格式(可以使用格式工厂软件进行转化)。

接着在Data CaptureLab软件中点击进入项目,在菜单栏File中选择ImportFiles的Wav Files,上传保存并转换好格式的音频文件,如图1-3所示。

92d79cd8-37f3-11ee-9e74-dac502259ad0.png
图1-3

接着,对音频数据进行标注。先点击Switch Modes按钮,如图1-4所示,然后点击Capture按钮。进入采集界面后,选择界面最右方的File Metadata选项下的按钮“+AddMetadat”,如图1-5所示。进入配置界面,在SegmentLabels选项中添加该项目所需的所有标签,如图1-6所示。

93000696-37f3-11ee-9e74-dac502259ad0.png
图1-4

931be28a-37f3-11ee-9e74-dac502259ad0.png
图1-5

932e712a-37f3-11ee-9e74-dac502259ad0.png
图1-6

点击Capture Data Lab软件界面左上角的ProjectExplorer,对之前导入的音频文件进行逐个标注。点击音频文件即可进行标注,通过右键选择范围进行标注(通常关键词字数对应相同个数的音波),选择Edit Label添加对应的标签,如图1-7所示。

9358e9c8-37f3-11ee-9e74-dac502259ad0.png
图1-7

在完成所有音频文件的标注后,平台会将数据和标注上传到SensiML账号云空间。

1.2.3 利用SensiML平台训练模型

首先,进入SensiML平台网站,登录账号,在Home菜单项处可以看到创建的项目,如图1-8所示

9384811e-37f3-11ee-9e74-dac502259ad0.png
图1-8

点击项目最左边的打开按钮,进入项目训练配置部分。在左侧的菜单栏的Data Manager中,可以看到音频数据和标注的内容,如图1-9所示,这里不需要做任何操作。

93a10cb2-37f3-11ee-9e74-dac502259ad0.png
图1-9

接着进入PrepareData部分,点击按钮“+ CREATE QUERY”,如图1-10所示,配置参数如图1-11所示,点击“Save”按钮,生成训练和测试数据项。

93b9e994-37f3-11ee-9e74-dac502259ad0.png
图1-10

93ca31e6-37f3-11ee-9e74-dac502259ad0.png
图1-11

然后,点击“Build Model”进入模型搭建部分。由于本次实验是关键词识别,所以选择Keyword Spotting模型,点击“SELECT TEMPLATE”,进入配置界面。在配置界面的第二部分Select Pineline中,选择第一项,如图1-12所示;在第三部分Select Parameters中的“Query”选项中选择前面生成的数据集(如“data”),如图1-13所示。

93e9bdc2-37f3-11ee-9e74-dac502259ad0.png
图1-12

940b80ba-37f3-11ee-9e74-dac502259ad0.png
图1-13

生成模型后,就自动进入模型参数配置部分,点击最下面的按钮“OPTIMIZE”开始模型训练。(这里使用keySpot模型,理论上可以不修改数据就直接运行,如果要修改,可以点击每一层的图标进入修改配置界面,如图1-14所示)。

942a77f4-37f3-11ee-9e74-dac502259ad0.png
图1-14

模型训练后,可以在选择菜单项“Explore Model”查看训练结果,如图1-15所示。

944eb09c-37f3-11ee-9e74-dac502259ad0.png
图1-15

最后,点击“Download Model”菜单项下载模型。如图1-16所示:

944eb09c-37f3-11ee-9e74-dac502259ad0.png
图1-16

选择“Arduino Nano 3 BLE Sense”开发板,如图1-17所示,右侧为模型的基本信息。

948c6a54-37f3-11ee-9e74-dac502259ad0.png
图1-17

下载模型的基本配置如图1-18所示,选择下载lib模型文件,点击按钮“download”下载模型压缩包到本地端。

94a28622-37f3-11ee-9e74-dac502259ad0.png
图1-18

1.2.4 使用VS Code和Platformio进入模型部署

首先,将下载好的模型压缩包解压,解压后的文件结构如图1-19所示:

94c00300-37f3-11ee-9e74-dac502259ad0.png
图1-19

然后,在github将sensiml提供的nano33知识包下载到VS Code。将自己的模型文件中的./knowledgepack/sensiml/inc和./knowledgepack/sensiml/lib下所有文件、以及model.json文件复制到github下载下来的知识包的./lib/sensiml路径下,覆盖掉原有的所有文件,如图1-20所示。

94d8d8b2-37f3-11ee-9e74-dac502259ad0.png
图1-20

将./knowledgepack/knowledgepack_project的文件复制到github下载的知识包的./src路径下,覆盖原有的文件。

修改知识包的sensor_config.h文件。修改部分如图1-21所示:

94e85044-37f3-11ee-9e74-dac502259ad0.png

图1-21

接着,把开发板nano33接入电脑,双击开发板的“reset”按钮进入烧录状态(烧录状态下端口会变),选择PlatformIO编译和上传模型,选择nano33ble_with_tensorflow的upload,如图1-22所示。

94fad5b6-37f3-11ee-9e74-dac502259ad0.png
图1-22

然后,模型编译烧录成功后,用任意蓝牙调试设备连接开发板(烧录成功后开发板蓝牙名称为“Arduino”),同时在电脑端打开串口通信工具,即可以看到预测的信息和结果。

由于篇幅关系,基于Edge Impulse的模型训练和模型部署部分内容将放到下期介绍,需要的小伙伴请移步公众号目录,关注以获取最新资料~

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

    关注

    25

    文章

    4429

    浏览量

    93993
  • 模型
    +关注

    关注

    1

    文章

    2704

    浏览量

    47687
  • 机器学习
    +关注

    关注

    66

    文章

    8122

    浏览量

    130562
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184834
  • SensiML
    +关注

    关注

    0

    文章

    11

    浏览量

    861

原文标题:嵌入式机器学习开发手册-第一章

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Arduino学习入门资料

    Arduino是一个开源的硬件平台,还能用于安卓开发,它和51单片机差不多,学习成本很低,一个基础的开发套件也就两百多,编程语言和C有点类似,个人感觉比汇编和C简单,有兴趣的可以看一下
    发表于 09-18 16:11

    自律型机器人制作入门.基于Arduino

    [size=0.83em]自律型机器人制作入门.基于Arduino.jpg(101.91 KB, 下载次数: 0)下载附件[color=rgb(153, 153, 153) !important
    发表于 06-23 11:18

    自己开发机器人图形化编程软件

    修改了一下,使之兼容arduino。但必须说明一下:对于arduino爱好者来说,图形化并没有实际意义,这个软件是面向中小学生的,搞机器人教育的兄弟才会理解这个。自己开发的图形化
    发表于 07-02 20:15

    Microchip的机器学习开发工具有哪些

    Microchip的机器学习开发工具
    发表于 11-25 07:58

    Arduino学习笔记

    1.前言    近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino。但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么。因此,博主决定加入一个
    发表于 11-23 06:35

    如何学习arduino

    目录学习arduino的过程学习arduino的过程
    发表于 02-11 06:12

    什么是机器学习? 机器学习基础入门

    给计算机一张图片,然后让计算机判断图片中是否包含猫或人脸。相反,我们利用机器学习,给它数以千计的图片(作为像素的集合)与猫,和人的脸,两者都没有,和一个模型开发通过学习如何关联这些像素
    发表于 06-21 11:06

    Arduino机器人制作指南-奥松机器

    使用Arduino制作机器人的教材,对Arduino单片机进一步学习和实践。
    发表于 12-07 14:52 34次下载

    arduino开发实战指南_机器人卷

    arduino开发机器人资料详细介绍。讲解了其基本原理和方法
    发表于 02-16 17:35 48次下载

    Arduino开发机器人经典书籍推荐Arduino开发实战指南:机器人卷

    ,极其简洁的界面,C语言编程方式,强大的第三方函数库支持,这些功能赋予其强大的生命力。目前市面上开始出现不少Arduino学习教程,包括 Android+Arduino的教程,但是和机器
    发表于 05-07 18:21 22次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>开发</b><b class='flag-5'>机器</b>人经典书籍推荐<b class='flag-5'>Arduino</b><b class='flag-5'>开发</b>实战指南:<b class='flag-5'>机器</b>人卷

    Arduino学习笔记① 初识Arduino

    1.前言    近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino。但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么。因此,博主决定加入一个
    发表于 11-15 10:06 18次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>学习</b>笔记① 初识<b class='flag-5'>Arduino</b>

    arduino学习过程

    目录学习arduino的过程学习arduino的过程
    发表于 12-07 19:06 14次下载
    <b class='flag-5'>arduino</b>的<b class='flag-5'>学习</b>过程

    arduino 入门学习第一课——初识arduino

    学习arduino第一课欢迎使用Markdown编辑器什么是arduino?arduino程序setup()函数loop()函数LED灯实验中用到的库函数实验一:让LED灯亮出不同样式
    发表于 01-04 10:45 13次下载
    <b class='flag-5'>arduino</b> 入门<b class='flag-5'>学习</b>第一课——初识<b class='flag-5'>arduino</b>

    带你一起学习Arduino——介绍入门

    基础的一个非常好的平台应用。他与其他单片机的区别也有很多,比如Arduino开发不需要学习C++,只要你思维逻辑清楚就能完成这个实验。像一些32单片机等适合于工业开发使用,
    发表于 01-17 11:31 11次下载
    带你一起<b class='flag-5'>学习</b><b class='flag-5'>Arduino</b>——介绍入门

    使用CASP在Arduino上进行机器学习

    电子发烧友网站提供《使用CASP在Arduino上进行机器学习.zip》资料免费下载
    发表于 10-19 09:24 0次下载
    使用CASP在<b class='flag-5'>Arduino</b>上进行<b class='flag-5'>机器</b><b class='flag-5'>学习</b>