从SAM3D Body到C++加速,这个项目提供高精度三维重建生产级加速部署方案!


计算机视觉领域的三维人体姿态估计长期面临一个两难困境:精度高的模型往往速度慢、依赖繁重的Python运行环境;而轻量化方案又难以兼顾全身细节。近日,开发者 Ammar Qammaz 开源了

SAM3DBody-cpp

,一个基于 Meta AI SAM 3D Body 研究成果的纯C++推理引擎,将高精度的三维全身重建带入了实时、零Python依赖的生产环境。

项目背景:从 SAM 3D Body 到 C++ 加速

Meta AI Research 于2026年初发表论文,提出了

SAM 3D Body(3DB)

模型——一种可提示的单图像全身三维人体网格恢复(HMR)方法,在多种野外条件下均展现出当前最优的重建性能。它引入了名为

Momentum Human Rig(MHR)

的新参数化网格表示,将骨骼结构与体表形状解耦。

然而,原始 3DB 模型推理延迟达数秒,无法满足实时应用需求。USC、UCSD、NVIDIA 和 Meta Reality Labs 合作发布的

Fast SAM 3D Body

(arXiv: 2603.15603)在此基础上通过训练无关的加速框架,实现了高达

10.9倍

的端到端提速,并以单路 RGB 摄像头实现约 65ms/帧的人形机器人实时控制。

SAM3DBody-cpp

正是以 Fast SAM 3D Body 为直接灵感,将整条推理流水线移植为独立的 C++ 运行时,彻底消除 Python 依赖。

SAM3DBody-cpp 是一个独立的 C++ 推理引擎,接受 BGR 图像作为输入,输出每个检测到人体的 MHR 身体姿态参数、摄像机平移向量,以及可选的完整三维网格顶点(18,439个顶点)和

70个身体/手部关键点

——完全基于 ONNX Runtime 与 ggml,无需任何 Python 运行时。

效果如下:

可应用于

 人形机器人实时控制与遥操作

 影视和游戏的动作捕捉

 增强现实与虚拟试穿

 体育动作分析

 无穿戴设备的人体行为识别

技术亮点

工程亮点

 骨干网络是唯一瓶颈,可通过批量处理多人裁剪图提升吞吐量;

 使用

  --skip-body

 跳过 LBS 顶点计算可显著提速;

 支持 BVH 动作捕捉格式导出,适合影视、游戏流程对接;

 内置时序平滑器(

  two_pass.py

 )和 Butterworth 滤波器,改善视频流稳定性。

完整推理流水线

BGR 图像  ↓  yolo.onnx      (ONNX Runtime / CUDA)  → 人体边界框 + 17个COCO关键点  ↓  backbone.onnx  (DINOv3-ViT-H/14+)     → 特征图 [B, 1280, 32, 32]  ↓  decoder.onnx   (6层可提示解码器)       → 姿态令牌 [B, 1024]  ↓  pipeline.gguf  (CPU矩阵运算/ggml)     → MHR参数 [B, 519] + 摄像机 [B, 3]  ↓  body_model.lbs (原生C LBS,可选)       → 顶点 [18439, 3](单位:米)

整个流水线在 RTX 3090 上,主要耗时分布为:YOLO检测约5ms,骨干网络(最大瓶颈)约150~200ms,解码器约20ms,MHR/LBS头部不足1ms。

模型文件构成

预构建模型文件托管于 HuggingFace,主要包含:

    文件

    大小

    说明

    backbone.onnx + .data

    ~4.8 GB

    DINOv3-ViT-H/14+ 编码器

    decoder.onnx

    ~93 MB

    6层可提示解码器

    yolo.onnx

    ~81 MB

    YOLO11m-pose 人体检测器

    pipeline.gguf

    ~5 MB

    MHR + 摄像机投影头

    body_model.lbs

    ~27 MB

    原生C LBS数据

    correctives.bin

    ~33 MB

    姿态修正混合形状

每人输出的详细数据

对每个检测到的人,系统输出包括:边界框坐标、估计焦距、全局旋转(欧拉ZYX)、133维身体关节角度、45维形状参数(SMPL类似的beta值)、108维手部姿态(左右各54维)、72维面部表情参数,以及完整的70个三维关键点坐标。

多语言接口设计

项目提供三种接入方式:

C++ 库 API

:通过

fsb::Pipeline

类加载配置并调用

process_bgr()

处理图像。

纯C / ctypes API

:通过

FsbHandle

句柄提供完整的 C 接口,方便跨语言调用(包括 Python ctypes)。

Python 前端

  轻量前端

 (

  fast_sam_3dbody_frontend.py

 ):仅需

  opencv-python

 和

  numpy

 ,绘制2D COCO骨架。

  三维前端

 (

  fast_sam_3dbody_frontend-3D.py

 ):提供四格显示

  [原图 | 2D骨架 | 正面网格 | 侧面网格]

 。

  ROS 演示

 (

  ros_demo_webcam.py

 ):集成 ROS 的网络摄像头演示脚本。

如何快速上手

1. 下载模型(来自 HuggingFace)

wget https://huggingface.co/AmmarkoV/SAM3DBody-cpp-onnx-models/resolve/main/SAM3DBody-cpp-onnx-models.zip unzip SAM3DBody-cpp-onnx-models.zip

2. 编译(需要 CMake ≥ 3.18, C++17, OpenCV)

mkdir -p build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc)

3. 运行(网络摄像头实时推理)

./fast_sam_3dbody_run
    —onnx-dir ../onnx
    —gguf ../onnx/pipeline.gguf
    —yolo ../onnx/yolo.onnx
    —from 0

CMake 会自动处理依赖:ONNX Runtime 1.20.1(若未找到则从 GitHub Releases 下载)、ggml(通过 FetchContent 获取)以及 CUDA(自动检测,不可用时降级为纯CPU模式)。

开源生态与引用

SAM3DBody-cpp 以

MIT 协议

开源,代码库以 C 语言(65.2%)和 C++(17.7%)为主。项目是以下工作的工程实现集成:

  SAM 3D Body

 (Meta AI, arXiv: 2602.15989):原始学术模型

  Fast SAM 3D Body

 (USC/UCSD/NVIDIA/Meta, arXiv: 2603.15603):加速框架灵感来源

  SAM3DBody-cpp

 本身作为独立的 C++ 推理引擎,由 Ammar Qammaz 开发维护

项目地址

https://github.com/AmmarkoV/SAM3DBody-cpp

如果你觉得这篇文章不错,别忘了

点赞、在

看、转发

给更多需要的小伙伴哦!若合作或交流入群关注后可获取联系方式