3D高斯散射(3DGS)显著推动了实时3D场景重建和新视角合成的发展。然而,有效训练大规模3DGS并在各种尺度下实时渲染仍然具有挑战性。本文提出了CityGaussian(CityGS),它采用了一种新颖的分而治之训练方法和细节层次(LoD)策略,用于高效的大规模3DGS训练和渲染。具体来说,全局场景先验和自适应训练数据选择实现了高效训练和无缝融合。基于融合的高斯基元,我们通过压缩生成不同的细节层次,并通过提出的块级细节层次选择和聚合策略在各种尺度上实现快速渲染。在大规模场景上的广泛实验结果表明,我们的方法达到了最先进的渲染质量,能够在vastly不同尺度上一致地实时渲染大规模场景。欢迎访问我们的项目页面。
<div style="text-align: center;"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/18aabb3b-e9b5-4c6b-b1e6-d901c71a4242.png" alt="Dialogue_Teaser" width=100% > </div>[2024.08.20] 更新了自定义数据集说明!
[2024.08.05] 我们的代码现已可用!欢迎尝试!
[2024.07.18] 最终版本现可通过arXiv访问。包含更多见解。
本仓库包含论文"CityGaussian: 使用高斯函数实现实时高质量大规模场景渲染"的官方实现。如果你喜欢,请给我们点个星⭐!
注意,五个大规模场景的配置文件已在config
文件夹中准备好:MatrixCity、Rubble、Building、Residence和Sci-Art。这些数据集的数据可以根据数据准备进行准备。对于COLMAP,我们建议直接使用我们生成的结果:
# 克隆仓库 git clone --recursive https://github.com/DekuLiuTesla/CityGaussian.git cd CityGaussian mkdir data # 在这里存储你的数据集 mkdir output # 在这里存储你的输出
# 创建虚拟环境 conda create -yn citygs python=3.9 pip conda activate citygs
在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
pip install -r requirements.txt
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生成:
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
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://yellow-cdn.veclightyear.com/0a4dffa0/b63a5c0b-f9a9-47f1-94f5-7f958647749b.png" /></a> <br /> 本作品采用<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>进行许可。
如果您觉得这个仓库有用,请使用以下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。感谢他们的出色工作!