電子發(fā)燒友App

硬聲App

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

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

3天內不再提示
創(chuàng)作
電子發(fā)燒友網>電子資料下載>電子資料>使用SAMD21 ML評估套件進行手勢識別

使用SAMD21 ML評估套件進行手勢識別

2023-06-15 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

?

圖 1:部署的手勢分類器
?

教程將指導您完成使用 SensiML 構建手勢分類器并將其部署到 Microchip SAMD21 機器學習評估套件的過程。我們還將就您在設計數(shù)據收集過程時應考慮的因素以及您在開發(fā)自己的應用程序時可能遇到的常見問題的解決方案提供一些指導。

與本指南一起提供的是一個完全開發(fā)的手勢分類器項目,包括數(shù)據集、預訓練的機器學習模型和固件源代碼,可幫助您使用 SensiML 和 SAMD21 ML 評估套件快速啟動和運行您自己的項目。

在你開始之前

在我們開始之前,您需要按照以下步驟中的詳細說明安裝和設置所需的軟件。

1. 安裝 MPLAB X IDE 和 XC32 編譯器。這些是加載手勢識別項目和對 SAMD21 板進行編程所必需的。您可以使用 XC32 編譯器的默認免費許可證,因為我們在這里不需要任何專業(yè)功能。

2.如果您還沒有,請在 SensiML注冊一個免費的社區(qū)版帳戶。我們將使用它來處理我們的傳感器數(shù)據并生成手勢分類庫。

3. 從 SensiML下載頁面下載 SensiML Data Capture Lab 并安裝。我們將使用它來將數(shù)據導入到我們的 SensiML 項目中。

4. 最后,前往該項目的 GitHub發(fā)布頁面并下載ml-samd21-iot-sensiml-gestures-demo.zip包含本指南的數(shù)據集和預構建固件二進制文件的存檔。

刷入手勢分類器演示固件

我們現(xiàn)在設置為運行預構建的固件。使用以下步驟,使用最新 GitHub 版本中的固件 HEX 文件對您的設備進行編程

1. 通過 USB 將您的 SAMD21 評估套件插入您的 PC。SAMD21 應自動作為 USB 閃存驅動器出現(xiàn)。

2. 打開ml-samd21-iot-sensiml-gestures-demo.zip之前下載的存檔,找到與您的傳感器品牌對應的手勢分類器演示 hex 文件:

博世 IMU:TDK IMU:binaries/samd21-iot-sensiml-gestures-demo_bmi160.hex
binaries/samd21-iot-sensiml-gestures-demo_icm42688.hex

3. 將 hex 文件拖放到 SAMD21 USB 驅動器上以對設備進行編程。

手勢分類器固件概述

有關此項目中包含的演示固件的描述,包括操作、使用和基準測試,請參閱GitHub 存儲庫中的“README”

數(shù)據收集概述

在我們開始收集數(shù)據樣本之前,我們應該對數(shù)據收集過程的設計進行一些考慮;畢竟,我們收集的數(shù)據最終將決定我們可以通過機器學習模型實現(xiàn)的性能類型。

有關數(shù)據收集過程的深入指南,請參閱 SensiML 的使用 AutoML 構建智能物聯(lián)網設備白皮書的“傳感器數(shù)據收集”部分(第 29 頁)。

數(shù)據收集:傳感器配置

數(shù)據收集過程的第一步是為您的應用確定最佳傳感器配置;這包括傳感器的物理放置和安裝以及采樣率和靈敏度等信號處理參數(shù)。

很可能,您用于傳感器配置的許多設計參數(shù)是固定的(例如,由于固定板設計、共享傳感器使用等),但值得考慮的是應用程序設計是否最適合您的機器學習任務,以及是否某些設計參數(shù)應該改變。在設計的這一點上,您應該問的問題是:在給定傳感器數(shù)據輸入的情況下,我是否可以合理地期望一種算法來預測所需的輸出?數(shù)據探索(例如可視化)將有助于在這里產生良好的初始假設,以及對信號域的良好工作知識(即理解工作中的物理過程)。

