0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

基于Arduino的機器學習開發(fā)

麥克泰技術 ? 來源:編程筆記分享 ? 2023-08-11 11:06 ? 次閱讀

第一章 基于 Arduino機器學習開發(fā)

1.1基本介紹

本項目采用的開發(fā)板是Arduino Nano 33 ble Sense,模型訓練平臺為SensiML或者Edge Impulse。對于SensiML,模型部署平臺為VS Code和PlatformIO;對于Edge Impulse,模型部署平臺為Arduino IDE。

對于SensiML的開發(fā),詳細部分可以參考SensiML的開發(fā)文檔;對于Edge Impulse的開發(fā),詳細部分可以參考Edge Impulse的開發(fā)文檔。

項目以孤立關鍵詞識別為例子,操作系統(tǒng)為Win10,介紹開發(fā)過程。

1.2 基于SensiML的模型訓練和模型部署

1.2.1注冊SensiML賬號

按圖1-1填寫信息,完成賬號注冊

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

1.2.2 收集訓練數(shù)據(jù)

下載Data Caputure Lab軟件進行采集,然后在DataCapture Lab登錄SensiML賬號,并New Project創(chuàng)建關鍵詞識別項目,如圖1-2所示

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

然后使用手機錄音機功能采集錄音,每個錄音只包含一個關鍵字的音頻(建議關鍵詞發(fā)音時長控制在1s內(nèi),有序間隔發(fā)音),將采集好的音頻文件做好標簽區(qū)分并上傳到電腦端,在電腦端將音頻文件格式統(tǒng)一轉(zhuǎn)換為.wav格式(可以使用格式工廠軟件進行轉(zhuǎn)化)。

接著在Data CaptureLab軟件中點擊進入項目,在菜單欄File中選擇ImportFiles的Wav Files,上傳保存并轉(zhuǎn)換好格式的音頻文件,如圖1-3所示。

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

接著,對音頻數(shù)據(jù)進行標注。先點擊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,對之前導入的音頻文件進行逐個標注。點擊音頻文件即可進行標注,通過右鍵選擇范圍進行標注(通常關鍵詞字數(shù)對應相同個數(shù)的音波),選擇Edit Label添加對應的標簽,如圖1-7所示。

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

在完成所有音頻文件的標注后,平臺會將數(shù)據(jù)和標注上傳到SensiML賬號云空間。

1.2.3 利用SensiML平臺訓練模型

首先,進入SensiML平臺網(wǎng)站,登錄賬號,在Home菜單項處可以看到創(chuàng)建的項目,如圖1-8所示

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

點擊項目最左邊的打開按鈕,進入項目訓練配置部分。在左側(cè)的菜單欄的Data Manager中,可以看到音頻數(shù)據(jù)和標注的內(nèi)容,如圖1-9所示,這里不需要做任何操作。

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

接著進入PrepareData部分,點擊按鈕“+ CREATE QUERY”,如圖1-10所示,配置參數(shù)如圖1-11所示,點擊“Save”按鈕,生成訓練和測試數(shù)據(jù)項。

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”選項中選擇前面生成的數(shù)據(jù)集(如“data”),如圖1-13所示。

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

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

