[ECCV2024] CityGaussian: 使用高斯函数实现实时高质量大规模场景渲染
杨柳
何关
罗传辰
范略
王乃彦
彭俊然
张兆翔
中国科学院自动化研究所; 中国科学院大学
3D高斯散射(3DGS)显著推动了实时3D场景重建和新视角合成的发展。然而,有效训练大规模3DGS并在各种尺度下实时渲染仍然具有挑战性。本文提出了CityGaussian(CityGS),它采用了一种新颖的分而治之训练方法和细节层次(LoD)策略,用于高效的大规模3DGS训练和渲染。具体来说,全局场景先验和自适应训练数据选择实现了高效训练和无缝融合。基于融合的高斯基元,我们通过压缩生成不同的细节层次,并通过提出的块级细节层次选择和聚合策略在各种尺度上实现快速渲染。在大规模场景上的广泛实验结果表明,我们的方法达到了最先进的渲染质量,能够在vastly不同尺度上一致地实时渲染大规模场景。欢迎访问我们的项目页面。
📰 新闻
[2024.08.20] 更新了自定义数据集说明!
[2024.08.05] 我们的代码现已可用!欢迎尝试!
[2024.07.18] 最终版本现可通过arXiv访问。包含更多见解。
🥏 CityGaussian模型
本仓库包含论文"CityGaussian: 使用高斯函数实现实时高质量大规模场景渲染"的官方实现。如果你喜欢,请给我们点个星⭐!
训练流程
渲染流程
🔧 使用方法
注意,五个大规模场景的配置文件已在config
文件夹中准备好:MatrixCity、Rubble、Building、Residence和Sci-Art。这些数据集的数据可以根据数据准备进行准备。对于COLMAP,我们建议直接使用我们生成的结果:
- Google Drive: https://drive.google.com/file/d/1Uz1pSTIpkagTml2jzkkzJ_rglS_z34p7/view?usp=sharing
- 百度网盘: https://pan.baidu.com/s/1zX34zftxj07dCM1x5bzmbA?pwd=1t6r
安装
a. 克隆仓库
# 克隆仓库
git clone --recursive https://github.com/DekuLiuTesla/CityGaussian.git
cd CityGaussian
mkdir data # 在这里存储你的数据集
mkdir output # 在这里存储你的输出
b. 创建虚拟环境
# 创建虚拟环境
conda create -yn citygs python=3.9 pip
conda activate citygs
c. 安装PyTorch
-
在
PyTorch==2.0.1
上测试通过 -
你必须安装与你的nvcc版本相匹配的版本(nvcc --version)
-
对于CUDA 11.8
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
d. 安装依赖
pip install -r requirements.txt
e. 安装针对LoD定制的LightGaussian
cd LargeLightGaussian
pip install submodules/compress-diff-gaussian-rasterization
ln -s /path/to/data /path/to/LargeLightGaussian/data
ln -s /path/to/output /path/to/LargeLightGaussian/output
cd ..
准备配置文件
如果您使用自己的数据集,请按照自定义数据集说明中的指示进行准备。我们还在./config
和LargeLightGaussian/scripts
中准备了模板。
训练和普通渲染
要训练一个场景,请在您的yaml文件中配置预训练和微调阶段的超参数,然后在run_citygs.sh
中替换COARSE_CONFIG
和CONFIG
。run_citygs.sh
中的max_block_id
、out_name
和TEST_PATH
也应根据您的数据集进行设置。然后,您可以通过简单使用以下命令来训练您的场景:
bash scripts/run_citygs.sh
此脚本还将渲染并评估不带LoD的结果。
使用LoD进行渲染
首先,通过以下命令实现LoD生成:
cd LargeLightGaussian
bash scripts/run_prune_finetune_$your_scene.sh
bash scripts/run_distill_finetune_$your_scene.sh
bash scripts/run_vectree_quantize_$your_scene.sh
cd ..
之后,在另一个yaml文件中配置LoD设置。然后在run_citygs_lod.sh
中用您的设置替换CONFIG
、TEST_PATH
和out_name
。然后您可以使用以下命令用LoD渲染场景:
bash scripts/run_citygs_lod.sh
请注意,LoD选择现在基于奈奎斯特采样率而非手动定义的距离阈值。这一修改能够实现更好的泛化和抗锯齿性能。
查看器
我们借用了Gaussian Lightning的Web查看器。以Rubble场景为例。要不使用LoD渲染场景,可以使用以下命令:
python viewer.py output/rubble_c9_r4
要使用LoD渲染场景,可以使用以下命令:
# 首先复制cameras.json以初始化方向
cp output/rubble_c9_r4/cameras.json output/rubble_c9_r4_lod/
python viewer.py config/rubble_c9_r4_lod.yaml
📝 待办事项
- [x] 首次发布。
- [x] 发布CityGaussian代码。
- [x] 发布主要数据集的ColMap结果。
- [x] 发布自定义数据集使用的详细说明。
- [ ] 发布主要数据集的检查点。
📄 许可证
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
🤗 引用
如果您觉得这个仓库有用,请使用以下BibTeX条目进行引用。
@article{liu2024citygaussian,
title={Citygaussian: Real-time high-quality large-scale scene rendering with gaussians},
author={Liu, Yang and Guan, He and Luo, Chuanchen and Fan, Lue and Wang, Naiyan and Peng, Junran and Zhang, Zhaoxiang},
journal={arXiv preprint arXiv:2404.01133},
year={2024}
}
👏 致谢
本仓库受益于3DGS、LightGaussian和Gaussian Lightning。感谢他们的出色工作!