前往
大廳
主題

基於 Mediapipe 骨架及 LSTM 模型之跌倒檢測

老爸爸 | 2023-03-23 07:23:46 | 巴幣 1000 | 人氣 1103

  1. 將數據集的影片分割為連續圖像序列。
  2. 將圖片序列使用 Mediapipe 取出骨架,將得到 33 個人體關節點 (x, y)。
  3. 數據的預處理,如:最小最大值正規化、相對位置正規化、線性插值 + 相對位置正規化。
  4. 將數據集分為測試集和訓練集,輸入到模型中訓練,完成模型訓練後,就能進行分類的測試。

數據集分類


將數據集分為非跌倒事件及跌倒事件,並且每 100 筆資料分為一組,做時間序列。

數據集 非跌倒事件 (組) 跌倒事件 (組)
UR Fall Detection Dataset 320 320
Fall Detection Dataset 480 480
Mix Dataset 800 800




骨架取得


使用 UR Fall Detection Dataset 以及 Fall Detection Dataset 兩個數據集進行訓練。

1. 將兩個數據集的影像尺寸統一調整為 640 * 480。


2. 透過 Mediapipe 取得骨架。

使用 Mediapipe 的 Pose 模型可以標記出身體 33 個關節點的位置。


保留所需特徵點。


數據預處理


1. 資料增

確保訓練時不會產生過度擬合,將圖像進行旋轉,創造出更多的圖像來讓機器學習,彌補資料量的不足。

2. 位移人體骨架

將人體骨架將移動到圖像中央,去除了原始數據中,人體位移過程這個特徵,像是左走到右或是從遠方走到近,將人體骨架固定在相同位置,做出連續動作讓模型更容易學習。


3. 線性插值


線性插值前的分佈圖

線性插值後的分佈圖

模型訓練


設備資訊


GPU NVIDIA A100
CPU Intel Xeon


模型結構



最佳模型參數

此最佳為面向於專題當中的最佳參數,而非訓練時的最佳參數。

混合數據集數量 1600
訓練數據集數量 80% (1280 組)
測試數據集數量 20% (320 組)
數據集處理 相對位置正規化 + 線性插值
學習率 0.001
批次大小 1280 (根據數據集數量決定)
Epochs 500
輸入神經元數量 26
隱藏神經元數量 512
輸出神經元數量 2
激勵函數 Tanh
最佳化算法 Adam
損失函數 Cross Entropy

模型測試


訓練結果



評估 LSTM 模型


Test Loss 0.10224159806966782
Test Accuracy 0.9780625104904175

預測結果


Correct predictions 31298
Incorrect predictions 702

混淆矩陣



模型實作


送禮物贊助創作者 !
0
留言

創作回應

吃那麼少生病了嗎?
想問一下請問您是將跌倒連續動作標記還是一偵一偵標記呢
2023-09-10 15:06:27
老爸爸
每幀都標記當下的狀態,但訓練的時候以100幀為一組事件做訓練
2023-09-10 15:13:16
PP
請問您是以圖片做訓練,還是圖片中的座標呢~
2024-01-20 16:43:37
老爸爸
座標
2024-01-20 16:44:52
PP
請問可以跟你要程式碼嗎?因為學校作業需要作與這相關的實作,自己嘗試許多方式還是判斷錯誤
2024-01-20 17:14:19
老爸爸
哪邊遇到問題?
2024-01-20 19:48:16

更多創作