从SAM3D Body到C++加速,这个项目提供高精度三维重建生产级加速部署方案!
- 公众号:GitHubStore
- 发布时间:2026-06-01T08:02:00+08:00
- 微信链接:https://mp.weixin.qq.com/s/RHfTVNQ4WAYnTkNEorePCw
- RSS ID:3916483328-2247495415_1
- Feed ID:MP_WXS_3916483328
- Glance 当前首页可见:是
计算机视觉领域的三维人体姿态估计长期面临一个两难困境:精度高的模型往往速度慢、依赖繁重的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
如果你觉得这篇文章不错,别忘了
点赞、在
看、转发
给更多需要的小伙伴哦!若合作或交流入群关注后可获取联系方式