資料介紹
描述
?
本教程將指導您完成使用 SensiML 構建手勢分類器并將其部署到 Microchip SAMD21 機器學習評估套件的過程。我們還將就您在設計數據收集過程時應考慮的因素以及您在開發自己的應用程序時可能遇到的常見問題的解決方案提供一些指導。
與本指南一起提供的是一個完全開發的手勢分類器項目,包括數據集、預訓練的機器學習模型和固件源代碼,可幫助您使用 SensiML 和 SAMD21 ML 評估套件快速啟動和運行您自己的項目。
在你開始之前
在我們開始之前,您需要按照以下步驟中的詳細說明安裝和設置所需的軟件。
1. 安裝 MPLAB X IDE 和 XC32 編譯器。這些是加載手勢識別項目和對 SAMD21 板進行編程所必需的。您可以使用 XC32 編譯器的默認免費許可證,因為我們在這里不需要任何專業功能。
2.如果您還沒有,請在 SensiML注冊一個免費的社區版帳戶。我們將使用它來處理我們的傳感器數據并生成手勢分類庫。
3. 從 SensiML下載頁面下載 SensiML Data Capture Lab 并安裝。我們將使用它來將數據導入到我們的 SensiML 項目中。
4. 最后,前往該項目的 GitHub發布頁面并下載ml-samd21-iot-sensiml-gestures-demo.zip
包含本指南的數據集和預構建固件二進制文件的存檔。
刷入手勢分類器演示固件
我們現在設置為運行預構建的固件。使用以下步驟,使用最新 GitHub 版本中的固件 HEX 文件對您的設備進行編程
1. 通過 USB 將您的 SAMD21 評估套件插入您的 PC。SAMD21 應自動作為 USB 閃存驅動器出現。
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” 。
數據收集概述
在我們開始收集數據樣本之前,我們應該對數據收集過程的設計進行一些考慮;畢竟,我們收集的數據最終將決定我們可以通過機器學習模型實現的性能類型。
有關數據收集過程的深入指南,請參閱 SensiML 的使用 AutoML 構建智能物聯網設備白皮書的“傳感器數據收集”部分(第 29 頁)。
數據收集:傳感器配置
數據收集過程的第一步是為您的應用確定最佳傳感器配置;這包括傳感器的物理放置和安裝以及采樣率和靈敏度等信號處理參數。
很可能,您用于傳感器配置的許多設計參數是固定的(例如,由于固定板設計、共享傳感器使用等),但值得考慮的是應用程序設計是否最適合您的機器學習任務,以及是否某些設計參數應該改變。在設計的這一點上,您應該問的問題是:在給定傳感器數據輸入的情況下,我是否可以合理地期望一種算法來預測所需的輸出?數據探索(例如可視化)將有助于在這里產生良好的初始假設,以及對信號域的良好工作知識(即理解工作中的物理過程)。
以下是我們在傳感器配置階段可能會提出的一些具體問題,以及一些可能的答案:
Q : 傳感器采樣參數應該如何配置?(即采樣率、靈敏度/輸入范圍等)
答:選擇一種傳感器配置,以合理緊湊的表示形式捕獲感興趣的事件,并具有良好的信干比。
問:傳感器應該如何放置?(即安裝和方向)
答:選擇一個可以最大限度地減少對干擾(例如來自發動機的振動)的敏感性的位置。
問:傳感器應該如何固定?
答:選擇一種方法,以確保讀數隨時間和不同傳感器部署之間的一致性。
為了說明,以下是為該項目選擇的主要傳感器配置參數及其選擇背后的理由:
ParameterValue : 僅加速度計
選擇的手勢應該對設備旋轉基本不變
參數值:100 Hz 采樣率
所選手勢的頻率范圍通常 < 5 Hz(即 10 Hz 奈奎斯特率),但選擇 100 Hz 是為了在數據收集過程中具有靈活性
ParameterValue : 16 G 加速度計范圍
最不敏感的設置,因為我們對微動不感興趣
數據收集:收集協議
數據收集過程的下一步是將收集數據時使用的協議放在一起。
粗略地說,我們希望通過協議實現三件事:
1. 一種可重復的數據收集方法
可重復的方法確保數據收集過程以規定的方式執行,測量之間的差異最小,并確保我們數據的完整性。
2. 采樣參數將確保我們有足夠數量的樣本用于開發,以及足夠的多樣性(即覆蓋率)以使我們的最終模型能夠很好地泛化
一個好的經驗法則是,對于要分類的每一類事件,您至少需要數十個樣本(30 個是一個很好的起點);但是,這個數字可能會根據樣本之間的差異而增加。以手勢應用程序為例,如果您想檢測一個圓圈手勢,但希望您的模型不受圓圈手勢的大小或速度的影響,您將需要更多的樣本來覆蓋性能范圍。
選擇樣本量時要考慮的另一件事是,您總是會在樣本中捕獲噪聲——即意外的差異;希望有足夠的樣本,訓練算法將有足夠的信息來學習區分感興趣的信號和噪聲。
給智者的一句話:從小處做起!預計您的數據收集過程的開發將需要一些迭代;首先完善您的流程,然后開始擴大規模。
3.在收集過程中要捕獲的一組元數據變量,可用于解釋樣本之間的已知差異
元數據變量(或標簽)是你留下的面包屑,一旦它們加入到更大的樣本池中,你就可以追蹤它們;除其他外,這些標簽可用于探索數據中的子組(例如,由單個測試對象執行的所有手勢)并跟蹤您以后可能發現的任何數據問題(例如硬件問題、異常樣本等)。
對于這個演示項目,我們創建了一個數據協議文檔,其中指定了應該如何執行手勢,以及應該收集哪些元數據。為了說明,下面是限制測試對象如何執行收集手勢的指令。斜體文本定義了我們明確控制的固定實驗參數。
- 對象應該以一種他們覺得自然的方式流暢地做出手勢。
- 對象應連續做手勢至少十秒鐘
- 對象應該站立
- 受試者應使用慣用手
- 受試者應用拇指和食指握住板子,繩子朝下,如下圖所示
- 受試者應執行遵循指定軌跡描述的手勢(例如順時針輪)
此外,為每個數據收集記錄了以下元數據值。
- 拍攝日期
- SAMD21測試板ID
- 測試環境標識
- 測試對象ID
- (僅適用于空閑類數據)SAMD21 板的放置和方向
數據收集:后處理
最后,對所有數據樣本進行后處理以形成最終數據集。
- 數據被精確地分成十秒的樣本
- 樣本被格式化為具有以下命名約定的 CSV 文件:
----.csv
- 樣品被分成幾份,80% 用于開發,20% 用于測試
- 對拆分進行分層,以便開發集和測試集的每個類別和每個主題 ID 的樣本比例相同。
數據收集:數據捕獲工具
對于本指南,我們將使用手勢演示中包含的預構建數據集,但要構建您自己的數據集,您可以使用 MPLAB X數據可視化器和機器學習插件。這些插件可以串聯使用來捕獲樣本并將它們導出為 CSV 或 DCLI 文件(SensiML 的本機格式),這些文件可以輕松導入 SensiML 的數據捕獲實驗室。
為了將 ML 評估套件與 MPLAB Data Visualizer 一起使用,您需要使用 GitHub 上維護的數據記錄器固件。為方便起見,此項目中使用的傳感器配置的預構建二進制文件已打包在最新版本中ml-samd21-iot-sensiml-gestures-demo.zip
包含的存檔中:
博世 IMU:binaries/samd21-iot-data-visualizer_bmi160_100hz-axayzgxgygz-16g-2000dps.hex
TDK IMU:binaries/samd21-iot-data-visualizer_icm42688_100hz-axayzgxgygz-16g-2000dps.hex
有關數據捕獲過程的更多信息,請參閱將ML 插件與 SensiML指南一起使用。
使用 Data Capture Lab 導入數據
讓我們繼續將數據導入新的 SensiML 項目。
1. 將包含手勢數據集的存檔提取ml-samd21-iot-sensiml-gestures-demo.zip
到工作目錄中。
2. 打開 SensiML Data Capture Lab 工具并為本指南創建一個新項目。
3. 打開新創建的項目后,導航到文件菜單并單擊從 DCLI 導入…項,如下圖所示。
4. 在出現的對話框中,導航到您之前提取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 。
6、選擇設備插件后,會出現插件詳情頁面;單擊“下一步”前進到“傳感器屬性”頁面。在屬性頁面上,填寫與下圖所示配置匹配的字段(如果您使用的是 TDK IMU,則選擇 ICM 傳感器),然后單擊Next 。
7. 最后,在Save Sensor Configuration窗口中為傳感器配置命名。如下圖所示,我們簡單地選擇了名稱BMI160 。
8. 重復步驟三、四導入測試樣本(dataset/test/test.dcli
);這是將用于驗證模型的數據。出現提示時,使用我們在上一步中創建的相同傳感器配置。
至此,我們的項目已經設置好我們需要的數據,我們可以進入模型開發階段。
模型開發
現在讓我們進入 Analytics Studio 以生成我們的分類器模型。
1. 在您的網絡瀏覽器中打開Analytics Studio并登錄。
2. 導航到主頁選項卡以查看您的項目并打開您在上一節中創建的項目,如下圖所示。
3. 導航到準備數據選項卡以創建將用于訓練機器學習模型的查詢。如下圖所示填寫字段;這些查詢參數將僅選擇訓練折疊中的樣本,并且僅使用加速度計軸。
SensiML Query確定將選擇我們數據集中的哪些數據進行訓練。我們可以使用它來排除樣本(例如我們的測試樣本)或排除數據軸(例如陀螺儀軸)。
4. 切換到構建模型選項卡開始開發機器學習模型。如下圖所示填寫字段。請注意,唯一需要更改默認設置的設置是查詢(在最后一步中創建)、優化指標(f1-score)和窗口大小(200 個樣本)。
由于手勢數據集的類分布不平衡,此處選擇準確度優化指標會使模型優化偏向樣本較多的類;因此,我們選擇f1-score來提供更好的模型性能代表性度量。我們在這里選擇 200 的窗口大小(即 100 Hz IMU 采樣率時兩秒),因為這足以覆蓋至少一個周期我們感興趣的手勢。
5. 輸入管道設置后,單擊優化按鈕。此步驟將使用 AutoML 技術為給定輸入數據的手勢分類任務自動選擇最佳特征和機器學習算法。此過程通常需要幾分鐘。
?有關 AutoML 配置參數的更多詳細信息,請參見AutoML 文檔頁面。
6.構建模型優化步驟完成后,導航到測試模型選項卡。
一個。選擇我們在上一步中創建的管道。
灣。選擇上一步生成的模型之一,通常,秩為0的模型是所有生成的候選模型中的最佳折衷。
C。選擇折疊列中的倒三角形圖標并選擇測試以過濾數據,以便僅選擇測試樣本。
d。單擊位于表最左列的省略號 (...),然后選擇全選以包括所有測試樣本。
e. 單擊計算摘要以生成測試樣本的混淆矩陣。這應該需要幾分鐘;完成后,您將看到如下圖所示的表格,匯總了分類結果。
?混淆矩陣繪制了真實標簽(行)與預測標簽(列)的分類結果。最右邊的列顯示每個類的敏感度(或召回)分數(真陽性預測/總真陽性),最底部的行顯示精度分數(真陽性預測/總陽性預測)。
7. 最后,導航到下載模型選項卡以部署您的模型。使用您在前面的步驟中創建的Pipeline 、Model和Data Source填寫Knowledge Pack設置,并選擇Library輸出格式(參見圖 13 以供參考),然后單擊Download按鈕。
庫格式適用于所有 SensiML 訂閱層,將為生成的機器學習模型生成預編譯庫,以及定義用戶 API 的頭文件。
您現在應該有一個用于 SAMD21 的編譯庫,其中包含您可以集成到您自己的項目中的機器學習模型。有關 Analytics Studio 的更多詳細信息,請訪問 SensiML 的文檔頁面。
知識包集成
讓我們使用我們的 SensiML 庫(即知識包)并將其集成到現有的 MPLAB X 項目中,使用手勢演示項目作為模板。
使用本指南隨附的 MPLAB X 項目作為您自己項目的起點。這將省去您自己進行硬件和項目配置的麻煩。
1. 從GitHub存儲庫下載手勢演示源代碼或使用 git clone https://github.com/MicrochipTech/ml-samd21-iot-sensiml-gestures-demo/克隆存儲庫。除了演示源代碼之外,該存儲庫還包含為使用 SensiML 知識包而預先配置的 MPLAB X 項目。
2. 將 SensiML 知識包的內容(上一節中下載的 ZIP 存檔)解壓縮到 MPLAB X 項目所在的同一根文件夾中,以便覆蓋現有的知識包文件夾。
3.導航到knowledgepack/knowledgepack_project
解壓后的知識包中的文件夾,定位到app_config.h
;將此文件移動到固件src
目錄(與 .X 項目相同的根文件夾)以替換現有的app_config.h
;這將確保您的應用程序的傳感器配置與模型開發中使用的傳感器配置相匹配。
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”類(整數 0)由 SensiML 保留,因此此映射不會更改。
7. 在主 while 循環內向下滾動一點,直到到達如下圖所示的部分,該部分以調用buffer_get_read_buffer
. kb_run_model
這是代碼的核心:它通過函數調用我們從 IMU 獲得的每個樣本的 SensiML 知識包,并kb_reset_model
在成功進行推理時調用。
在此處修改 LED 代碼以反映您的類映射。?
該kb_run_model
函數是 SensiML SDK 的主要入口點;它在內部緩沖我們給它的樣本,并在它有足夠的數據時進行推斷。對于本指南中的項目,每 200 個樣本進行一次推斷 - 這對應于我們在 Analytics Studio 中模型開發的查詢步驟中定義的窗口大小參數。將返回一個負整數,直到它有足夠的數據來運行推理。kb_run_model
好的,你現在應該準備好編譯了。繼續并單擊工具欄中的Make and Program Device按鈕以編譯您的固件并將其刷新到 SAMD21 MCU。
最后的話
而已!您現在應該基本了解如何使用 SensiML 和 SAMD21 ML 評估套件開發手勢識別應用程序。
有關數據驅動設計過程的深入指南,請參閱 SensiML 的使用 AutoML 構建智能物聯網設備白皮書。
要了解有關 SensiML 工具包的更多信息,包括其他機器學習應用程序的教程,請轉到 SensiML入門頁面。
- 使用Google Coral和Raspberry Pi進行ML鳥類識別
- 使用Edge Impulse在pico上進行手勢識別
- 基于SAMD21的手勢音量控制器 0次下載
- AD5940評估套件使用方法.ppt 21次下載
- EVAL-AD5940評估套件用戶指南 9次下載
- 基于Kinect傳感器的動態手勢識別方法 20次下載
- 基于DSSD網絡的靜態手勢實時識別方法 11次下載
- 光學手勢評估工具
- 改進的多尺度深度網絡手勢識別模型 8次下載
- 基于改進YOLOv的靜態手勢實時識別方法 9次下載
- 基于自適應多分類器融合的手勢識別方法 10次下載
- 手勢識別,計算機是怎么實現的呢?資料下載
- 手勢識別系統的程序和資料說明 12次下載
- 如何使用光流計算和DTW算法進行動態手勢識別研究與實現論文 33次下載
- 基于加鎖機制的靜態手勢識別運動中的手勢 0次下載
- 基于XIAO SAMD21開發板的多功能筆筒設計方案 325次閱讀
- 基于XIAO SAMD21開發板的數字鍵盤制作方案 380次閱讀
- 如何在RZ/V2L評估板套件上使用AI SDK 998次閱讀
- 通過紅外對管進行手勢識別控制的LED燈設計 3978次閱讀
- 智慧病房手勢識別解決方案 2205次閱讀
- Arm?ML處理器 嵌入式評估工具包介紹 8193次閱讀
- 基于AM64x處理器的評估套件SK-AM64 2407次閱讀
- ISL28022數字功率監視器評估套件及相關基礎知識 3192次閱讀
- 基于視覺的手勢識別系統的設計與研究 4584次閱讀
- 微雪電子雙模藍牙串口評估套件介紹 1511次閱讀
- firefly百度人臉識別開發套件介紹 2333次閱讀
- 三個維度來詳細介紹手勢識別在汽車行業的應用現狀 1.8w次閱讀
- Zynq UltraScale+ MPSoC ZCU102評估套件解決方案 8864次閱讀
- 基于電場感應原理的3D手勢識別技術,你會玩嗎? 5570次閱讀
- 歐姆龍開發出可識別手部動作的“手勢識別技術” 2031次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多