以下是我們在傳感器配置階段可能會提出的一些具體問題,以及一些可能的答案:

Q : 傳感器采樣參數(shù)應該如何配置?(即采樣率、靈敏度/輸入范圍等)

選擇一種傳感器配置,以合理緊湊的表示形式捕獲感興趣的事件,并具有良好的信干比。

:傳感器應該如何放置?(即安裝和方向)

選擇一個可以最大限度地減少對干擾(例如來自發(fā)動機的振動)的敏感性的位置。

:傳感器應該如何固定?

選擇一種方法,以確保讀數(shù)隨時間和不同傳感器部署之間的一致性。

為了說明,以下是為該項目選擇的主要傳感器配置參數(shù)及其選擇背后的理由:

ParameterValue : 僅加速度計

選擇的手勢應該對設備旋轉基本不變

參數(shù)值:100 Hz 采樣率

所選手勢的頻率范圍通常 < 5 Hz(即 10 Hz 奈奎斯特率),但選擇 100 Hz 是為了在數(shù)據收集過程中具有靈活性

ParameterValue : 16 G 加速度計范圍

最不敏感的設置,因為我們對微動不感興趣

數(shù)據收集:收集協(xié)議

數(shù)據收集過程的下一步是將收集數(shù)據時使用的協(xié)議放在一起。

粗略地說,我們希望通過協(xié)議實現(xiàn)三件事:

1. 一種可重復的數(shù)據收集方法

可重復的方法確保數(shù)據收集過程以規(guī)定的方式執(zhí)行,測量之間的差異最小,并確保我們數(shù)據的完整性。

2. 采樣參數(shù)將確保我們有足夠數(shù)量的樣本用于開發(fā),以及足夠的多樣性(即覆蓋率)以使我們的最終模型能夠很好地泛化

一個好的經驗法則是,對于要分類的每一類事件,您至少需要數(shù)十個樣本(30 個是一個很好的起點);但是,這個數(shù)字可能會根據樣本之間的差異而增加。以手勢應用程序為例,如果您想檢測一個圓圈手勢,但希望您的模型不受圓圈手勢的大小或速度的影響,您將需要更多的樣本來覆蓋性能范圍。

選擇樣本量時要考慮的另一件事是,您總是會在樣本中捕獲噪聲——即意外的差異;希望有足夠的樣本,訓練算法將有足夠的信息來學習區(qū)分感興趣的信號和噪聲。

給智者的一句話:從小處做起!預計您的數(shù)據收集過程的開發(fā)將需要一些迭代;首先完善您的流程,然后開始擴大規(guī)模。

3.在收集過程中要捕獲的一組元數(shù)據變量,可用于解釋樣本之間的已知差異

元數(shù)據變量(或標簽)是你留下的面包屑,一旦它們加入到更大的樣本池中,你就可以追蹤它們;除其他外,這些標簽可用于探索數(shù)據中的子組(例如,由單個測試對象執(zhí)行的所有手勢)并跟蹤您以后可能發(fā)現(xiàn)的任何數(shù)據問題(例如硬件問題、異常樣本等)。

對于這個演示項目,我們創(chuàng)建了一個數(shù)據協(xié)議文檔,其中指定了應該如何執(zhí)行手勢,以及應該收集哪些元數(shù)據。為了說明,下面是限制測試對象如何執(zhí)行收集手勢的指令。斜體文本定義了我們明確控制的固定實驗參數(shù)。

  • 對象應該以一種他們覺得自然的方式流暢地做出手勢。
  • 對象應連續(xù)做手勢至少十秒鐘
  • 對象應該站立
  • 受試者應使用慣用手
  • 受試者應用拇指和食指握住板子,繩子朝下,如下圖所示
  • 受試者應執(zhí)行遵循指定軌跡描述的手勢(例如順時針輪)
?
poYBAGNkg2CAC_UKAAAvpUzLgOI912.jpg
圖 2:用于執(zhí)行手勢的拇指和食指抓握。
?

