AmmarkoV/SAM3DBody-cpp

Real-time 3D full-body reconstruction from a single camera, Multiperson BVH output, Pure C++ runtime, ONNX + ggml, 70-joint skeleton with hands.

解決的問題

本專案提供了一種高性能的獨立 C++ 實作,用於從單張 BGR 圖像或影片中重建 3D 人體姿勢與網格。它消除了執行時對 Python 依賴的需求,使其適用於在生產環境或嵌入式系統中進行高效部署。

工作原理

流水線透過以下幾個階段處理原始圖像:

  1. Detection: YOLO 偵測人物邊界框。
  2. Feature Extraction: DINOv3-ViT-H 主幹網路從偵測到的裁剪區域生成空間特徵圖。
  3. Pose Decoding: Transformer 解碼器將特徵壓縮為姿勢 Token。
  4. Parameter Regression: 小型 FFN 頭(透過 ggml 執行)將 Token 解碼為 519 個姿勢參數(包括身體、手部和面部表情)以及相機平移。
  5. Mesh Generation: 線性混合蒙皮 (LBS) 將這些參數轉換為完整的 3D 身體網格與 70 個關鍵點。

適用對象

  • 開發者:需要無需 Python 開銷的高速、基於 C++ 的 3D 人體姿勢估計的開發者。
  • 動作捕捉藝術家:希望將多人數運動數據匯出為標準格式(如 BVH)以便在 Blender 或其他 DCC 工具中使用的藝術家。
  • 電腦視覺工程師:需要從單目影片中進行魯棒的 3D 身體重建,且無需深度感測器的工程師。

亮點

  • 零 Python 依賴:使用 ONNX Runtime 與 ggml 的獨立 C++ 推理引擎。
  • 動作捕捉匯出:透過 IoU 追蹤生成具有穩定身份識別的每個偵測人員的標準 BVH 檔案。
  • 多模態輸出:生成 3D 網格頂點、70 個關鍵點與相機參數。
  • 時間平滑:包含 Butterworth 低通濾波器,以減少關節與姿勢向量的抖動。
  • 靈活部署:支援 CUDA 加速的 GPU 推理或透過 FP32 模型進行僅 CPU 執行。