電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用Edge Impulse識(shí)別大象活動(dòng)

使用Edge Impulse識(shí)別大象活動(dòng)

2022-11-02 | zip | 0.08 MB | 次下載 | 免費(fèi)

資料介紹

描述

在這個(gè)項(xiàng)目中,我使用Edge Impulse Studio創(chuàng)建了一個(gè)深度學(xué)習(xí)模型檢測(cè)大象的活動(dòng)。訓(xùn)練使用 3 軸加速度計(jì)和 3 軸陀螺儀數(shù)據(jù)。最終模型部署到 Arduino Nano 33 BLE Sense,并使用移動(dòng)應(yīng)用程序通過 BLE 連接顯示推理結(jié)果。

數(shù)據(jù)采集

我找不到任何可在公共領(lǐng)域自由使用的大象活動(dòng)/運(yùn)動(dòng)/方向數(shù)據(jù)。我使用了一個(gè)Goat Sheep Dataset來訓(xùn)練一個(gè)模型,該模型可以免費(fèi)下載,并且可以與引用以下論文一起使用:

Jacob W. Kamminga、Helena C. Bisby、Duv V. Le、Nirvana Meratnia 和 Paul JM Havea。項(xiàng)圈標(biāo)簽上的通用在線動(dòng)物活動(dòng)識(shí)別。2017 年 ACM 普適和普適計(jì)算國際聯(lián)合會(huì)議 (UbiComp/ISWC'17) 論文集上。2017年 9 月

有關(guān)數(shù)據(jù)集鏈接,請(qǐng)參閱上面的論文。

他們收集了這個(gè)數(shù)據(jù)集,其中包含來自四只山羊和兩只綿羊的多個(gè)傳感器數(shù)據(jù)。這些動(dòng)物的體型、體重和年齡各不相同,但屬于同一個(gè)山羊亞科。他們?cè)诿恐粍?dòng)物身上隨機(jī)放置不同方向的傳感器。傳感器總是放在脖子上。白天,項(xiàng)圈容易繞著動(dòng)物的脖子旋轉(zhuǎn)。所有傳感器均以 200 個(gè)樣本/秒的速度進(jìn)行采樣。他們收集了以下運(yùn)動(dòng)傳感器:3 軸加速度計(jì)、3 軸高強(qiáng)度加速度計(jì)、3 軸陀螺儀、3 軸磁力計(jì)、溫度、氣壓。

我只使用了 3 軸加速度計(jì)和 3 軸陀螺儀數(shù)據(jù)。由于我計(jì)劃將模型部署到 Arduino Nano 33 BLE Sense(加速度計(jì)和陀螺儀的默認(rèn)采樣率為 119 Hz),因此我必須刪除交替行以將數(shù)據(jù)保持在 100 個(gè)樣本/秒。

白天觀察到的活動(dòng)是:躺著、站立、放牧、打架、搖晃、抓撓、走路、小跑和跑步。

我只選擇了以下 5 項(xiàng)與大象相關(guān)的活動(dòng)。

躺著:動(dòng)物躺在地上。

站立: 動(dòng)物靜止不動(dòng),偶爾移動(dòng)頭部或非常緩慢地邁步。

放牧:動(dòng)物正在吃新鮮的草、一堆干草或地上的樹枝。

行走:動(dòng)物在行走。

奔跑:動(dòng)物在奔跑。

數(shù)據(jù)樣本

pYYBAGNh0K2AUjP3AAHSM5_YNqM300.png
?

與其他活動(dòng)相比,跑步活動(dòng)的數(shù)據(jù)非常少。它出現(xiàn)了訓(xùn)練數(shù)據(jù)集不平衡的問題。我將小跑(走得非??欤┗顒?dòng)與跑步相結(jié)合來克服這個(gè)問題。

我創(chuàng)建了一個(gè) Jupyter Notebook 來清理、過濾和生成數(shù)據(jù)采集格式的 json 文件,以將數(shù)據(jù)上傳到 Edge Impulse Studio。

示例 Json 文件(文件:running.S2_605.json)

生成文件名以制作示例的標(biāo)簽,在本例中為運(yùn)行.

{
	"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)建一個(gè)帳戶,并且需要復(fù)制 HMAC KEY,它可以在 Dashboard > Keys 選項(xiàng)卡中找到,如下所示。

poYBAGNh0LCAIQjXAAFeWlOf6Ro149.png
?

Edge Impulse CLI 安裝

$ npm insall -g edge-impulse-cli

上傳到 Edge Impulse

將目錄更改為生成的 json 文件所在的路徑,然后執(zhí)行以下命令。命令行有一個(gè)參數(shù)--category split ,它會(huì)自動(dòng)將數(shù)據(jù)拆分為訓(xùn)練和測(cè)試數(shù)據(jù)集。

$ edge-impulse-uploader --category split *.json

成功上傳數(shù)據(jù)后,我們可以在 Edge Impulse Studio 的 Data Acquisition 選項(xiàng)卡中看到它們,如下所示。

訓(xùn)練數(shù)據(jù)(4h 19m 34s):

pYYBAGNh0LSARtIYAAFZqqkD9H0291.png
?

測(cè)試數(shù)據(jù)(56m 8s):

poYBAGNh0LeAfrJEAAF_pPj_f3w834.png
?

數(shù)據(jù)是平衡的(80% 訓(xùn)練對(duì) 20% 測(cè)試),因此我們不需要任何操作,否則我們可以手動(dòng)拆分?jǐn)?shù)據(jù)并可以移動(dòng)到任一側(cè)。

