:railway_car: TRAM
论文《TRAM: 从野外视频中获取3D人体的全局轨迹和运动》的官方实现
Yufu Wang、Ziyun Wang、Lingjie Liu、Kostas Daniilidis [项目主页]
安装
- 使用
--recursive
标志克隆此仓库。
git clone --recursive https://github.com/yufu-wang/tram
- 创建新的Anaconda环境。
conda create -n tram python=3.10 -y
conda activate tram
bash install.sh
- 编译DROID-SLAM。如果在此步骤中遇到困难,请参考其官方发布获取更多信息。在本项目中,DROID被修改以支持遮罩。
cd thirdparty/DROID-SLAM
python setup.py install
cd ../..
准备数据
在SMPLify和SMPL注册,其用户名和密码将被我们的脚本用于下载SMPL模型。此外,我们还将获取训练好的检查点和一个示例视频。请注意,第三方模型有其各自的许可证。
运行以下命令将所有模型和检查点获取到data/
目录:
bash scripts/download_models.sh
在视频上运行演示
本项目集成了完整的4D人体系统,包括跟踪、SLAM和世界空间中的4D人体捕捉。我们将核心功能分离成不同的脚本,这些脚本应按顺序运行。每个步骤都会保存其结果供下一步使用。所有结果将保存在与视频同名的文件夹中。
# 1. 运行带遮罩的Droid SLAM(同时在此步骤中检测+跟踪人体)
python scripts/estimate_camera.py --video "./example_video.mov"
# -- 你可以指明相机是否静止。算法也会尝试捕捉这一点。
python scripts/estimate_camera.py --video "./another_video.mov" --static_camera
# 2. 使用VIMO运行4D人体捕捉。
python scripts/estimate_humans.py --video "./example_video.mov"
# 3. 整合所有内容。渲染输出视频。
python scripts/visualize_tram.py --video "./example_video.mov"
在提供的视频./example_video.mov
上运行上述三个脚本将创建一个文件夹./results/exapmle_video
并在其中保存所有结果。请查看脚本中的可用参数。
训练和评估
代码即将发布...
致谢
我们从以下开源工作中受益匪浅,我们的部分代码改编自这些项目:
此外,该管道还包括Detectron2、Segment-Anything和DEVA-Track-Anything。
引用
@article{wang2024tram,
title={TRAM: Global Trajectory and Motion of 3D Humans from in-the-wild Videos},
author={Wang, Yufu and Wang, Ziyun and Liu, Lingjie and Daniilidis, Kostas},
journal={arXiv preprint arXiv:2403.17346},
year={2024}
}