此外,為每個數(shù)據收集記錄了以下元數(shù)據值。

  • 拍攝日期
  • SAMD21測試板ID
  • 測試環(huán)境標識
  • 測試對象ID
  • (僅適用于空閑類數(shù)據)SAMD21 板的放置和方向

數(shù)據收集:后處理

最后,對所有數(shù)據樣本進行后處理以形成最終數(shù)據集。

  • 數(shù)據被精確地分成十秒的樣本
  • 樣本被格式化為具有以下命名約定的 CSV 文件:

----.csv

  • 樣品被分成幾份,80% 用于開發(fā),20% 用于測試
  • 對拆分進行分層,以便開發(fā)集和測試集的每個類別和每個主題 ID 的樣本比例相同。

數(shù)據收集:數(shù)據捕獲工具

對于本指南,我們將使用手勢演示中包含的預構建數(shù)據集,但要構建您自己的數(shù)據集,您可以使用 MPLAB X數(shù)據可視化器機器學習插件。這些插件可以串聯(lián)使用來捕獲樣本并將它們導出為 CSV 或 DCLI 文件(SensiML 的本機格式),這些文件可以輕松導入 SensiML 的數(shù)據捕獲實驗室。

為了將 ML 評估套件與 MPLAB Data Visualizer 一起使用,您需要使用 GitHub 上維護的數(shù)據記錄器固件。為方便起見,此項目中使用的傳感器配置的預構建二進制文件已打包在最新版本中ml-samd21-iot-sensiml-gestures-demo.zip包含的存檔中

博世 IMU:binaries/samd21-iot-data-visualizer_bmi160_100hz-axayzgxgygz-16g-2000dps.hexTDK IMU:binaries/samd21-iot-data-visualizer_icm42688_100hz-axayzgxgygz-16g-2000dps.hex

有關數(shù)據捕獲過程的更多信息,請參閱將ML 插件與 SensiML指南一起使用。

使用 Data Capture Lab 導入數(shù)據

讓我們繼續(xù)將數(shù)據導入新的 SensiML 項目。

1. 將包含手勢數(shù)據集的存檔提取ml-samd21-iot-sensiml-gestures-demo.zip到工作目錄中。

2. 打開 SensiML Data Capture Lab 工具并為本指南創(chuàng)建一個新項目。

3. 打開新創(chuàng)建的項目后,導航到文件菜單并單擊從 DCLI 導入…項,如下圖所示。

?
pYYBAGNkg2KAQGYBAAA2FDAchdo818.png
圖 3:從 DCLI 文件導入數(shù)據集。
?

4. 在出現(xiàn)的對話框中,導航到您之前提取ml-samd21-iot-sensiml-gestures-demo.zip存檔的文件夾,然后打開位于 的 DCLI 文件dataset/train/train.dcli。逐步完成生成的導入提示,將所有設置保留為默認設置,直到您到達Select a Device Plugin窗口。

5. 當您到達Select a Device Plugin對話框時,單擊SAMD21 ML Eval Kit項,如下圖所示,然后單擊Next

?
poYBAGNkg2WAMy0NAACJl3mnW54273.png
圖 4:選擇一個設備插件。
?

6、選擇設備插件后,會出現(xiàn)插件詳情頁面;單擊“下一步”前進到“傳感器屬性”頁面。在屬性頁面上,填寫與下圖所示配置匹配的字段(如果您使用的是 TDK IMU,則選擇 ICM 傳感器),然后單擊Next

?
poYBAGNkg2mAb4l3AABXZxlVLCk178.png
圖 5:手勢項目的傳感器配置。
?

7. 最后,在Save Sensor Configuration窗口中為傳感器配置命名。如下圖所示,我們簡單地選擇了名稱BMI160 。

?
pYYBAGNkg2uAfnL1AABAUiM8LtQ013.png
圖 6:保存?zhèn)鞲衅髋渲谩?/font>
?

