昨天把一次完整的使用流程整理了一遍:
選擇動作
↓
確認拍攝位置
↓
取得起始姿勢
↓
開始動作辨識
↓
即時回饋
↓
完成訓練
↓
查看結果與紀錄
但如果從系統開發的角度來看,這些功能其實還可以再拆成不同的模組。
目前我把整體流程大概整理成:
攝影機畫面
↓
人體姿態估測
↓
關鍵點資料處理
↓
動作判斷
↓
即時回饋
↓
訓練紀錄
首先是最前面的攝影機。
系統會持續取得使用者的影像,這些影像就是後面所有分析的來源。
接著交給 MediaPipe Pose Landmarker,從畫面中取得人體的關鍵點。
例如:肩膀、髖部、膝蓋、腳踝等位置。
但 MediaPipe 的工作到這裡其實還沒有結束整個動作辨識。
它主要負責告訴我們:「人體關鍵點在哪裡?」
接下來還需要把這些資料交給我們自己的處理程式。
例如計算:
處理完這些資訊之後,才會進入真正的:
動作判斷模組。
以目前的蚌殼式來說,這個部分需要判斷:
現在是 READY、OPENING、OPEN 還是 RETURNING?
膝蓋是否達到設定的動作範圍?
骨盆是否出現明顯旋轉?
這一次到底算不算完整的一下?
如果偵測到需要注意的情況,結果就會再傳到:
即時回饋模組。
例如顯示:「請保持骨盆穩定。」
或者:「請稍微調整攝影機位置。」
而一整組動作完成之後,系統才會整理:
總完成次數、符合設定條件的次數、常見提醒等資訊,再存成訓練紀錄。
所以如果把目前的架構再簡化一次,就是:
Camera
↓
MediaPipe Pose Landmarker
↓
Landmark Processing
↓
Movement Analysis
↓
Feedback
↓
Training Record
我覺得把系統拆成這樣之後,也比較容易知道每一個部分到底負責什麼。
例如哪天發現人體關鍵點一直跳動,就先檢查姿態估測或資料處理。
如果關鍵點抓得很穩,但計次一直錯,就應該往動作判斷的邏輯找問題。
這樣比把所有功能全部寫在一起,更容易慢慢測試與修改。