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 依赖的需求,使其适用于在生产环境或嵌入式系统中进行高效部署。
工作原理
流水线通过以下几个阶段处理原始图像:
- Detection: YOLO 检测人物边界框。
- Feature Extraction: DINOv3-ViT-H 主干网络从检测到的裁剪区域生成空间特征图。
- Pose Decoding: Transformer 解码器将特征压缩为姿态 Token。
- Parameter Regression: 小型 FFN 头(通过 ggml 运行)将 Token 解码为 519 个姿态参数(包括身体、手部和面部表情)以及相机平移。
- 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 执行。