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的模型訓練和模型部署部分內容將放到下期介紹,需要的小伙伴請移步公眾號目錄,關注以獲取最新資料~
-
開發板
+關注
關注
25文章
5032瀏覽量
97371 -
模型
+關注
關注
1文章
3226瀏覽量
48807 -
機器學習
+關注
關注
66文章
8406瀏覽量
132558 -
Arduino
+關注
關注
188文章
6468瀏覽量
186951 -
SensiML
+關注
關注
0文章
13瀏覽量
894
原文標題:嵌入式機器學習開發手冊-第一章
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論