8. 重復步驟三、四導入測試樣本(dataset/test/test.dcli);這是將用于驗證模型的數(shù)據。出現(xiàn)提示時,使用我們在上一步中創(chuàng)建的相同傳感器配置。

至此,我們的項目已經設置好我們需要的數(shù)據,我們可以進入模型開發(fā)階段。

?
pYYBAGNkg2-AfBWqAANSb_GlIlw432.png
圖 7:導入手勢數(shù)據集的項目。
?

模型開發(fā)

現(xiàn)在讓我們進入 Analytics Studio 以生成我們的分類器模型。

1. 在您的網絡瀏覽器中打開Analytics Studio并登錄。

2. 導航到主頁選項卡以查看您的項目并打開您在上一節(jié)中創(chuàng)建的項目,如下圖所示。

?
poYBAGNkg3GAcXEtAAAYJnj19uQ486.png
圖 8:打開您的新 SensiML 項目。
?

3. 導航到準備數(shù)據選項卡以創(chuàng)建將用于訓練機器學習模型的查詢。如下圖所示填寫字段;這些查詢參數(shù)將僅選擇訓練折疊中的樣本,并且僅使用加速度計軸。

SensiML Query確定將選擇我們數(shù)據集中的哪些數(shù)據進行訓練。我們可以使用它來排除樣本(例如我們的測試樣本)或排除數(shù)據軸(例如陀螺儀軸)。
?
poYBAGNkg3WAYnxJAAENK13Ozj471.jpeg
圖 9:在訓練模型時創(chuàng)建要使用的查詢。
?

4. 切換到構建模型選項卡開始開發(fā)機器學習模型。如下圖所示填寫字段。請注意,唯一需要更改默認設置的設置是查詢(在最后一步中創(chuàng)建)、優(yōu)化指標(f1-score)和窗口大小(200 個樣本)。

由于手勢數(shù)據集的類分布不平衡,此處選擇準確度優(yōu)化指標會使模型優(yōu)化偏向樣本較多的類;因此,我們選擇f1-score來提供更好的模型性能代表性度量。我們在這里選擇 200 的窗口大小(即 100 Hz IMU 采樣率時兩秒),因為這足以覆蓋至少一個周期我們感興趣的手勢。
pYYBAGNkg3iALTCNAAFBAY2sLh8268.png
圖 10:用于生成手勢分類器模型的管道設置。
?

5. 輸入管道設置后,單擊優(yōu)化按鈕。此步驟將使用 AutoML 技術為給定輸入數(shù)據的手勢分類任務自動選擇最佳特征和機器學習算法。此過程通常需要幾分鐘。

?有關 AutoML 配置參數(shù)的更多詳細信息,請參見AutoML 文檔頁面

6.構建模型優(yōu)化步驟完成后,導航到測試模型選項卡。

?
poYBAGNkg3yAf21iAAFjxX8Q7is08.jpeg
圖 11:驗證生成的分類器模型。
?

一個。選擇我們在上一步中創(chuàng)建的管道。

灣。選擇上一步生成的模型之一,通常,秩為0的模型是所有生成的候選模型中的最佳折衷。

C。選擇折疊列中的倒三角形圖標并選擇測試以過濾數(shù)據,以便僅選擇測試樣本。

d。單擊位于表最左列的省略號 (...),然后選擇全選以包括所有測試樣本。

e. 單擊計算摘要以生成測試樣本的混淆矩陣。這應該需要幾分鐘;完成后,您將看到如下圖所示的表格,匯總了分類結果。

?混淆矩陣繪制了真實標簽(行)與預測標簽(列)分類結果。最右邊的列顯示每個類的敏感度(或召回)分數(shù)(真陽性預測/總真陽性),最底部的行顯示精度分數(shù)(真陽性預測/總陽性預測)。
?
poYBAGNkg3-AZ_oOAABgN8zHgzE494.png
圖 12:測試樣本的分類結果。
?

7. 最后,導航到下載模型選項卡以部署您的模型。使用您在前面的步驟中創(chuàng)建的Pipeline ModelData Source填寫Knowledge Pack設置,并選擇Library輸出格式(參見圖 13 以供參考),然后單擊Download按鈕。

