資料介紹
描述
這是 TinyML 課程系列的最后一篇文章——在之前的文章中,我們已經(jīng)討論了如何訓練和部署機器學習模型,用于音頻場景分類、異常檢測、語音識別和其他任務到 Wio Terminal,一個緊湊的生產(chǎn)就緒開發(fā)板來自 Seeed 工作室。
2022 年 3 月 29 日更新。我盡我所能定期更新我的文章,并根據(jù)您在 YouTube/Hackster 評論部分的反饋。如果您想表達對這些努力的支持和贊賞,請考慮給我買杯咖啡(或披薩):) 。
Wio Terminal 雖然由于存在多個內(nèi)置傳感器和一個外殼而便于實驗,但對于某些應用(例如可穿戴設備)來說可能有點過于笨重。在最后一個項目中,我們甚至會使用 Tinier 并使用 Seeeduino XIAO 板——即原始 XIAO和更新的XIAO 2040 ,并將簡要提及即將發(fā)布的XIAO BLE 。
Specks-wise, 最初的 XIAO 在發(fā)布時可能是最小的 M0 開發(fā)板,它的尺寸與 ARM? Cortex?-M0+ 48MHz 微控制器 (SAMD21G18) 和 256KB 閃存、32KB SRAMOriginal XIAO 相得益彰——就像你可以看到它比拇指指甲大一點。
后來 RP2040 芯片問世并提供了更好的規(guī)格 Cortex M0+ 設計。兩者都非常有能力運行我們將用于該項目的微型神經(jīng)網(wǎng)絡,但如果您有一些要求更高的應用程序,那么選擇 XIAO RP2040 而不是原來的 XIAO 確實有意義。
作為一名軟件工程師,我肯定和你們中的許多人一樣,會花很多時間在我椅子上發(fā)光的屏幕前。而在當天晚些時候,保持適當?shù)淖藙葑兊美щy。
如果有一種方法可以制造一種設備,該設備可以學習您的特定身體姿勢以正確和錯誤的姿勢,并在您過度無精打采或進入“蟒蛇姿勢”時警告您……等一下,有!
為機器學習模型提供數(shù)據(jù)的任務的最佳傳感器顯然是加速度計。XIAO 系列的所有板子都非常小,沒有配備加速度傳感器。雖然我們可以使用XIAO 擴展板進行開發(fā)和測試,但它消除了 XIAO 板具有的低占用空間優(yōu)勢。如果您要創(chuàng)建自己的產(chǎn)品,更好的選擇是為芯片或 SoM 創(chuàng)建自己的定制 PCB 板。我請我們的硬件工程師為 XIAO 設計一個簡單的載板,其中包括 LIS3DH 加速度計、蜂鳴器和帶電源開關的電池連接器。
然后我們使用 Seeed studio Fusion 服務打印了一些 PCBA 樣本——為此,請訪問https://www.seeedstudio.com/fusion_pcb.html并上傳 Gerber 文件,其中包含 PCB 設計并為電路板選擇適當?shù)?a target='_blank' class='arckwlink_none'>參數(shù),例如如層數(shù)、基材、最小鉆孔尺寸等。我們可以看到,一個簡單的 2 層板 10 塊加上運費約為 4.9 美元。
如果您想在沒有定制 PCB 的情況下重復實驗,您可以將Grove LIS3DH加速度計模塊連接到 XIAO 擴展板并開始收集數(shù)據(jù)。我為每個姿勢收集了 3 個數(shù)據(jù)樣本,每個 60 秒,設備附在我背上的 T 恤上。
對于每個樣本,我保持相同的姿勢,但包括一些手臂、頭部和軀干的運動來模擬正?;顒?。
我選擇了 5 秒的時間窗口和 1 秒的窗口偏移和展平處理塊,因為我們正在處理非常緩慢的移動數(shù)據(jù)。一個非常簡單的全連接網(wǎng)絡提供了良好的準確性。這是Edge Impulse 項目的公共版本的鏈接。
通過收集更多數(shù)據(jù)并確保可以識別正確和不正確的姿勢,可以通過衣服上的設備定位的一些變化來做出一些改進。由于該設備被認為是個人使用設備,因此無需推廣到不同人的姿勢,并且可以輕松地重新訓練。您可以在實時分類選項卡中檢查訓練后它檢測您的姿勢的能力。
在您對準確性感到滿意后,將生成的模型下載為 Arduino 庫并將其復制到您的 Arduino 草圖/庫文件夾中。您可以下載示例代碼,該代碼將收集 5 秒的樣本,執(zhí)行推理并在檢測到其中一個不正確的姿勢時打開蜂鳴器。
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);
}
}
由于它是相對緩慢變化的數(shù)據(jù),我們不需要快速的響應時間,正常的順序推理管道非常適合這個應用程序。
上面的一個步驟是使用最新的 XIAO BLE 并將設備連接到用戶的智能手機,這將允許更好的警報、統(tǒng)計等。
即將發(fā)布的 Seeeduino BLE 有兩個版本:BLE 和 BLE Sense。在 SBC 和服務器上執(zhí)行了更大的 ML 模型之后,在最小的設備上修補機器學習對我來說確實是一次令人大開眼界的體驗。如果您想繼續(xù)學習該主題,請查看Coursera 和 Edge Impulse 提供的免費課程,以及Codecraft,這是一種圖形編程環(huán)境,允許創(chuàng)建 TinyML 應用程序并將其部署到 Wio Terminal。
- TinyML變得簡單:關鍵詞識別(KWS)
- TinyML變得簡單:圖像分類
- 使用TinyML開發(fā)私人教練
- 基于Arduino Nano的TinyML空中森林火災探測器 1次下載
- 帶有tinyML的肩部恢復設備
- 計算器labview實現(xiàn)的課程實驗報告 27次下載
- 機器人學校教材MZ07-CFD標準課程 1次下載
- 智能家電控制技術課程項目設計下載 2次下載
- 基于LSTM網(wǎng)絡的在線學習課程推薦模型 6次下載
- ABB機器人操作培訓課程 47次下載
- 西門子S7-300/400系統(tǒng)、維護與編程綜合課程 54次下載
- 開源課程行動倡議及科學導論綜述 6次下載
- 電力電子技術基礎之課程設計課件下載 34次下載
- 計量學基礎課程課件下載.ppt 24次下載
- 《大學物理學》課程經(jīng)典習題7及答案 0次下載
- fpga學習需要具備哪些課程 853次閱讀
- 目前在3A負載點轉換器中有可能實現(xiàn)更小尺寸 417次閱讀
- 【tinyML】使用EdgeImpulse讓您的Arduino可以辨識手勢! 4081次閱讀
- 如何使用TinyML在內(nèi)存受限的設備上部署ML模型呢 958次閱讀
- 如何在 MCU 上快速部署 TinyML 1689次閱讀
- 如何利用TinyML實現(xiàn)語音識別機器人車的設計 2110次閱讀
- 微型數(shù)據(jù)轉換器如何通過更小尺寸為您帶來更多價值 1230次閱讀
- 芯片制造向更小的目標前進 2727次閱讀
- 更小更智能的電機控制器推進HEV/EV市場 1105次閱讀
- 區(qū)塊鏈學習,五個基礎課程介紹 1.4w次閱讀
- Udacity公司將推出深度學習納米級基礎課程 962次閱讀
- 內(nèi)存管理課程5節(jié)課的總結說明 1.3w次閱讀
- 降壓斬波電路課程設計匯總 4.8w次閱讀
- DesignStart Cortex-M3軟件開發(fā)網(wǎng)上課程 5729次閱讀
- 微型光纜的發(fā)展趨勢:更小、更快、更強韌 2396次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 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開發(fā)指南
- 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數(shù)字電路基礎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次下載 | 免費
評論
查看更多