概述
MEMS-Studio是一套完整的桌面軟件解決方案,專(zhuān)為開(kāi)發(fā)嵌入式AI功能、評(píng)估嵌入式庫(kù)、分析數(shù)據(jù),以及為整個(gè)MEMS傳感器產(chǎn)品組合設(shè)計(jì)無(wú)代碼算法而設(shè)計(jì)。這款獨(dú)特的軟件解決方案提供了多功能的開(kāi)發(fā)環(huán)境,支持評(píng)估和編程所有MEMS傳感器,此外還推出了新一代解決方案,以擴(kuò)展Unico-GUI、Unicleo-GUI和AlgoBuilder等成熟應(yīng)用程序的功能。
最近在弄ST的課程,需要樣片的可以加群申請(qǐng):615061293 。
MEMS-Studio可簡(jiǎn)化在STM32微控制器上使用圖形界面實(shí)現(xiàn)概念驗(yàn)證的過(guò)程,無(wú)需編寫(xiě)代碼。此解決方案支持配置傳感器和嵌入式AI(機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)),可充分利用機(jī)器學(xué)習(xí)內(nèi)核 (MLC)、ISPU的神經(jīng)網(wǎng)絡(luò)以及有限狀態(tài)機(jī) (FSM)。它會(huì)重復(fù)使用嵌入式軟件庫(kù),將多種功能組合到一個(gè)項(xiàng)目中,并使用繪圖和顯示功能實(shí)時(shí)可視化數(shù)據(jù)。
MEMS-Studio提供以下用戶(hù)體驗(yàn):
● 針對(duì)MEMS產(chǎn)品組合中運(yùn)動(dòng)、環(huán)境和紅外傳感器進(jìn)行評(píng)估
● 配置和測(cè)試傳感器內(nèi)的各項(xiàng)功能,如有限狀態(tài)機(jī) (FSM)、機(jī)器學(xué)習(xí)內(nèi)核 (MLC) 和智能傳感器處理單元 (ISPU)
● 實(shí)時(shí)和離線(xiàn)數(shù)據(jù)分析
● 無(wú)代碼圖形化算法設(shè)計(jì)
視頻教學(xué)
[https://www.bilibili.com/video/BV1624VeAEAG/]
樣品申請(qǐng)
[https://www.wjx.top/vm/OhcKxJk.aspx#]
源碼下載
[https://download.csdn.net/download/qq_24312945/89843512]
硬件準(zhǔn)備
首先需要準(zhǔn)備一個(gè)開(kāi)發(fā)板,這里我準(zhǔn)備的是自己繪制的開(kāi)發(fā)板,需要的可以進(jìn)行申請(qǐng)。
主控為STM32H503CB,陀螺儀為L(zhǎng)SM6DSV16X,磁力計(jì)為L(zhǎng)IS2MDL。
選擇MEMS
使用 MEMS Studio 的 MLC(Machine Learning Core)進(jìn)行訓(xùn)練, "Sensor" 字段選擇要配置的傳感器 。
導(dǎo)入數(shù)據(jù)
點(diǎn)擊“Browse”選擇采集到的數(shù)據(jù),給該類(lèi)數(shù)據(jù)命名后下載。
將所有采集到的數(shù)據(jù)都導(dǎo)入進(jìn)去,下載成功如圖所示。
配置窗口長(zhǎng)度和量程
MLC ODR(輸出數(shù)據(jù)速率):已設(shè)置為 240Hz,這是 MLC 處理數(shù)據(jù)的速率。
時(shí)間窗口長(zhǎng)度(Window length):設(shè)置的窗口長(zhǎng)度為 60,表示 MLC 每 60個(gè)樣本計(jì)算一次統(tǒng)計(jì)特征。
加速度計(jì)(Accelerometer):
● 量程(Full Scale):設(shè)置為 ±2g,表示能夠測(cè)量的最大加速度為 ±2g。
● ODR(數(shù)據(jù)速率):設(shè)置為 480Hz,表示加速度計(jì)的采樣頻率為 480Hz。
陀螺儀(Gyroscope):
● 量程(Full Scale):設(shè)置為 ±125 dps,表示最大旋轉(zhuǎn)速度為 ±125 度/秒。
● ODR(數(shù)據(jù)速率):設(shè)置為 480Hz,表示陀螺儀的采樣頻率為 480Hz。
配置濾波器
● filter_1:應(yīng)用于 HP_Acc_XYZ,表示這是一個(gè) 高通濾波器(HP,High-Pass Filter),用于對(duì)加速度計(jì)的 X、Y、Z 軸的三維數(shù)據(jù)進(jìn)行濾波。
● HP_Acc_XYZ:此濾波器將過(guò)濾掉加速度數(shù)據(jù)中低頻成分,保留高頻部分。這可能是為了消除像重力這樣的低頻信號(hào)干擾,保留運(yùn)動(dòng)的快速變化部分。
● filter_2:應(yīng)用于 HP_Gyr_XYZ,這是一個(gè) 高通濾波器,用于對(duì)陀螺儀的 X、Y、Z 軸數(shù)據(jù)進(jìn)行濾波。
● HP_Gyr_XYZ:此濾波器將過(guò)濾掉陀螺儀數(shù)據(jù)中的低頻部分,保留高頻的旋轉(zhuǎn)變化信息,適合檢測(cè)快速旋轉(zhuǎn)或角速度的變化。
● filter_3:應(yīng)用于 HP_Acc_V2,也是一個(gè) 高通濾波器,用于處理加速度矢量平方值(即組合了 X、Y 和 Z 軸的加速度數(shù)據(jù))。
● HP_Acc_V2:此濾波器將對(duì)加速度矢量平方值的低頻信號(hào)進(jìn)行過(guò)濾,保留高頻部分,幫助識(shí)別運(yùn)動(dòng)的劇烈變化。
● filter_4:應(yīng)用于 HP_Gyr_V2,是一個(gè) 高通濾波器,用于處理陀螺儀矢量平方值(即組合了 X、Y 和 Z 軸的角速度數(shù)據(jù))。
● HP_Gyr_V2:此濾波器將對(duì)陀螺儀矢量平方值的低頻部分進(jìn)行過(guò)濾,保留高頻部分,幫助識(shí)別旋轉(zhuǎn)運(yùn)動(dòng)中的快速變化。
選擇特征數(shù)據(jù)
MLC(Machine Learning Core) 的 特征選擇(Features Selection) 區(qū)域可以為傳感器數(shù)據(jù)選擇要計(jì)算的統(tǒng)計(jì)特征,并將其作為機(jī)器學(xué)習(xí)的輸入。
MEAN:均值,表示在給定的時(shí)間窗口內(nèi)計(jì)算的傳感器數(shù)據(jù)的平均值。
VARIANCE:方差,表示數(shù)據(jù)的分散程度,反映數(shù)據(jù)在給定時(shí)間窗口內(nèi)的變化。
ENERGY(能量): 計(jì)算信號(hào)在給定時(shí)間窗口內(nèi)的總能量。它反映了信號(hào)強(qiáng)度,通常用于識(shí)別較強(qiáng)或較弱的活動(dòng)。
PEAK_TO_PEAK(峰峰值):峰峰值特征計(jì)算的是信號(hào)在給定時(shí)間窗口內(nèi)的最大值和最小值之間的差異。這個(gè)特征可以幫助檢測(cè)信號(hào)的最大振幅,是評(píng)估運(yùn)動(dòng)強(qiáng)度和突發(fā)變化的有力指標(biāo)。
設(shè)備樹(shù)生成
生成的設(shè)備樹(shù)文件為 arff 文件。
決策樹(shù)生成
點(diǎn)擊 "Generate Decision Tree" 按鈕以生成決策樹(shù)。這個(gè)按鈕基于之前通過(guò) ARFF 文件加載的數(shù)據(jù)和特征生成了一個(gè)分類(lèi)模型(決策樹(shù)),用于識(shí)別不同的動(dòng)作或狀態(tài)。
Kappa 統(tǒng)計(jì)量 是一種用于衡量分類(lèi)器在考慮偶然因素時(shí)的準(zhǔn)確性度量。這里顯示為 0.307479,雖然分類(lèi)準(zhǔn)確度高,但 Kappa 值可能表明結(jié)果受到數(shù)據(jù)分布或樣本量的影響。
● 0.81 - 1.00:幾乎完美的分類(lèi)一致性。
● 0.61 - 0.80:很好的分類(lèi)一致性。
● 0.41 - 0.60:中等分類(lèi)一致性。
● 0.21 - 0.40:較低的分類(lèi)一致性。
● 0.00 - 0.20:幾乎沒(méi)有一致性(接近隨機(jī)猜測(cè))。
查看分析信息。
F1_MEAN_on_ACC_X <= 0.0360312
| F1_MEAN_on_ACC_X <= -0.88916: other (65.0)
| F1_MEAN_on_ACC_X > -0.88916: Steady (52.0)
F1_MEAN_on_ACC_X > 0.0360312
| F7_ENERGY_on_GY_X <= 0.241577: Idle (62.0)
| F7_ENERGY_on_GY_X > 0.241577: Writing (68.0)
Number of Leaves : 4
Size of the tree : 7
class:
= > Idle, Writing, other, Steady,
features:
= > F1_MEAN_on_ACC_X, F2_MEAN_on_ACC_Y, F3_MEAN_on_ACC_Z, F4_MEAN_on_ACC_V2, F5_VAR_on_ACC_V2, F6_VAR_on_GY_V2, F7_ENERGY_on_GY_X, F8_ENERGY_on_GY_Y, F9_ENERGY_on_GY_Z, F10_ENERGY_on_GY_V2, F11_PeakToPeak_on_ACC_V2, F12_PeakToPeak_on_GY_V2,
Mean absolute error 1
Root mean squared error 1
======= Whole data training with Confidence Factor: 0.9 =========
===== Confusion Matrix =====
Idle Writing other Steady -- classified as
Idle 62 0 0 0
Writing 0 68 0 0
other 0 0 65 0
Steady 0 0 0 52
Total Number of Instances : 247
Correctly Classified Instances : 247
Incorrectly Classified Instances : 0
Kappa Statistic: 0.252373
Accuracy: 100%
Report : precision recall support
Idle 1 1 62
Writing 1 1 68
other 1 1 65
Steady 1 1 52
avg/total 1 1 247
根節(jié)點(diǎn)判斷條件:
● F1_MEAN_on_ACC_X <= 0.0360312:
○ 如果 X 軸加速度的均值小于或等于 0.0360312:
■ 如果 F1_MEAN_on_ACC_X <= -0.88916,則分類(lèi)為 other(65 個(gè)樣本)。
■ 如果 F1_MEAN_on_ACC_X > -0.88916,則分類(lèi)為 Steady(52 個(gè)樣本)。
○ 如果 X 軸加速度的均值大于 0.0360312:
■ 如果 F7_ENERGY_on_GY_X <= 0.241577,則分類(lèi)為 Idle(62 個(gè)樣本)。
■ 如果 F7_ENERGY_on_GY_X > 0.241577,則分類(lèi)為 Writing(68 個(gè)樣本)。
● 混淆矩陣 顯示模型在每一類(lèi)的分類(lèi)結(jié)果:
○ Idle:62 個(gè)樣本被正確分類(lèi)。
○ Writing:68 個(gè)樣本被正確分類(lèi)。
○ other:65 個(gè)樣本被正確分類(lèi)。
○ Steady:52 個(gè)樣本被正確分類(lèi)。
● Kappa Statistic:0.252373。盡管分類(lèi)準(zhǔn)確度為 100%,但 Kappa 值較低,表明不同類(lèi)別之間可能存在某些重疊或類(lèi)別分布不均衡。
該決策樹(shù)模型在當(dāng)前的小型數(shù)據(jù)集上表現(xiàn)良好,分類(lèi)準(zhǔn)確度為 100%,沒(méi)有任何錯(cuò)誤分類(lèi)的實(shí)例。然而,Kappa 統(tǒng)計(jì)量(0.252373) 表明類(lèi)別之間可能存在數(shù)據(jù)不平衡,導(dǎo)致模型雖然能夠準(zhǔn)確分類(lèi),但泛化能力可能較差。
參考程序
[https://github.com/STMicroelectronics/STMems_Machine_Learning_Core/tree/master/application_examples/lsm6dsv16x]
轉(zhuǎn)換UCF文件
類(lèi)輸出值可以根據(jù)自己的需求修改,然后點(diǎn)擊“Generate Config File”生成ucf文件。
將得到的UCF文件存放到LSM6DSV16X的程序中。
在初始化中添加MLC檢測(cè)功能。
for( uint32_t i=0; i< (sizeof(lsm6dsv16x_activity_recognition) /
sizeof(ucf_line_t) ); i++ )
{
lsm6dsv16x_write_reg(&dev_ctx, lsm6dsv16x_activity_recognition[i].address,
(uint8_t *)&lsm6dsv16x_activity_recognition[i].data, 1);
}
在主函數(shù)中獲取狀態(tài)值,查詢(xún)類(lèi)的輸出值,編譯程序。
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
lsm6dsv16x_mlc_handler();
if (event_catched != 0)
{
printf("event_catched=%d",event_catched);
// 握(0) 拍(1) 揮(2) 拍(3) 靜(4) 止(5)
switch(event_catched)
{
case 2:
event_catched = 0;
printf("閑置(Idle)rn");
break;
case 4:
event_catched = 0;
printf("書(shū)寫(xiě)(Writing)rn");
break;
case 8:
event_catched = 0;
printf("其他(other)rn");
break;
case 12:
event_catched = 0;
printf("靜止(Steady)rn");
break;
default:break;
}
event_catched = 0;
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
演示 靜止?fàn)顟B(tài)如下。
閑置狀態(tài)如下,手抓筆靜止。
書(shū)寫(xiě)狀態(tài)如下,移動(dòng)筆進(jìn)行識(shí)別判定。
其他如下,筆倒置。
審核編輯 黃宇
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19118瀏覽量
305102 -
mems
+關(guān)注
關(guān)注
129文章
3930瀏覽量
190612 -
AI
+關(guān)注
關(guān)注
87文章
30851瀏覽量
269028 -
MLC
+關(guān)注
關(guān)注
0文章
41瀏覽量
17304 -
智能筆
+關(guān)注
關(guān)注
1文章
15瀏覽量
5367
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論