資料介紹
描述
在這個(gè)項(xiàng)目中,我使用Edge Impulse Studio創(chuàng)建了一個(gè)深度學(xué)習(xí)模型來檢測大象的活動。訓(xùn)練使用 3 軸加速度計(jì)和 3 軸陀螺儀數(shù)據(jù)。最終模型部署到 Arduino Nano 33 BLE Sense,并使用移動應(yīng)用程序通過 BLE 連接顯示推理結(jié)果。
數(shù)據(jù)采集
我找不到任何可在公共領(lǐng)域自由使用的大象活動/運(yùn)動/方向數(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)簽上的通用在線動物活動識別。在2017 年 ACM 普適和普適計(jì)算國際聯(lián)合會議 (UbiComp/ISWC'17) 論文集上。2017年 9 月
有關(guān)數(shù)據(jù)集鏈接,請參閱上面的論文。
他們收集了這個(gè)數(shù)據(jù)集,其中包含來自四只山羊和兩只綿羊的多個(gè)傳感器數(shù)據(jù)。這些動物的體型、體重和年齡各不相同,但屬于同一個(gè)山羊亞科。他們在每只動物身上隨機(jī)放置不同方向的傳感器。傳感器總是放在脖子上。白天,項(xiàng)圈容易繞著動物的脖子旋轉(zhuǎn)。所有傳感器均以 200 個(gè)樣本/秒的速度進(jìn)行采樣。他們收集了以下運(yùn)動傳感器: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è)樣本/秒。
白天觀察到的活動是:躺著、站立、放牧、打架、搖晃、抓撓、走路、小跑和跑步。
我只選擇了以下 5 項(xiàng)與大象相關(guān)的活動。
躺著:動物躺在地上。
站立: 動物靜止不動,偶爾移動頭部或非常緩慢地邁步。
放牧:動物正在吃新鮮的草、一堆干草或地上的樹枝。
行走:動物在行走。
奔跑:動物在奔跑。
數(shù)據(jù)樣本

與其他活動相比,跑步活動的數(shù)據(jù)非常少。它出現(xiàn)了訓(xùn)練數(shù)據(jù)集不平衡的問題。我將小跑(走得非常快)活動與跑步相結(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)卡中找到,如下所示。

Edge Impulse CLI 安裝
$ npm insall -g edge-impulse-cli
		上傳到 Edge Impulse
將目錄更改為生成的 json 文件所在的路徑,然后執(zhí)行以下命令。命令行有一個(gè)參數(shù)--category split ,它會自動將數(shù)據(jù)拆分為訓(xùn)練和測試數(shù)據(jù)集。
$ edge-impulse-uploader --category split *.json
		成功上傳數(shù)據(jù)后,我們可以在 Edge Impulse Studio 的 Data Acquisition 選項(xiàng)卡中看到它們,如下所示。
訓(xùn)練數(shù)據(jù)(4h 19m 34s):

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

數(shù)據(jù)是平衡的(80% 訓(xùn)練對 20% 測試),因此我們不需要任何操作,否則我們可以手動拆分?jǐn)?shù)據(jù)并可以移動到任一側(cè)。
沖動設(shè)計(jì)
在 Edge Impulse 工作室中,在開始訓(xùn)練之前,我們必須設(shè)計(jì)一個(gè) Impulse,它是一組預(yù)處理塊和神經(jīng)網(wǎng)絡(luò)分類器。我設(shè)計(jì)了 Impulse 使用信號分析作為預(yù)處理塊,它從原始數(shù)據(jù)和深度神經(jīng)網(wǎng)絡(luò)分類器生成特征,如下所示。

特征生成
要生成特征,我們必須轉(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è)峰值閾值。

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

神經(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)槲蚁胍獎?chuàng)建的模型需要一些在可視模式下不可用的層,并且我還包含了一些自定義代碼來配置學(xué)習(xí)率并打印一些調(diào)試消息。下面是分類器頁面的截圖:

模型摘要
該模型有 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)確率。

