LightGaussian:无限制的3D高斯压缩,实现15倍减少和200+ FPS
用户指南
高斯剪枝比率、向量量化比率与FPS、SSIM的关系
温和的压缩比率,精度降低最小化
设置
本地设置
代码库基于gaussian-splatting
使用的数据集MipNeRF360和Tank & Temple由论文作者在这里托管。
安装步骤:
conda env create --file environment.yml
conda activate lightgaussian
注意:我们修改了子模块中的"diff-gaussian-rasterization"以获取全局显著性分数。
压缩为紧凑表示
Lightgaussian包含3种方法使3D高斯变得紧凑
选项1 剪枝与恢复
用户可以使用以下命令直接剪枝经过训练的3D-GS检查点(默认设置):
bash scripts/run_prune_finetune.sh
用户还可以使用以下命令从头开始训练并在训练中联合剪枝冗余高斯(与论文中的设置不同):
bash scripts/run_train_densify_prune.sh
注意:3D-GS训练20,000次迭代后进行剪枝。生成的ply文件大小约为原始3D-GS的35%,同时保证了可比的质量水平。
选项2 SH蒸馏
用户可以使用以下命令蒸馏3D-GS检查点(默认设置):
bash scripts/run_distill_finetune.sh
选项3 VecTree量化
用户可以使用以下命令量化经过剪枝和蒸馏的3D-GS检查点(默认设置):
bash scripts/run_vectree_quantize.sh
渲染
使用轨迹渲染。默认为椭圆轨迹,您可以通过更改为相应的函数将其更改为螺旋或其他轨迹。
python render_video.py --source_path PATH/TO/DATASET --model_path PATH/TO/MODEL --skip_train --skip_test --video
对于Vectree量化阶段后的渲染,您可以通过以下方式渲染:
python render_video.py --load_vq
示例
房间场景的示例检查点可以在这里下载,主要包括以下几个部分:
- point_cloud.ply —— 经过剪枝、蒸馏和量化的3D-GS检查点。
- extreme_saving —— vectree量化后获得的相关文件。
- imp_score.npz —— vectree量化中使用的全局显著性。
待办事项
- 上传模块1:剪枝与恢复
- 上传模块2:SH蒸馏
- 上传模块3:Vectree量化
- 上传docker镜像
致谢
我们要感谢来自纽约大学的Yueyu Hu对我们项目的宝贵讨论。
BibTeX
如果您发现我们的工作对您的项目有用,请考虑引用以下论文。
@misc{fan2023lightgaussian,
title={LightGaussian: Unbounded 3D Gaussian Compression with 15x Reduction and 200+ FPS},
author={Zhiwen Fan and Kevin Wang and Kairun Wen and Zehao Zhu and Dejia Xu and Zhangyang Wang},
year={2023},
eprint={2311.17245},
archivePrefix={arXiv},
primaryClass={cs.CV} }