沖動(dòng)設(shè)計(jì)

在 Edge Impulse 工作室中,在開始訓(xùn)練之前,我們必須設(shè)計(jì)一個(gè) Impulse,它是一組預(yù)處理塊和神經(jīng)網(wǎng)絡(luò)分類器。我設(shè)計(jì)了 Impulse 使用信號(hào)分析作為預(yù)處理塊,它從原始數(shù)據(jù)和深度神經(jīng)網(wǎng)絡(luò)分類器生成特征,如下所示。

pYYBAGNh0LuAd3NMAAJe3Po52LA063.png
?

特征生成

要生成特征,我們必須轉(zhuǎn)到 Spectral Features 選項(xiàng)卡,我們可以在那里配置許多可用選項(xiàng)。一開始我選擇了默認(rèn)配置,在每次訓(xùn)練迭代后,根據(jù)實(shí)現(xiàn)的模型精度,我必須返回此選項(xiàng)卡并重新配置選項(xiàng)并重新生成特征。下面是我最終模型的配置。我選擇了具有 9 Hz 截止頻率和 256 FFT 長度的低通濾波器,具有 6 個(gè)峰值和 0.2 個(gè)峰值閾值。

poYBAGNh0L2AW4hQAAHjrT1FLoI058.png
?

設(shè)置好上面的參數(shù)后,頁面會(huì)自動(dòng)重定向到生成功能頁面,我們可以在其中啟動(dòng)作業(yè)來完成任務(wù)。完成后,我們可以使用 Feature Explorer 通過鼠標(biāo)指針拖動(dòng)圖像來查看不同 3D 方向的數(shù)據(jù)。下面是最終模型生成的特征圖的圖像。

pYYBAGNh0MCAC1X9AAFa5ry5ACA416.png
?

神經(jīng)網(wǎng)絡(luò)分類器

現(xiàn)在我們需要在 NN Classifier 選項(xiàng)卡中創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò)分類器。我們可以使用默認(rèn)的可視模式添加多層深度神經(jīng)網(wǎng)絡(luò),也可以使用專家模式直接編寫代碼來創(chuàng)建 Keras 模型。我使用了專家模式,因?yàn)槲蚁胍獎(jiǎng)?chuàng)建的模型需要一些在可視模式下不可用的層,并且我還包含了一些自定義代碼來配置學(xué)習(xí)率并打印一些調(diào)試消息。下面是分類器頁面的截圖:

poYBAGNh0MOAVNvTAAGGnYdrJk8888.png
?

模型摘要

該模型有 1 個(gè)輸入層、12 個(gè)全連接密集隱藏層和 1 個(gè)輸出層。每個(gè)隱藏層都有 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)在我們可以點(diǎn)擊訓(xùn)練按鈕并等待它完成。

訓(xùn)練數(shù)據(jù)的驗(yàn)證準(zhǔn)確性

在訓(xùn)練驗(yàn)證數(shù)據(jù)上獲得了95.2%的準(zhǔn)確率。

poYBAGNh0MaAPXzuAAENO-VjI_I496.png
?

測(cè)試數(shù)據(jù)的驗(yàn)證準(zhǔn)確性

我在測(cè)試數(shù)據(jù)上獲得了85.64%的準(zhǔn)確率,這是非常有希望的。

pYYBAGNh0MqATAWMAAGyOGKv5a4220.png
?

部署

我已將使用 Arduino 庫創(chuàng)建的模型部署到 Arduino Nano 33 BLE Sense。Edge Impulse Studio 創(chuàng)建 Arduino 庫包,可以下載并導(dǎo)入 Arduino IDE。我使用了加速度計(jì)(連續(xù))示例之一,并對(duì)其進(jìn)行了定制以讀取加速度計(jì)和陀螺儀數(shù)據(jù)。我使用 Flutter 開發(fā)了一個(gè)移動(dòng)應(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ù)集,但該模型是通用的,并且對(duì)于跟蹤大象的運(yùn)動(dòng)肯定有用。如果我們可以使用大象項(xiàng)圈收集更多數(shù)據(jù)并使用遷移學(xué)習(xí)重新訓(xùn)練模型,則模型可以實(shí)現(xiàn)更高的準(zhǔn)確度。所有代碼和說明都在 GitHub 存儲(chǔ)庫中提供,可以在最后的代碼部分找到。我在 Edge Impulse 的項(xiàng)目是Naveen/elephant_edge_v3。我要感謝 Edge Impulse 的人們,他們在 Edge Impulse 論壇上回答了我的問題并幫助解決了問題。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)