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