分支:
feature/gesture-recognition
狀態: 🚧 開發中
基於: v2.1 (b120a28)
實現基於 8 通道 EMG 訊號的手部動作識別系統,參考 Meta 的研究成果。
- 專案結構建立
- MediaPipe 手部追蹤整合
- EMG + 攝影機同步錄製
- 資料儲存與管理
- UI 整合(錄製按鈕)
- 訊號預處理管線
- 特徵提取模組
- LSTM/Transformer 模型
- 訓練腳本
- 模型評估工具
- 3D 渲染引擎
- 即時動畫更新
- 動作比對顯示
- UI 整合
# 基礎依賴
pip install -r requirements.txt
# 手勢識別額外依賴
pip install -r requirements_gesture.txt# test_imports.py
import cv2
import mediapipe as mp
import torch
import pyqtgraph.opengl as gl
print("✅ 所有依賴安裝成功!")
print(f"PyTorch 版本: {torch.__version__}")
print(f"CUDA 可用: {torch.cuda.is_available()}")handProject_1103/
├── emg_monitor/
│ ├── motion_recorder.py # 🆕 待實作
│ ├── neuromotor_decoder.py # 🆕 待實作
│ └── virtual_hand.py # 🆕 待實作
│
├── recordings/ # 訓練資料
│ ├── .gitkeep
│ ├── motion_20250103_143022.npz # 範例
│ └── motion_20250103_143022.mp4
│
├── models/ # 訓練模型
│ ├── .gitkeep
│ └── emg_decoder.pth # 範例
│
├── scripts/ # 🆕 待建立
│ ├── train_model.py # 訓練腳本
│ ├── evaluate_model.py # 評估工具
│ └── visualize_data.py # 資料視覺化
│
├── requirements_gesture.txt # ✅ 已建立
├── GESTURE_DEV.md # ✅ 本檔案
└── README.md # ✅ 已更新
目標: 建立訓練資料收集工具
任務清單:
-
實作
motion_recorder.py- MediaPipe 手部追蹤
- 時間戳同步
- 資料儲存格式
-
整合到
main_window.py- 新增錄製按鈕
- 錄製狀態顯示
- 檔案管理介面
-
測試與驗證
- 時間戳準確性
- 資料完整性
- 記憶體使用
預期產出:
- 能夠同步錄製 EMG + 影像 + 手部骨架
- 儲存為標準格式 (.npz + .mp4)
- 收集至少 100 組不同手勢的資料
目標: 訓練 EMG → 手部姿態解碼器
任務清單:
-
資料預處理
- 訊號濾波 (20-450 Hz)
- RMS 包絡提取
- 歸一化處理
-
模型架構
- LSTM 基礎版本
- Transformer 進階版本
- 損失函數設計
-
訓練管線
- 資料載入器
- 訓練迴圈
- 驗證與早停
- 模型儲存
預期產出:
- 訓練好的解碼器模型 (.pth)
- 訓練日誌與曲線
- 評估報告 (精度、延遲)
目標: 整合模型到即時系統
任務清單:
-
推理引擎
- 模型載入
- 滑動窗口管理
- 批次推理優化
-
虛擬手骨
- 3D 渲染引擎
- 骨架動畫
- 流暢度優化
-
UI 整合
- 顯示切換
- 效能監控
- 除錯工具
預期產出:
- 低延遲即時推理 (<50ms)
- 流暢的虛擬手骨顯示
- 完整的使用者介面
data = {
'timestamps': np.array([...]), # (N,) 時間戳 (秒)
'emg_data': np.array([...]), # (N, 8) EMG 訊號 (μV)
'landmarks': [ # (N, 21, 3) 手部關鍵點
np.array([[x, y, z], ...]), # MediaPipe 座標 (歸一化 0-1)
...
],
'metadata': {
'sample_rate': 200, # EMG 採樣率
'duration': 10.5, # 錄製時長 (秒)
'camera_fps': 30, # 攝影機幀率
'subject_id': 'user001', # 受試者 ID
'gesture_label': 'fist', # 手勢標籤
}
}recordings/
├── session_20250103/
│ ├── fist_001.npz # 握拳動作
│ ├── fist_002.npz
│ ├── open_001.npz # 張開手掌
│ ├── pinch_001.npz # 捏取動作
│ └── ...
└── session_20250104/
└── ...
- MediaPipe Hands: 手部關鍵點偵測
- LSTM/Transformer: 時序建模
- RMS 包絡: EMG 特徵提取
- 滑動窗口: 即時訊號處理
| 問題 | 狀態 | 解決方案 |
|---|---|---|
| 8 通道精度限制 | 專注基本手勢,避免複雜動作 | |
| 個體差異大 | 個人化訓練 + 線上適應 | |
| 即時性要求 | 📋 待實作 | 輕量化模型 + GPU 加速 |
- ✅ 創建
feature/gesture-recognition分支 - ✅ 更新 README 說明
- ✅ 建立專案結構
- ✅ 準備依賴清單
- 📋 下一步:實作
motion_recorder.py
- 保持分支獨立: 不影響 main 分支的穩定性
- 小步提交: 每個功能模組獨立提交
- 測試先行: 新功能必須有測試
- 文件同步: 更新對應的開發文檔
如有問題或建議,歡迎:
- 開 Issue 討論
- 提交 Pull Request
- 直接聯繫專案維護者
最後更新: 2025-11-03
維護者: akaiHuang