SAM 3D Body部署与视频推理教程

发布时间:2026/9/10 21:37:25

SAM 3D Body部署与视频推理教程 文章目录1. 这篇教程能得到什么2. 已验证环境3. 代码和模型地址4. 下载代码5. 创建Conda环境6. 安装PyTorch7. 安装SAM 3D依赖8. 下载模型权重方法A官方Hugging Face方法B魔搭镜像9. 先生成YOLO人体提示10. 单个关键帧推理11. 扫描整段视频12. 生成人体网格与教师—TCN综合可视化13. 怎么判断结果正确14. 已踩过的坑Hugging Face下载失败Git LFS占位文件braceexpand或webdataset缺失模型提示缺少部分state dict键三维人体上下颠倒第一次可视化很慢15. 性能和边界16. 最短复现路径项目内容项目名称mask2world项目版本1.3教程版本1.0最后更新2026-07-16适用范围Windows 11、NVIDIA显卡、单张图片与整段视频的SAM 3D Body离线推理1. 这篇教程能得到什么按照本文操作可以把普通单目视频转换成连续的完整三维人体原视频 → YOLO人体关键点提供人框 → SAM 3D Body逐帧恢复人体表面和三维骨骼 → 保存连续三维序列 → 输出正面、侧面和原视频同步可视化SAM 3D Body在本项目中是离线教师不是最终部署到Orin的实时模型。2. 已验证环境本项目实际跑通的机器操作系统Windows 11 显卡NVIDIA GeForce RTX 4060 Ti 16GB CondaD:\application\anaconda3 环境名sam3d_body Python3.12.13 PyTorch2.9.0cu126 TorchVision0.24.0cu126 CUDA运行时12.6 NumPy2.5.1 OpenCV5.0.0Meta官方安装文档推荐Python 3.11。本项目因为本机已有Python 3.12和CUDA 12.6的PyTorch wheel使用3.12.13也已经完整跑通。3. 代码和模型地址官方资源代码https://github.com/facebookresearch/sam-3d-body官方DINOv3权重https://huggingface.co/facebook/sam-3d-body-dinov3官方安装说明https://github.com/facebookresearch/sam-3d-body/blob/main/INSTALL.md魔搭镜像https://modelscope.cn/models/facebook/sam-3d-body-dinov3许可证SAM License使用前应阅读官方仓库中的LICENSE。本机已经验证的代码提交b5c765a0d89d789985e186d396315e7590887b94当前实际路径SAM 3D代码E:\Reset\external\sam-3d-body 模型目录E:\Reset\external\sam-3d-body\checkpoints\sam-3d-body-dinov3 mask2worldE:\Reset\mask2world模型目录最终必须至少包含sam-3d-body-dinov3\ ├─ model.ckpt ├─ model_config.yaml └─ assets\ └─ mhr_model.ptmodel.ckpt约2.1GBmhr_model.pt约696MB。只有几KB的文件通常是Git LFS占位文件不能推理。4. 下载代码在PowerShell中运行Set-LocationE:\Reset\external git clone https://github.com/facebookresearch/sam-3d-body E:\Reset\external\sam-3d-body如果目录已经存在不要重复克隆也不要删除原目录。5. 创建Conda环境D:\application\anaconda3\Scripts\conda.execreate-n sam3d_body python3.12 pip-y以后不必先执行conda activate可以直接使用环境中的PythonD:\application\anaconda3\envs\sam3d_body\python.exe--version6. 安装PyTorch本机D:\zero_track已经保存匹配Python 3.12和CUDA 12.6的wheelD:\application\anaconda3\envs\sam3d_body\python.exe-m pip install D:\zero_track\torch-2.9.0cu126-cp312-cp312-win_amd64.whlD:\zero_track\torchvision-0.24.0cu126-cp312-cp312-win_amd64.whlD:\zero_track\torchaudio-2.9.0cu126-cp312-cp312-win_amd64.whl检查CUDAD:\application\anaconda3\envs\sam3d_body\python.exe-cimport torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))正确结果应包含True和实际显卡名称。7. 安装SAM 3D依赖先安装本项目实际用到的依赖D:\application\anaconda3\envs\sam3d_body\python.exe-m pip install pytorch-lightning pyrender opencv-python yacs scikit-image einops timm dill pandas rich hydra-core hydra-submitit-launcher hydra-colorlog pyrootutils webdataset braceexpand chumpnetworkx3.2.1roma joblib seaborn wandb appdirs ffmpeg cython jsonlines pytest xtcocotools loguru optree fvcore pycocotools tensorboard huggingface_hub再安装SAM 3D Body代码Set-LocationE:\Reset\external\sam-3d-body D:\application\anaconda3\envs\sam3d_body\python.exe-m pip install-e.本项目没有安装Detectron2人体检测器也没有安装MoGe相机视场估计器。原因是人框来自项目已有YOLO姿态结果当前任务不需要SAM 3D自己重新检测人没有FOV估计器时模型会使用默认视场程序能够运行但绝对相机几何不是精确标定结果。8. 下载模型权重方法A官方Hugging Face官方仓库需要先申请访问权限。申请通过并登录后Set-LocationE:\Reset\external\sam-3d-body hf auth login hf download facebook/sam-3d-body-dinov3--local-dircheckpoints/sam-3d-body-dinov3方法B魔搭镜像Hugging Face访问受阻时可以检查魔搭上的facebook/sam-3d-body-dinov3镜像D:\application\anaconda3\envs\sam3d_body\python.exe-m pip install modelscope D:\application\anaconda3\envs\sam3d_body\python.exe-cfrom modelscope import snapshot_download; snapshot_download(facebook/sam-3d-body-dinov3, local_dirrE:\Reset\external\sam-3d-body\checkpoints\sam-3d-body-dinov3)下载后必须检查发布者、许可证、文件层级和文件大小不要只看模型名称相同。检查文件Get-ItemE:\Reset\external\sam-3d-body\checkpoints\sam-3d-body-dinov3\model.ckpt,E:\Reset\external\sam-3d-body\checkpoints\sam-3d-body-dinov3\assets\mhr_model.pt|Select-ObjectFullName,Length9. 先生成YOLO人体提示SAM 3D脚本使用项目已有的pose_tracks.npz计算人框。该文件由reset3环境生成。以参考视频为例Set-LocationE:\Reset\mask2world D:\application\anaconda3\envs\reset3\python.exeanalyze_kick_unsupervised.py --video input_data\test_kick.mp4 --out input_data\kick_yolo26n_unsupervised_v3 --pose-backend yolo26n --semantic-name 踢腿成功后应存在input_data\kick_yolo26n_unsupervised_v3\pose_tracks.npz input_data\kick_yolo26n_unsupervised_v3\discovery.json10. 单个关键帧推理先跑一帧最容易排查环境问题Set-LocationE:\Reset\mask2world D:\application\anaconda3\envs\sam3d_body\python.exerun_sam3d_body_keyframes.py --video input_data\test_kick.mp4 --pose input_data\kick_yolo26n_unsupervised_v3\pose_tracks.npz --output input_data\kick_reference_sam3d_body --times 20.0输出包括关键帧图片和包含人体网格、三维关节、相机平移的NPZ文件。11. 扫描整段视频参考视频使用10FPS教师采样D:\application\anaconda3\envs\sam3d_body\python.exeextract_sam3d_body_sequence.py --video input_data\test_kick.mp4 --pose input_data\kick_yolo26n_unsupervised_v3\pose_tracks.npz --output input_data\kick_reference_sam3d_sequence --sample-fps 10test2和test3较长当前使用5FPSD:\application\anaconda3\envs\sam3d_body\python.exeextract_sam3d_body_sequence.py --video input_data\test2.mp4 --pose input_data\kick_test2_baseline\pose_tracks.npz --output input_data\kick_test2_sam3d_sequence --sample-fps 5 D:\application\anaconda3\envs\sam3d_body\python.exeextract_sam3d_body_sequence.py --video input_data\test3.mp4 --pose input_data\kick_test3_baseline\pose_tracks.npz --output input_data\kick_test3_sam3d_sequence --sample-fps 5主要输出sam3d_body_sequence.npz 三维教师序列报告.json 整段视频脚部前后深度曲线.jpg12. 生成人体网格与教师—TCN综合可视化当前可视化命令会在缺少网格缓存时重新运行SAM 3D Body然后生成1920×900中文视频Set-LocationE:\Reset\mask2world D:\application\anaconda3\envs\sam3d_body\python.exevisualize_sam3d_teacher_and_tcn.py --names reference test2 test3输出目录input_data\kick_stage_visualization关键视频参考踢腿视频_SAM3D教师与TCN同步可视化.mp4 test2_SAM3D教师与TCN同步可视化.mp4 test3_SAM3D教师与TCN同步可视化.mp4*_SAM3D人体网格缓存.npz保存完整人体表面。以后只修改文字、颜色或时间轴时会复用缓存不重新跑模型。13. 怎么判断结果正确不要只看“成功帧数”。至少观看可视化并检查头在上、脚在下正面左右腿与原视频一致侧面左方表示朝摄像机脚真正向镜头踢出时侧面深度确实变化被裁掉的身体是模型补出的假设不能当作原图真实观测三维人体是否出现骨长突变、前后翻转或脚穿插。14. 已踩过的坑Hugging Face下载失败官方权重需要申请权限和登录。无法下载时先检查魔搭镜像但必须核对文件大小和许可证。Git LFS占位文件文件名存在不代表权重完整。model.ckpt应约2.1GB不能只有几KB。braceexpand或webdataset缺失模型加载链路会间接导入这些包D:\application\anaconda3\envs\sam3d_body\python.exe-m pip install braceexpand webdataset模型提示缺少部分state dict键当前官方代码和权重组合会打印一批missing keys本项目实测仍能正常输出完整人体。判断是否真正失败应看是否产生pred_vertices和pred_keypoints_3d不能只看警告文字。三维人体上下颠倒这批SAM 3D输出的Y坐标已经与画面方向一致。绘图时再次取反会导致头在下、脚在上。当前visualize_sam3d_teacher_and_tcn.py已经按实际画面修正。第一次可视化很慢第一次要重新恢复所有人体网格并压缩缓存以后复用缓存只需要重新编码视频。15. 性能和边界模型约12.85亿参数加载显存约3.54GB完整运行还需要输入和中间特征显存。4060 Ti上预热后约0.180.19秒一帧。当前是逐帧模型视频时间连续性来自后续分析不是模型内部视频跟踪。单目三维仍有前后歧义和尺度不确定性。它只恢复人体不理解车辆、垃圾桶、球、地面接触和动作目的。本项目把它作为离线教师Orin只部署蒸馏后的小型TCN。16. 最短复现路径已经有环境、代码、权重和pose_tracks.npz时只需Set-LocationE:\Reset\mask2world D:\application\anaconda3\envs\sam3d_body\python.exeextract_sam3d_body_sequence.py --video input_data\test3.mp4 --pose input_data\kick_test3_baseline\pose_tracks.npz --output input_data\kick_test3_sam3d_sequence --sample-fps 5若动作教师和TCN输出也已存在再运行D:\application\anaconda3\envs\sam3d_body\python.exevisualize_sam3d_teacher_and_tcn.py--names test3
延伸阅读