測試數(shù)據(jù)的驗(yàn)證準(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。我使用了加速度計(jì)(連續(xù))示例之一,并對其進(jìn)行了定制以讀取加速度計(jì)和陀螺儀數(shù)據(jù)。我使用 Flutter 開發(fā)了一個(gè)移動應(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ù)集,但該模型是通用的,并且對于跟蹤大象的運(yùn)動肯定有用。如果我們可以使用大象項(xiàng)圈收集更多數(shù)據(jù)并使用遷移學(xué)習(xí)重新訓(xùn)練模型,則模型可以實(shí)現(xiàn)更高的準(zhǔn)確度。所有代碼和說明都在 GitHub 存儲庫中提供,可以在最后的代碼部分找到。我在 Edge Impulse 的項(xiàng)目是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è)備
 - 修補(bǔ)Edge Impulse為MCU創(chuàng)建圖像、音頻和運(yùn)動分類模型
 - 如何安裝和運(yùn)行osxMotionAR活動識別庫 1次下載
 - RF9812四頻帶EDGE+TD-SCDMA多模傳輸模塊的應(yīng)用和數(shù)據(jù)資料免費(fèi)下載
 - 基于TQM7M5050下的Quad-Band GSM/EDGE 5x3.5 PAM
 - 基于TQM7M5013下的 Quad-Band Input Power Controlled EDGE PAM
 - 基于達(dá)芬奇技術(shù)設(shè)計(jì)的日面活動圖像處理與識別系統(tǒng)詳細(xì)中文資料 0次下載
 - IMPULSE 200(IGBT)逆變電焊機(jī)
 
- 利用OpenVINO部署GLM-Edge系列SLM模型 872次閱讀
 - Google AI Edge Torch的特性詳解 445次閱讀
 - 如何使用NVIDIA DeepStream和Edge Impulse快速推進(jìn)計(jì)算機(jī)視覺部署 781次閱讀
 - 基于XIAO的圖像分類處理項(xiàng)目 1428次閱讀
 - 基于Arduino的機(jī)器學(xué)習(xí)開發(fā) 1.9w次閱讀
 - 如何在Ubuntu 22.04上安裝Microsoft Edge瀏覽器 1.2w次閱讀
 - 陀螺儀在人體活動識別系統(tǒng)中的應(yīng)用 2285次閱讀
 - 如何使用移動傳感器產(chǎn)生的原始數(shù)據(jù)來識別人類活動 1230次閱讀
 - 如何制作一個(gè)健身運(yùn)動手環(huán) 5431次閱讀
 - Edge瀏覽器復(fù)制粘貼出錯(cuò)的原因和方法 7203次閱讀
 - Firefox瀏覽器市場份額下降,微軟Edge或?qū)⒃诒驹鲁紽irefox 2783次閱讀
 - 體育館人臉識別系統(tǒng)的應(yīng)用案例 2312次閱讀
 - 屏下指紋識別技術(shù)方案及屏下指紋識別技術(shù)相關(guān)廠商匯總 1.1w次閱讀
 - “共享開發(fā)板”活動上線! 5081次閱讀
 - 手指靜脈識別技術(shù)分析及流程 1329次閱讀
 
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
 - 1.06 MB | 532次下載 | 免費(fèi)
 - 2RK3399完整板原理圖(支持平板,盒子VR)
 - 3.28 MB | 339次下載 | 免費(fèi)
 - 3TC358743XBG評估板參考手冊
 - 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)用手冊
 - 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電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
 - 0.00 MB | 15349次下載 | 免費(fèi)
 - 6數(shù)字電路基礎(chǔ)pdf(下載)
 - 未知 | 13750次下載 | 免費(fèi)
 - 7電子制作實(shí)例集錦 下載
 - 未知 | 8113次下載 | 免費(fèi)
 - 8《LED驅(qū)動電路設(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é)會AVR單片機(jī)與C語言視頻教程 下載
 - 158M | 183279次下載 | 免費(fèi)
 - 8proe5.0野火版下載(中文版免費(fèi)下載)
 - 未知 | 138040次下載 | 免費(fèi)
 
	                電子發(fā)燒友App
	            
	        
	        
          
        
        
	                    
                        
                        
                        
                        
                        


創(chuàng)作
發(fā)文章
發(fā)帖  
提問  
發(fā)資料
發(fā)視頻
上傳資料賺積分
           
            
            
                
            
評論