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.

解決する課題

このプロジェクトは、単一のBGR画像または動画から3D人体ポーズとメッシュを再構成するための、高性能なスタンドアロンC++実装を提供します。実行時にPythonの依存関係を必要としないため、プロダクション環境や組み込みシステムへの効率的なデプロイに適しています。

仕組み

パイプラインは、以下の複数のステージを経て生の画像を処理します:

  1. Detection: YOLOが人物のバウンディングボックスを検出します。
  2. Feature Extraction: DINOv3-ViT-Hバックボーンが、検出されたクロップ画像から空間特徴マップを生成します。
  3. Pose Decoding: Transformerデコーダーが特徴をポーズトークンに圧縮します。
  4. Parameter Regression: 小規模なFFNヘッド(ggml経由で実行)が、トークンを519個のポーズパラメータ(身体、手、表情を含む)とカメラの平行移動にデコードします。
  5. Mesh Generation: Linear Blend Skinning (LBS) が、これらのパラメータを完全な3Dボディメッシュと70個のキーポイントに変換します。

対象者

  • 開発者: Pythonのオーバーヘッドなしに、高速なC++ベースの3D人体ポーズ推定を必要とする方。
  • モーションキャプチャ・アーティスト: Blenderやその他のDCCツールで使用するために、複数人のモーションデータをBVHのような標準形式でエクスポートしたい方。
  • コンピュータビジョン・エンジニア: 深度センサーなしで、単眼動画から堅牢な3D身体再構成を必要とする方。

ハイライト

  • Python依存関係ゼロ: ONNX Runtimeとggmlを使用したスタンドアロンC++推論エンジン。
  • モーションキャプチャ・エクスポート: IoUトラッキングにより安定したIDを維持し、検出された人物ごとに標準的なBVHファイルを生成します。
  • マルチモーダル出力: 3Dメッシュ頂点、70個のキーポイント、およびカメラパラメータを生成します。
  • 時間的平滑化: 関節およびポーズベクトルのジッタを軽減するために、Butterworth低域通過フィルタが含まれています。
  • 柔軟なデプロイ: CUDA加速GPU推論、またはFP32モデルによるCPUのみの実行をサポートしています。