更多相关文章

2026/9/9 23:57:11

BLDC电机控制中角度传感器的关键作用与技术解析

1. BLDC电机控制与角度传感器的核心关系 在无刷直流电机(BLDC)控制系统中,角度传感器扮演着至关重要的角色。不同于传统有刷电机依靠机械换向器实现电流方向切换,BLDC电机需要通过电子方式精确控制三相绕组的通电时序,…

2026/9/10 21:34:27

CANN/ge离线图编译执行示例

Sample Usage Guide 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Tensor…

2026/9/10 21:34:27

JPA懒加载引发N+1查询:从线上事故到根治方案

告警平台凌晨一点把电话打到手机上,订单列表接口的 P99 响应时间从 300 毫秒直接飙到 15 秒,监控面板上一片飘红。我打开电脑第一件事不是看代码,而是先把慢 SQL 日志拉出来——直觉告诉我,这种接口突然“龟速”的情况&#xff0c…

2026/9/10 21:34:27

新能源汽车物流系统:Java Web实时调度平台开发实践

1. 项目背景与核心价值 新能源汽车物流行业正经历爆发式增长,传统电话/Excel接单模式已无法满足实时调度需求。去年参与某车企物流系统升级时,亲眼目睹调度员同时接听3部电话、手工记录订单导致发错车的案例。这个基于Java Web的接单平台正是为解决以下痛…

2026/9/10 21:29:27

期末高效学习工具与应急技巧全攻略

1. 期末周生存指南:那些真正能救命的学习工具 每到期末周,图书馆总是人满为患,咖啡消耗量直线上升。作为一名经历过无数次期末洗礼的老学长,我深刻理解那种被deadline追着跑的窒息感。今天要分享的不是什么高大上的学习方法&#…

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码