資料介紹
描述
這是 TinyML 課程系列的最后一篇文章——在之前的文章中,我們已經討論了如何訓練和部署機器學習模型,用于音頻場景分類、異常檢測、語音識別和其他任務到 Wio Terminal,一個緊湊的生產就緒開發板來自 Seeed 工作室。
2022 年 3 月 29 日更新。我盡我所能定期更新我的文章,并根據您在 YouTube/Hackster 評論部分的反饋。如果您想表達對這些努力的支持和贊賞,請考慮給我買杯咖啡(或披薩):) 。
Wio Terminal 雖然由于存在多個內置傳感器和一個外殼而便于實驗,但對于某些應用(例如可穿戴設備)來說可能有點過于笨重。在最后一個項目中,我們甚至會使用 Tinier 并使用 Seeeduino XIAO 板——即原始 XIAO和更新的XIAO 2040 ,并將簡要提及即將發布的XIAO BLE 。
Specks-wise, 最初的 XIAO 在發布時可能是最小的 M0 開發板,它的尺寸與 ARM? Cortex?-M0+ 48MHz 微控制器 (SAMD21G18) 和 256KB 閃存、32KB SRAMOriginal XIAO 相得益彰——就像你可以看到它比拇指指甲大一點。

后來 RP2040 芯片問世并提供了更好的規格 Cortex M0+ 設計。兩者都非常有能力運行我們將用于該項目的微型神經網絡,但如果您有一些要求更高的應用程序,那么選擇 XIAO RP2040 而不是原來的 XIAO 確實有意義。

作為一名軟件工程師,我肯定和你們中的許多人一樣,會花很多時間在我椅子上發光的屏幕前。而在當天晚些時候,保持適當的姿勢變得困難。

如果有一種方法可以制造一種設備,該設備可以學習您的特定身體姿勢以正確和錯誤的姿勢,并在您過度無精打采或進入“蟒蛇姿勢”時警告您……等一下,有!
為機器學習模型提供數據的任務的最佳傳感器顯然是加速度計。XIAO 系列的所有板子都非常小,沒有配備加速度傳感器。雖然我們可以使用XIAO 擴展板進行開發和測試,但它消除了 XIAO 板具有的低占用空間優勢。如果您要創建自己的產品,更好的選擇是為芯片或 SoM 創建自己的定制 PCB 板。我請我們的硬件工程師為 XIAO 設計一個簡單的載板,其中包括 LIS3DH 加速度計、蜂鳴器和帶電源開關的電池連接器。

然后我們使用 Seeed studio Fusion 服務打印了一些 PCBA 樣本——為此,請訪問https://www.seeedstudio.com/fusion_pcb.html并上傳 Gerber 文件,其中包含 PCB 設計并為電路板選擇適當的參數,例如如層數、基材、最小鉆孔尺寸等。我們可以看到,一個簡單的 2 層板 10 塊加上運費約為 4.9 美元。

如果您想在沒有定制 PCB 的情況下重復實驗,您可以將Grove LIS3DH加速度計模塊連接到 XIAO 擴展板并開始收集數據。我為每個姿勢收集了 3 個數據樣本,每個 60 秒,設備附在我背上的 T 恤上。

對于每個樣本,我保持相同的姿勢,但包括一些手臂、頭部和軀干的運動來模擬正常活動。
我選擇了 5 秒的時間窗口和 1 秒的窗口偏移和展平處理塊,因為我們正在處理非常緩慢的移動數據。一個非常簡單的全連接網絡提供了良好的準確性。這是Edge Impulse 項目的公共版本的鏈接。

