NoPoSplat根据未设置的稀疏图像预测规范空间中的 3D 高斯分布,
实现高质量的新颖视图合成和准确的姿态估计。
安装
预训练检查点
相机约定
数据集
运行代码
致谢
引文
我们的代码依赖于 Python 3.10+,并基于 PyTorch 2.1.2 和 CUDA 11.8 开发,但它也应该适用于更高的 Pytorch/CUDA 版本。
克隆 NoPoSplat。
git 克隆 https://github.com/cvg/NoPoSplatcd NoPoSplat
创建环境,这里我们展示使用 conda 的示例。
conda 创建-y -n noposplat python=3.10 conda 激活 noposplat pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118 pip install -r 要求.txt
可选,为 RoPE 编译 cuda 内核(如 CroCo v2 中)。
# NoPoSplat 依赖于 RoPE 位置嵌入,您可以为此编译一些 cuda 内核以获得更快的运行时间。cd src/model/encoder/backbone/croco/curope/ python setup.py build_ext --inplacecd ../../../../../..
我们的模型托管在 Hugging Face 上?
型号名称 | 培训决议 | 训练数据 |
---|---|---|
re10k.ckpt | 256x256 | 重新10k |
酸检测 | 256x256 | 酸 |
mixRe10kDl3dv.ckpt | 256x256 | re10k、dl3dv |
mixRe10kDl3dv_512x512.ckpt | 512x512 | re10k、dl3dv |
我们假设下载的权重位于pretrained_weights
目录中。
我们的相机系统与 PixelSplat 相同。相机固有矩阵被归一化(第一行除以图像宽度,第二行除以图像高度)。相机外部矩阵是 OpenCV 风格的相机到世界矩阵(+X 向右,+Y 向下,+Z 相机看着屏幕)。
数据集准备请参考DATASETS.md。
主要入口点是src/main.py
。通过以下方式调用:
# 8 个 GPU,每个批次大小 = 16。如果不想使用 wandb 进行日志记录,请删除最后两个参数 python -m src.main +experiment=re10k wandb.mode=online wandb.name=re10k
此默认训练配置需要 8 个 GPU,每个 GPU 上的批量大小为 16(>=80GB 内存)。培训大约需要 6 个小时才能完成。您可以调整批量大小以适合您的硬件,但请注意,更改总批量大小可能需要修改初始学习率才能保持性能。您可以参考re10k_1x8在1个A6000 GPU(48GB内存)上进行训练,这将产生类似的性能。
# RealEstate10Kpython -m src.main +experiment=re10k mode=test wandb.name=re10k dataset/[email protected]_sampler=evaluation dataset.re10k.view_sampler.index_path=assets/evaluation_index_re10k.json checkpointing.load=./pretrained_weights /re10k.ckpt test.save_image=true# RealEstate10Kpython -m src.main +experiment=acid mode=test wandb.name=acid dataset/[email protected]_sampler=评估数据集.re10k.view_sampler.index_path=assets/evaluation_index_acid .json checkpointing.load=./pretrained_weights/acid.ckpt test.save_image=true
您可以设置wandb.name=SAVE_FOLDER_NAME
来指定保存路径。
要评估位姿估计性能,可以运行以下命令:
# RealEstate10Kpython -m src.eval_pose +experiment=re10k +evaluation=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt dataset/[email protected]_sampler=评估 dataset.re10k.view_sampler.index_path=assets/evaluation_index_re10k.json # ACIDpython -m src.eval_pose +experiment=acid +evaluation=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt dataset/[email protected]_sampler=评估数据集.re10k.view_sampler.index_path=assets/evaluation_index_acid.json # ScanNet-1500python -m src.eval_pose +experiment=scannet_pose +evaluation=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt
请注意,这里我们展示了使用在 RealEstate10K 和 DL3DV 上训练的混合模型进行的评估。您可以用其他经过训练的模型替换检查点路径。
该项目是使用几个出色的存储库开发的:pixelSplat、DUSt3R 和 CroCo。我们感谢原作者的出色工作。我们感谢 David Charatan 的善意帮助,为之前的一些方法提供了评估代码和预训练模型。
@article{ye2024noposplat, title = {No Pose, No Problem: Surprisingly Simple 3D Gaussian Splats from Sparse Unposed Images}, author = {Ye, Botao and Liu, Sifei and Xu, Haofei and Xueting, Li and Pollefeys, Marc and Yang, Ming-Hsuan and Songyou, Peng}, journal = {arXiv preprint arXiv:xxxx.xxxx}, year = {2024} }