生成模型后,就自動進入模型參數(shù)配置部分,點擊最下面的按鈕“OPTIMIZE”開始模型訓練。(這里使用keySpot模型,理論上可以不修改數(shù)據(jù)就直接運行,如果要修改,可以點擊每一層的圖標進入修改配置界面,如圖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”開發(fā)板,如圖1-17所示,右側(cè)為模型的基本信息。

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

接著,把開發(fā)板nano33接入電腦,雙擊開發(fā)板的“reset”按鈕進入燒錄狀態(tài)(燒錄狀態(tài)下端口會變),選擇PlatformIO編譯和上傳模型,選擇nano33ble_with_tensorflow的upload,如圖1-22所示。

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

然后,模型編譯燒錄成功后,用任意藍牙調(diào)試設備連接開發(fā)板(燒錄成功后開發(fā)板藍牙名稱為“Arduino”),同時在電腦端打開串口通信工具,即可以看到預測的信息和結果。

由于篇幅關系,基于Edge Impulse的模型訓練和模型部署部分內(nèi)容將放到下期介紹,需要的小伙伴請移步公眾號目錄,關注以獲取最新資料~

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5050

    瀏覽量

    97456
  • 模型
    +關注

    關注

    1

    文章

    3243

    瀏覽量

    48836
  • 機器學習
    +關注

    關注

    66

    文章

    8418

    瀏覽量

    132628
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    187054
  • SensiML
    +關注

    關注

    0

    文章

    13

    瀏覽量

    899

原文標題:嵌入式機器學習開發(fā)手冊-第一章

文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Arduino學習入門資料

    Arduino是一個開源的硬件平臺,還能用于安卓開發(fā),它和51單片機差不多,學習成本很低,一個基礎的開發(fā)套件也就兩百多,編程語言和C有點類似,個人感覺比匯編和C簡單,有興趣的可以看一下
    發(fā)表于 09-18 16:11

    自律型機器人制作入門.基于Arduino

    [size=0.83em]自律型機器人制作入門.基于Arduino.jpg(101.91 KB, 下載次數(shù): 0)下載附件[color=rgb(153, 153, 153) !important
    發(fā)表于 06-23 11:18

    自己開發(fā)機器人圖形化編程軟件

    修改了一下,使之兼容arduino。但必須說明一下:對于arduino愛好者來說,圖形化并沒有實際意義,這個軟件是面向中小學生的,搞機器人教育的兄弟才會理解這個。自己開發(fā)的圖形化
    發(fā)表于 07-02 20:15

    Arduino學習筆記

    1.前言????近段時間,博主陸續(xù)更新了ESP8266學習筆記,主要開發(fā)平臺是Arduino。但是,對于很多無基礎的初學者來說,甚至不了解Arduino是什么。因此,博主決定加入一個
    發(fā)表于 11-23 06:35

    什么是機器學習? 機器學習基礎入門

    給計算機一張圖片,然后讓計算機判斷圖片中是否包含貓或人臉。相反,我們利用機器學習,給它數(shù)以千計的圖片(作為像素的集合)與貓,和人的臉,兩者都沒有,和一個模型開發(fā)通過學習如何關聯(lián)這些像素
    發(fā)表于 06-21 11:06

    Arduino機器人制作指南-奧松機器

    使用Arduino制作機器人的教材,對Arduino單片機進一步學習和實踐。
    發(fā)表于 12-07 14:52 ?34次下載

    arduino開發(fā)實戰(zhàn)指南_機器人卷

    arduino開發(fā)機器人資料詳細介紹。講解了其基本原理和方法
    發(fā)表于 02-16 17:35 ?48次下載

    Arduino開發(fā)機器人經(jīng)典書籍推薦Arduino開發(fā)實戰(zhàn)指南:機器人卷

    ,極其簡潔的界面,C語言編程方式,強大的第三方函數(shù)庫支持,這些功能賦予其強大的生命力。目前市面上開始出現(xiàn)不少Arduino學習教程,包括 Android+Arduino的教程,但是和機器
    發(fā)表于 05-07 18:21 ?23次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>機器</b>人經(jīng)典書籍推薦<b class='flag-5'>Arduino</b><b class='flag-5'>開發(fā)</b>實戰(zhàn)指南:<b class='flag-5'>機器</b>人卷

    可用于機器學習的Funpack8活動板卡揭曉

    從上周開始了解Arduino,接著認識Arduino的各種常用開發(fā)板,到使用Arduino進行機器學習
    的頭像 發(fā)表于 04-01 10:30 ?1745次閱讀
    可用于<b class='flag-5'>機器</b><b class='flag-5'>學習</b>的Funpack8活動板卡揭曉

    Arduino學習筆記① 初識Arduino

    1.前言????近段時間,博主陸續(xù)更新了ESP8266學習筆記,主要開發(fā)平臺是Arduino。但是,對于很多無基礎的初學者來說,甚至不了解Arduino是什么。因此,博主決定加入一個
    發(fā)表于 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的過程
    發(fā)表于 12-07 19:06 ?14次下載
    <b class='flag-5'>arduino</b>的<b class='flag-5'>學習</b>過程

    arduino 入門學習第一課——初識arduino

    學習arduino第一課歡迎使用Markdown編輯器什么是arduino?arduino程序setup()函數(shù)loop()函數(shù)LED燈實驗中用到的庫函數(shù)實驗一:讓LED燈亮出不同樣式
    發(fā)表于 01-04 10:45 ?13次下載
    <b class='flag-5'>arduino</b> 入門<b class='flag-5'>學習</b>第一課——初識<b class='flag-5'>arduino</b>

    使用CASP在Arduino上進行機器學習

    電子發(fā)燒友網(wǎng)站提供《使用CASP在Arduino上進行機器學習.zip》資料免費下載
    發(fā)表于 10-19 09:24 ?0次下載
    使用CASP在<b class='flag-5'>Arduino</b>上進行<b class='flag-5'>機器</b><b class='flag-5'>學習</b>

    開發(fā)用于移動機器人的Arduino擴展

    電子發(fā)燒友網(wǎng)站提供《開發(fā)用于移動機器人的Arduino擴展.zip》資料免費下載
    發(fā)表于 12-28 10:40 ?0次下載
    <b class='flag-5'>開發(fā)</b>用于移動<b class='flag-5'>機器</b>人的<b class='flag-5'>Arduino</b>擴展

    基于Arduino開發(fā)的喚醒詞檢測實現(xiàn)

    使用 Arduino開發(fā) TinyML 是我們遇到的最有趣的課程項目之一。學習過其他機器學習 (ML) 課程后,我們對 ML 的“魔力”
    發(fā)表于 07-07 16:36 ?0次下載
    基于<b class='flag-5'>Arduino</b>板<b class='flag-5'>開發(fā)</b>的喚醒詞檢測實現(xiàn)