通過收集更多數據并確保可以識別正確和不正確的姿勢,可以通過衣服上的設備定位的一些變化來做出一些改進。由于該設備被認為是個人使用設備,因此無需推廣到不同人的姿勢,并且可以輕松地重新訓練。您可以在實時分類選項卡中檢查訓練后它檢測您的姿勢的能力。
在您對準確性感到滿意后,將生成的模型下載為 Arduino 庫并將其復制到您的 Arduino 草圖/庫文件夾中。您可以下載示例代碼,該代碼將收集 5 秒的樣本,執行推理并在檢測到其中一個不正確的姿勢時打開蜂鳴器。
void loop()
{
ei_printf("Sampling...\n");
// Allocate a buffer here for the values we'll read from the IMU
float buffer[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = { 0 };
for (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix += 3) {
// Determine the next tick (and then sleep later)
uint64_t next_tick = micros() + (EI_CLASSIFIER_INTERVAL_MS * 1000);
lis.getAcceleration(&buffer[ix], &buffer[ix+1], &buffer[ix + 2]);
buffer[ix + 0] *= CONVERT_G_TO_MS2;
buffer[ix + 1] *= CONVERT_G_TO_MS2;
buffer[ix + 2] *= CONVERT_G_TO_MS2;
delayMicroseconds(next_tick - micros());
}
// Turn the raw buffer in a signal which we can the classify
signal_t signal;
int err = numpy::signal_from_buffer(buffer, EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
if (err != 0) {
ei_printf("Failed to create signal from buffer (%d)\n", err);
return;
}
// Run the classifier
ei_impulse_result_t result = { 0 };
err = run_classifier(&signal, &result, debug_nn);
if (err != EI_IMPULSE_OK) {
ei_printf("ERR: Failed to run classifier (%d)\n", err);
return;
}
// print the predictions
ei_printf("Predictions ");
ei_printf("(DSP: %d ms., Classification: %d ms., Anomaly: %d ms.)",
result.timing.dsp, result.timing.classification, result.timing.anomaly);
ei_printf(": \n");
for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(" %s: %.5f\n", result.classification[ix].label, result.classification[ix].value);
}
#if EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf(" anomaly score: %.3f\n", result.anomaly);
#endif
if (result.classification[1].value > ALARM_THRESHOLD || result.classification[2].value > ALARM_THRESHOLD)
{
tone(BUZZER_PIN, 523, 250);
delay(250);
noTone(BUZZER_PIN);
delay(250);
tone(BUZZER_PIN, 523, 250);
delay(250);
noTone(BUZZER_PIN);
}
}
由于它是相對緩慢變化的數據,我們不需要快速的響應時間,正常的順序推理管道非常適合這個應用程序。
上面的一個步驟是使用最新的 XIAO BLE 并將設備連接到用戶的智能手機,這將允許更好的警報、統計等。

即將發布的 Seeeduino BLE 有兩個版本:BLE 和 BLE Sense。在 SBC 和服務器上執行了更大的 ML 模型之后,在最小的設備上修補機器學習對我來說確實是一次令人大開眼界的體驗。如果您想繼續學習該主題,請查看Coursera 和 Edge Impulse 提供的免費課程,以及Codecraft,這是一種圖形編程環境,允許創建 TinyML 應用程序并將其部署到 Wio Terminal。
- TinyML變得簡單:關鍵詞識別(KWS)
- TinyML變得簡單:圖像分類
- 使用TinyML開發私人教練
- 基于Arduino Nano的TinyML空中森林火災探測器 1次下載
- 通過Edge Impulse開始使用TinyML
- 帶有tinyML的肩部恢復設備
- 計算器labview實現的課程實驗報告 30次下載
- 機器人學校教材MZ07-CFD標準課程 1次下載
- 智能家電控制技術課程項目設計下載 3次下載
- 基于LSTM網絡的在線學習課程推薦模型 6次下載
- 西門子S7-300/400系統、維護與編程綜合課程 58次下載
- 開源課程行動倡議及科學導論綜述 6次下載
- 電力電子技術基礎之課程設計課件下載 35次下載
- 計量學基礎課程課件下載.ppt 24次下載
- 《大學物理學》課程經典習題7及答案 0次下載
- fpga學習需要具備哪些課程 2.3k次閱讀
- 目前在3A負載點轉換器中有可能實現更小尺寸 815次閱讀
- 【tinyML】使用EdgeImpulse讓您的Arduino可以辨識手勢! 5.9k次閱讀
- 如何使用TinyML在內存受限的設備上部署ML模型呢 1.9k次閱讀
- 如何在 MCU 上快速部署 TinyML 2.6k次閱讀
- 如何利用TinyML實現語音識別機器人車的設計 3.4k次閱讀
- 微型數據轉換器如何通過更小尺寸為您帶來更多價值 1.5k次閱讀
- 芯片制造向更小的目標前進 3k次閱讀
- 智能電視為什么開機變得越來越慢了 6.2k次閱讀
- 更小更智能的電機控制器推進HEV/EV市場 1.6k次閱讀
- Udacity公司將推出深度學習納米級基礎課程 1.2k次閱讀
- 降壓斬波電路課程設計匯總 5.1w次閱讀
- 物聯網應用技術應該要學習哪些課程 5.5w次閱讀
- DesignStart Cortex-M3軟件開發網上課程 6.3k次閱讀
- 微型光纜的發展趨勢:更小、更快、更強韌 2.8k次閱讀
下載排行
本周
- 1新一代網絡可視化(NPB 2.0)
- 3.40 MB | 1次下載 | 免費
- 2冷柜-電氣控制系統講解
- 13.68 MB | 1次下載 | 10 積分
- 3MDD品牌三極管MMBT3906數據手冊
- 2.33 MB | 次下載 | 免費
- 4MDD品牌三極管S9012數據手冊
- 2.62 MB | 次下載 | 免費
- 5LAT1218 如何選擇和設置外部晶體適配 BlueNRG-X
- 0.60 MB | 次下載 | 3 積分
- 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
- 0.89 MB | 次下載 | 3 積分
- 7收音環繞擴音機 AVR-1507手冊
- 2.50 MB | 次下載 | 免費
- 8MS1000TA 超聲波測量模擬前端芯片技術手冊
- 0.60 MB | 次下載 | 免費
本月
- 1愛華AIWA HS-J202維修手冊
- 3.34 MB | 37次下載 | 免費
- 2PC5502負載均流控制電路數據手冊
- 1.63 MB | 23次下載 | 免費
- 3NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 4UWB653Pro USB口測距通信定位模塊規格書
- 838.47 KB | 5次下載 | 免費
- 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
- 7100W準諧振反激式恒流電源電路圖資料
- 0.09 MB | 2次下載 | 1 積分
- 8FS8025B USB的PD和OC快充協議電壓誘騙控制器IC技術手冊
- 1.81 MB | 1次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191439次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論