資料介紹
描述
在這個項目中,我使用Edge Impulse Studio創(chuàng)建了一個深度學(xué)習(xí)模型來檢測大象的活動。訓(xùn)練使用 3 軸加速度計和 3 軸陀螺儀數(shù)據(jù)。最終模型部署到 Arduino Nano 33 BLE Sense,并使用移動應(yīng)用程序通過 BLE 連接顯示推理結(jié)果。
數(shù)據(jù)采集
我找不到任何可在公共領(lǐng)域自由使用的大象活動/運動/方向數(shù)據(jù)。我使用了一個Goat Sheep Dataset來訓(xùn)練一個模型,該模型可以免費下載,并且可以與引用以下論文一起使用:
Jacob W. Kamminga、Helena C. Bisby、Duv V. Le、Nirvana Meratnia 和 Paul JM Havea。項圈標(biāo)簽上的通用在線動物活動識別。在2017 年 ACM 普適和普適計算國際聯(lián)合會議 (UbiComp/ISWC'17) 論文集上。2017年 9 月
有關(guān)數(shù)據(jù)集鏈接,請參閱上面的論文。
他們收集了這個數(shù)據(jù)集,其中包含來自四只山羊和兩只綿羊的多個傳感器數(shù)據(jù)。這些動物的體型、體重和年齡各不相同,但屬于同一個山羊亞科。他們在每只動物身上隨機(jī)放置不同方向的傳感器。傳感器總是放在脖子上。白天,項圈容易繞著動物的脖子旋轉(zhuǎn)。所有傳感器均以 200 個樣本/秒的速度進(jìn)行采樣。他們收集了以下運動傳感器:3 軸加速度計、3 軸高強度加速度計、3 軸陀螺儀、3 軸磁力計、溫度、氣壓。
我只使用了 3 軸加速度計和 3 軸陀螺儀數(shù)據(jù)。由于我計劃將模型部署到 Arduino Nano 33 BLE Sense(加速度計和陀螺儀的默認(rèn)采樣率為 119 Hz),因此我必須刪除交替行以將數(shù)據(jù)保持在 100 個樣本/秒。
白天觀察到的活動是:躺著、站立、放牧、打架、搖晃、抓撓、走路、小跑和跑步。
我只選擇了以下 5 項與大象相關(guān)的活動。
躺著:動物躺在地上。
站立: 動物靜止不動,偶爾移動頭部或非常緩慢地邁步。
放牧:動物正在吃新鮮的草、一堆干草或地上的樹枝。
行走:動物在行走。
奔跑:動物在奔跑。
數(shù)據(jù)樣本
與其他活動相比,跑步活動的數(shù)據(jù)非常少。它出現(xiàn)了訓(xùn)練數(shù)據(jù)集不平衡的問題。我將小跑(走得非??欤┗顒优c跑步相結(jié)合來克服這個問題。
我創(chuàng)建了一個 Jupyter Notebook 來清理、過濾和生成數(shù)據(jù)采集格式的 json 文件,以將數(shù)據(jù)上傳到 Edge Impulse Studio。
示例 Json 文件(文件:running.S2_605.json)
生成文件名以制作示例的標(biāo)簽,在本例中為運行.
{
"protected": {
"ver": "v1",
"alg": "HS256",
"iat": 1603881609.210776
},
"signature": "13b115654acabe82e12872097c66cbdaf46a3acce4c5eb863a0c50b171fa5a80",
"payload": {
"device_name": "" ,
"device_type": "ARDUINO_NANO33BLE",
"interval_ms": 10,
"sensors": [{
"name": "accX",
"units": "m/s2"
},
{
"name": "accY",
"units": "m/s2"
},
{
"name": "accZ",
"units": "m/s2"
},
{
"name": "gyrX",
"units": "d/s"
},
{
"name": "gyrY",
"units": "d/s"
},
{
"name": "gyrZ",
"units": "d/s"
}
],
"values": [
[
1.03669,
3.9241,
-4.20182,
-16.9512,
-4.87805,
-43.7195
],
[
0.567426,
4.97515,
-3.44286,
-14.878,
-10.7927,
-47.8659
],
[
0.292093,
5.95199,
-2.9329,
-16.2195,
-14.939,
-49.1463
],
[
0.141258,
6.84502,
-2.6575599999999997,
-17.8049,
-18.3537,
-45.0
],
[
0.23702600000000001,
7.62074,
-2.73418,
-17.2561,
-22.561,
-34.6341
],
[
0.5841850000000001,
8.22887,
-3.4811699999999997,
-13.1098,
-26.3415,
-20.7317
],
[
1.13006,
8.781930000000001,
-4.69264,
-3.04878,
-24.6341,
-7.195119999999999
],
[
5.18345,
6.75404,
-7.54413,
-99.2073,
26.2805,
-17.5
]
]
}
}
數(shù)據(jù)上傳
將數(shù)據(jù)上傳到 Edge Impulse 有多種方法,但我使用了 CLI,我覺得這很方便。但首先我們需要在 Edge Impulse Studio 中創(chuàng)建一個帳戶,并且需要復(fù)制 HMAC KEY,它可以在 Dashboard > Keys 選項卡中找到,如下所示。
Edge Impulse CLI 安裝
$ npm insall -g edge-impulse-cli
上傳到 Edge Impulse
將目錄更改為生成的 json 文件所在的路徑,然后執(zhí)行以下命令。命令行有一個參數(shù)--category split ,它會自動將數(shù)據(jù)拆分為訓(xùn)練和測試數(shù)據(jù)集。
$ edge-impulse-uploader --category split *.json
成功上傳數(shù)據(jù)后,我們可以在 Edge Impulse Studio 的 Data Acquisition 選項卡中看到它們,如下所示。
訓(xùn)練數(shù)據(jù)(4h 19m 34s):
測試數(shù)據(jù)(56m 8s):
數(shù)據(jù)是平衡的(80% 訓(xùn)練對 20% 測試),因此我們不需要任何操作,否則我們可以手動拆分?jǐn)?shù)據(jù)并可以移動到任一側(cè)。
沖動設(shè)計
在 Edge Impulse 工作室中,在開始訓(xùn)練之前,我們必須設(shè)計一個 Impulse,它是一組預(yù)處理塊和神經(jīng)網(wǎng)絡(luò)分類器。我設(shè)計了 Impulse 使用信號分析作為預(yù)處理塊,它從原始數(shù)據(jù)和深度神經(jīng)網(wǎng)絡(luò)分類器生成特征,如下所示。
特征生成
要生成特征,我們必須轉(zhuǎn)到 Spectral Features 選項卡,我們可以在那里配置許多可用選項。一開始我選擇了默認(rèn)配置,在每次訓(xùn)練迭代后,根據(jù)實現(xiàn)的模型精度,我必須返回此選項卡并重新配置選項并重新生成特征。下面是我最終模型的配置。我選擇了具有 9 Hz 截止頻率和 256 FFT 長度的低通濾波器,具有 6 個峰值和 0.2 個峰值閾值。
設(shè)置好上面的參數(shù)后,頁面會自動重定向到生成功能頁面,我們可以在其中啟動作業(yè)來完成任務(wù)。完成后,我們可以使用 Feature Explorer 通過鼠標(biāo)指針拖動圖像來查看不同 3D 方向的數(shù)據(jù)。下面是最終模型生成的特征圖的圖像。
神經(jīng)網(wǎng)絡(luò)分類器
現(xiàn)在我們需要在 NN Classifier 選項卡中創(chuàng)建一個神經(jīng)網(wǎng)絡(luò)分類器。我們可以使用默認(rèn)的可視模式添加多層深度神經(jīng)網(wǎng)絡(luò),也可以使用專家模式直接編寫代碼來創(chuàng)建 Keras 模型。我使用了專家模式,因為我想要創(chuàng)建的模型需要一些在可視模式下不可用的層,并且我還包含了一些自定義代碼來配置學(xué)習(xí)率并打印一些調(diào)試消息。下面是分類器頁面的截圖:
模型摘要
該模型有 1 個輸入層、12 個全連接密集隱藏層和 1 個輸出層。每個隱藏層都有 Activation、Dropout 和 BatchNormalization 層。以下是從 Edge Impulse 最終培訓(xùn)課程中摘錄的模型摘要。
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 64) 6592
_________________________________________________________________
batch_normalization (BatchNo (None, 64) 256
_________________________________________________________________
activation (Activation) (None, 64) 0
_________________________________________________________________
dropout (Dropout) (None, 64) 0
_________________________________________________________________
dense_1 (Dense) (None, 64) 4160
_________________________________________________________________
batch_normalization_1 (Batch (None, 64) 256
_________________________________________________________________
activation_1 (Activation) (None, 64) 0
_________________________________________________________________
dropout_1 (Dropout) (None, 64) 0
_________________________________________________________________
dense_2 (Dense) (None, 64) 4160
_________________________________________________________________
batch_normalization_2 (Batch (None, 64) 256
_________________________________________________________________
activation_2 (Activation) (None, 64) 0
_________________________________________________________________
dropout_2 (Dropout) (None, 64) 0
_________________________________________________________________
dense_3 (Dense) (None, 64) 4160
_________________________________________________________________
batch_normalization_3 (Batch (None, 64) 256
_________________________________________________________________
activation_3 (Activation) (None, 64) 0
_________________________________________________________________
dropout_3 (Dropout) (None, 64) 0
_________________________________________________________________
dense_4 (Dense) (None, 64) 4160
_________________________________________________________________
batch_normalization_4 (Batch (None, 64) 256
_________________________________________________________________
activation_4 (Activation) (None, 64) 0
_________________________________________________________________
dropout_4 (Dropout) (None, 64) 0
_________________________________________________________________
dense_5 (Dense) (None, 64) 4160
_________________________________________________________________
batch_normalization_5 (Batch (None, 64) 256
_________________________________________________________________
activation_5 (Activation) (None, 64) 0
_________________________________________________________________
dropout_5 (Dropout) (None, 64) 0
_________________________________________________________________
dense_6 (Dense) (None, 32) 2080
_________________________________________________________________
batch_normalization_6 (Batch (None, 32) 128
_________________________________________________________________
activation_6 (Activation) (None, 32) 0
_________________________________________________________________
dropout_6 (Dropout) (None, 32) 0
_________________________________________________________________
dense_7 (Dense) (None, 32) 1056
_________________________________________________________________
batch_normalization_7 (Batch (None, 32) 128
_________________________________________________________________
activation_7 (Activation) (None, 32) 0
_________________________________________________________________
dropout_7 (Dropout) (None, 32) 0
_________________________________________________________________
dense_8 (Dense) (None, 32) 1056
_________________________________________________________________
batch_normalization_8 (Batch (None, 32) 128
_________________________________________________________________
activation_8 (Activation) (None, 32) 0
_________________________________________________________________
dropout_8 (Dropout) (None, 32) 0
_________________________________________________________________
dense_9 (Dense) (None, 32) 1056
_________________________________________________________________
batch_normalization_9 (Batch (None, 32) 128
_________________________________________________________________
activation_9 (Activation) (None, 32) 0
_________________________________________________________________
dropout_9 (Dropout) (None, 32) 0
_________________________________________________________________
dense_10 (Dense) (None, 32) 1056
_________________________________________________________________
batch_normalization_10 (Batc (None, 32) 128
_________________________________________________________________
activation_10 (Activation) (None, 32) 0
_________________________________________________________________
dropout_10 (Dropout) (None, 32) 0
_________________________________________________________________
dense_11 (Dense) (None, 32) 1056
_________________________________________________________________
batch_normalization_11 (Batc (None, 32) 128
_________________________________________________________________
activation_11 (Activation) (None, 32) 0
_________________________________________________________________
dropout_11 (Dropout) (None, 32) 0
_________________________________________________________________
y_pred (Dense) (None, 5) 165
=================================================================
Total params: 37,221 Trainable params: 36,069 Non-trainable params: 1,152
現(xiàn)在我們可以點擊訓(xùn)練按鈕并等待它完成。
訓(xùn)練數(shù)據(jù)的驗證準(zhǔn)確性
我在訓(xùn)練驗證數(shù)據(jù)上獲得了95.2%的準(zhǔn)確率。
測試數(shù)據(jù)的驗證準(zhǔn)確性
我在測試數(shù)據(jù)上獲得了85.64%的準(zhǔn)確率,這是非常有希望的。
部署
我已將使用 Arduino 庫創(chuàng)建的模型部署到 Arduino Nano 33 BLE Sense。Edge Impulse Studio 創(chuàng)建 Arduino 庫包,可以下載并導(dǎo)入 Arduino IDE。我使用了加速度計(連續(xù))示例之一,并對其進(jìn)行了定制以讀取加速度計和陀螺儀數(shù)據(jù)。我使用 Flutter 開發(fā)了一個移動應(yīng)用程序,用于通過 BLE 連接連接 Arduino Nano 33 BLE Sense 并顯示推理結(jié)果。
結(jié)論
經(jīng)過多次迭代和參數(shù)調(diào)整,模型已經(jīng)達(dá)到了很高的準(zhǔn)確性。盡管訓(xùn)練數(shù)據(jù)取自 Goat/Sheep 數(shù)據(jù)集,但該模型是通用的,并且對于跟蹤大象的運動肯定有用。如果我們可以使用大象項圈收集更多數(shù)據(jù)并使用遷移學(xué)習(xí)重新訓(xùn)練模型,則模型可以實現(xiàn)更高的準(zhǔn)確度。所有代碼和說明都在 GitHub 存儲庫中提供,可以在最后的代碼部分找到。我在 Edge Impulse 的項目是Naveen/elephant_edge_v3。我要感謝 Edge Impulse 的人們,他們在 Edge Impulse 論壇上回答了我的問題并幫助解決了問題。
- 使用Edge Impulse關(guān)鍵字識別控制筆記本電腦
- 帶有M5Stack和Edge Impulse的手勢控制無人機(jī)
- 使用Edge Impulse和Nvidia Jetson的面罩檢測器
- 使用XIAO BLE Sense&Edge Impulse的寵物活動追蹤器
- 在MaaXBoard Mini上使用Edge Impulse進(jìn)行安全帽檢測
- 使用Edge Impulse在pico上進(jìn)行手勢識別
- 通過Edge Impulse開始使用TinyML
- 使用Edge Impulse的Covid患者健康評估設(shè)備
- 修補Edge Impulse為MCU創(chuàng)建圖像、音頻和運動分類模型
- 如何安裝和運行osxMotionAR活動識別庫 1次下載
- RF9812四頻帶EDGE+TD-SCDMA多模傳輸模塊的應(yīng)用和數(shù)據(jù)資料免費下載
- 基于TQM7M5050下的Quad-Band GSM/EDGE 5x3.5 PAM
- 基于TQM7M5013下的 Quad-Band Input Power Controlled EDGE PAM
- 基于達(dá)芬奇技術(shù)設(shè)計的日面活動圖像處理與識別系統(tǒng)詳細(xì)中文資料 0次下載
- IMPULSE 200(IGBT)逆變電焊機(jī)
- 如何使用NVIDIA DeepStream和Edge Impulse快速推進(jìn)計算機(jī)視覺部署 559次閱讀
- 基于XIAO的圖像分類處理項目 1118次閱讀
- 基于FPGA的IIR數(shù)字濾波器設(shè)計 1129次閱讀
- 基于Arduino的機(jī)器學(xué)習(xí)開發(fā) 1.7w次閱讀
- 如何在Ubuntu 22.04上安裝Microsoft Edge瀏覽器 1.1w次閱讀
- 陀螺儀在人體活動識別系統(tǒng)中的應(yīng)用 1960次閱讀
- 如何使用移動傳感器產(chǎn)生的原始數(shù)據(jù)來識別人類活動 1074次閱讀
- 如何制作一個健身運動手環(huán) 4992次閱讀
- Edge瀏覽器復(fù)制粘貼出錯的原因和方法 6886次閱讀
- Firefox瀏覽器市場份額下降,微軟Edge或?qū)⒃诒驹鲁紽irefox 2667次閱讀
- 在Windows 10上阻止Microsoft Edge Chromium自動安裝的方法 4954次閱讀
- 體育館人臉識別系統(tǒng)的應(yīng)用案例 2205次閱讀
- 屏下指紋識別技術(shù)方案及屏下指紋識別技術(shù)相關(guān)廠商匯總 1.1w次閱讀
- “共享開發(fā)板”活動上線! 4947次閱讀
- 手指靜脈識別技術(shù)分析及流程 1243次閱讀
下載排行
本周
- 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元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 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十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多