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.
解决的问题
SAM3DBody-cpp 提供了一个高性能、独立的 C++ 推理引擎,用于 SAM-3D-Body 模型。它能够从标准 2D 图像或视频中提取 3D 人体姿态、形状和相机参数,无需 Python 运行时环境,因此非常适合集成到生产软件或实时应用中。
工作原理
该流程将原始 BGR 图像通过多个阶段处理:
- 检测:YOLO 检测人物边界框。
- 特征提取:DINOv3-ViT-H 主干网络从每个裁剪区域生成空间特征图。
- 姿态标记化:6 层 Transformer 解码器将特征图压缩为 1024 维的姿态标记,基于相机焦距和射线方向进行条件化。
- 参数解码:通过 ggml 运行的小型 FFN 头部将标记解码为 519 个姿态参数(全局朝向、关节角度、形状贝塔、手部姿态和面部表情)和 3 个相机参数。
- 网格生成:这些参数驱动原生 C 实现的线性混合蒙皮(LBS)过程,生成完整的 3D 人体网格(18,439 个顶点)和 70 个关键点。
适用人群
- 需要零 Python 依赖进行 3D 人体姿态估计的 开发者。
- 希望将多人动作导出为标准 BVH 文件以在 Blender 或其他 DCC 工具中使用的 动作捕捉艺术家。
- 希望生成包含骨架、皮肤权重和个性化网格的 MPEG ARF (.arfz) 容器的 虚拟形象创建者。
- 需要从单目视频中快速进行 C++ 基础 3D 身体参数回归的 机器人/CV 工程师。
核心亮点
- 零 Python 运行时:完全独立的 C++ 实现,使用 ONNX Runtime 和 ggml。
- 多人体追踪:内置 2D 边界框 IoU 跟踪器,可在视频帧间保持稳定身份。
- 行业标准导出:支持 BVH 动作捕捉文件和 MPEG ARF 虚拟形象容器。
- 灵活的硬件支持:针对 CUDA GPU 优化,同时提供 CPU 专用的 FP32/FP16 回退模型。
- 全面输出:提供完整的 3D 网格顶点、70 个身体/手部关键点和相机平移信息。
相关
- 项目
- 项目
- 项目
- 项目
- 项目