格式適用于所有 SensiML 訂閱層,將為生成的機器學習模型生成預編譯庫,以及定義用戶 API 的頭文件。
pYYBAGNkg4KAObtEAAFlm4hZIyM04.jpeg
圖 13:知識包部署設置。
?

您現(xiàn)在應該有一個用于 SAMD21 的編譯庫,其中包含您可以集成到您自己的項目中的機器學習模型。有關 Analytics Studio 的更多詳細信息,請訪問 SensiML 的文檔頁面。

知識包集成

讓我們使用我們的 SensiML 庫(即知識包)并將其集成到現(xiàn)有的 MPLAB X 項目中,使用手勢演示項目作為模板。

使用本指南隨附的 MPLAB X 項目作為您自己項目的起點。這將省去您自己進行硬件和項目配置的麻煩。

1. 從GitHub存儲庫下載手勢演示源代碼或使用 git clone https://github.com/MicrochipTech/ml-samd21-iot-sensiml-gestures-demo/克隆存儲庫。除了演示源代碼之外,該存儲庫還包含為使用 SensiML 知識包而預先配置的 MPLAB X 項目。

2. 將 SensiML 知識包的內容(上一節(jié)中下載的 ZIP 存檔)解壓縮到 MPLAB X 項目所在的同一根文件夾中,以便覆蓋現(xiàn)有的知識包文件夾。

3.導航到knowledgepack/knowledgepack_project解壓后的知識包中的文件夾,定位到app_config.h;將此文件移動到固件src目錄(與 .X 項目相同的根文件夾)以替換現(xiàn)有的app_config.h這將確保您的應用程序的傳感器配置與模型開發(fā)中使用的傳感器配置相匹配。

4.在 MPLAB X IDE 中打開項目。samd21-iot-sensiml-gestures-demo.X

5. 在 MPLAB X 中,打開Source Files下的 main.c 文件

6. 向下滾動到class_map定義變量的位置 - 請參閱下圖以供參考。修改字符串以匹配在 Analytics Studio的下載模型步驟中class_map顯示的類映射。請注意,“UNK”類(整數(shù) 0)由 SensiML 保留,因此此映射不會更改。

?
pYYBAGNkg4WAesTdAAIpDKUQmr8331.png
圖 14:類到標簽的映射。
?

7. 在主 while 循環(huán)內向下滾動一點,直到到達如下圖所示的部分,該部分以調用buffer_get_read_buffer. kb_run_model這是代碼的核心:它通過函數(shù)調用我們從 IMU 獲得的每個樣本的 SensiML 知識包,并kb_reset_model在成功進行推理時調用。

在此處修改 LED 代碼以反映您的類映射。?

kb_run_model函數(shù)是 SensiML SDK 的主要入口點;它在內部緩沖我們給它的樣本,并在它有足夠的數(shù)據時進行推斷。對于本指南中的項目,每 200 個樣本進行一次推斷 - 這對應于我們在 Analytics Studio 中模型開發(fā)的查詢步驟中定義的窗口大小參數(shù)。返回一個負整數(shù),直到它有足夠的數(shù)據來運行推理。kb_run_model
?
poYBAGNkg4iAFg2DAALYbzWPhTo631.png
圖 15:主循環(huán)代碼。
?

好的,你現(xiàn)在應該準備好編譯了。繼續(xù)并單擊工具欄中的Make and Program Device按鈕以編譯您的固件并將其刷新到 SAMD21 MCU。

最后的話

而已!您現(xiàn)在應該基本了解如何使用 SensiML 和 SAMD21 ML 評估套件開發(fā)手勢識別應用程序。

有關數(shù)據驅動設計過程的深入指南,請參閱 SensiML 的使用 AutoML 構建智能物聯(lián)網設備白皮書。

要了解有關 SensiML 工具包的更多信息,包括其他機器學習應用程序的教程,請轉到 SensiML入門頁面。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費