GeoGaussian:基于几何信息的高斯点云融合渲染(ECCV 2024)
📖 摘要
在高斯点云融合优化过程中,如果没有特意保护场景几何结构,特别是无纹理区域如墙壁、天花板和家具表面,场景几何会逐渐恶化。这种退化严重影响了与训练数据视角差异较大的新视图的渲染质量。
为解决这一问题,我们提出了一种称为GeoGaussian的新方法。基于点云观察到的平滑连接区域,该方法引入了一种新的流水线来初始化与表面对准的细长高斯模型,并通过精心设计的密集化策略将其特性传递到新的生成中。最后,该流水线通过带有显式几何约束的约束优化过程确保场景几何和纹理得到维护。得益于所提出的架构,3D高斯的生成能力在结构化区域得到增强。
我们提出的流水线在新视图合成和几何重建方面达到了最先进的性能,在公共数据集上进行了定性和定量评估。
在公共数据集上的新视图渲染对比。在某些具有较大平移和旋转差异的具有挑战性的视角下,3DGS和LightGS在照片级渲染方面存在问题。
📋 待办事项
- 仓库 - 创建GeoGaussian仓库。
- 代码 - 发布我们的方法。
- 代码 - 为每个高斯点随机采样N个点脚本。
- 数据集 - 上传数据集下载链接。
- 自述文件 - 预告片( I II III )图像和摘要。
- 自述文件 - 基于几何的策略。
- 自述文件 - GeoGaussian的设置。
- 自述文件 - 表I和表II的结果。
- 自述文件 - 许可证、致谢和引用。
- 许可证 - 根据高斯融合许可证发布。
- 测试 - 在Windows工作站上进行了测试
- 测试 - 在Ubuntu服务器上进行了测试
🚀 基于几何信息的策略
- 在仔细设计的初始化和密集化策略中采用了具有显式几何意义的细长3D高斯参数化,以建立合理的3D高斯模型。
- 提出了几何一致性约束,鼓励细长高斯与平滑表面保持一致排列。
💾 数据集
基于SLAM方法PlanarSLAM,我们创建了新的点云而不是使用COLMAP的结果进行实验。
此类输入的新特性:
- 位于非纹理区域的点
- 用不同颜色表示的全局平面实例
- 每个平面点的表面法向量
可以通过以下链接获取子数据集: Replica (PlanarSLAM)、 TUM RGB-D (PlanarSLAM)、 ICL NUIM (PlanarSLAM)。 然后需要将原始数据集图像放在"results"文件夹中。 原始图像可以通过以下链接获取: Replica、 TUM RGB-D、 ICL NUIM。 每个序列的结构组织如下:
Replica_r2
|______PointClouds.ply # SLAM系统生成的稀疏点云
|______KeyFrameTrajectory2.txt # SLAM系统生成的相机位姿
|______results # 所有原始图像的文件夹
我们的代码提供了处理这种数据格式的接口。
🎓 基准线
1. 基于平面点云的高斯溅射 代码仓库
🔧 GeoGaussian的设置
1. 克隆代码仓库。
# https
git clone https://github.com/yanyan-li/GeoGaussian
# or ssh
git clone git@github.com:yanyan-li/GeoGaussian.git
2. 环境设置。
如果你已有3dgs环境,可直接使用。
否则请参考3DGS environment的环境配置。
我们的代码仓库中提供了environment.yml
文件。
此外,你还需要安装open3d
、scipy
、matplotlib
和pillow
库。
# 如果你已经安装了3dgs环境,
# 请激活该环境,并执行以下命令:
conda activate gaussian_splatting
pip install open3d scipy matplotlib pillow
3. 下载演示数据集
- 创建一个新的
data
文件夹 - 下载文件(Replica OFF2).
- 将其解压到
data
文件夹中。
4. 运行代码
为了运行我们的代码,
你应该指定数据集的路径,
该路径应包含KeyFrameTrajectory.txt
文件或sparse
文件夹,
并指定输入图像的稀疏度,即输入图像之间的间隔。
# python train.py -s [path_to_dataset] --sparse_num [N]( 1 ==> 100% images, 5 ==> 20% images)
运行演示:
python train.py -s data/Replica-OFF2 --sparse_num 1
然后你会发现output
文件夹中有一个特定的xxxxxxxx-x
目录,
以及depth
和rgb
目录,
它们分别存储训练过程中渲染的RGB和深度图像。
📊 结果
方法 数据 | 3DGS | LightGS | GeoGaussian(我们的) | ||||||||||
R1 | PSNR↑ SSIM↑ LPIPS↓ | 30.49 | 33.98 | 37.45 | 37.60 | 30.54 | 34.06 | 37.72 | 38.44 | 31.65 | 35.17 | 38.00 | 38.24 |
0.932 | 0.951 | 0.964 | 0.965 | 0.932 | 0.951 | 0.965 | 0.967 | 0.937 | 0.957 | 0.968 | 0.979 | ||
0.051 | 0.036 | 0.029 | 0.028 | 0.051 | 0.035 | 0.028 | 0.025 | 0.041 | 0.027 | 0.022 | 0.021 | ||
R2 | PSNR↑ SSIM↑ LPIPS↓ | 31.53 | 35.82 | 38.53 | 38.70 | 31.54 | 35.93 | 38.78 | 39.07 | 32.13 | 36.81 | 38.84 | 39.14 |
0.935 | 0.959 | 0.968 | 0.968 | 0.935 | 0.959 | 0.968 | 0.968 | 0.943 | 0.963 | 0.969 | 0.970 | ||
0.050 | 0.031 | 0.028 | 0.029 | 0.049 | 0.031 | 0.027 | 0.028 | 0.041 | 0.025 | 0.024 | 0.024 | ||
OFF3 | PSNR↑ SSIM↑ LPIPS↓ | 30.90 | 33.86 | 36.26 | 36.56 | 30.93 | 33.90 | 36.38 | 36.63 | 31.62 | 33.91 | 36.42 |
SSIM↑
LPIPS↓
SSIM↑
LPIPS↓
方法 | R0 | R1 | R2 | OFF0 | OFF1 | OFF2 | OFF3 | OFF4 | 平均 | |
3DGS GeoGaussian (我们的) | 均值 (m) 标准差 (m) | 0.026 | 0.025 | 0.042 | 0.017 | 0.019 | 0.039 | 0.032 | 0.032 | 0.029 |
0.066 | 0.081 | 0.146 | 0.050 | 0.055 | 0.201 | 0.066 | 0.112 | 0.097 | ||
均值 (m) 标准差 (m) | 0.018 | 0.014 | 0.015 | 0.020 | 0.029 | 0.013 | 0.018 | 0.014 | 0.018 | |
0.032 | 0.016 | 0.028 | 0.042 | 0.067 | 0.024 | 0.020 | 0.023 | 0.031 |
表 II. Replica 数据集上的重建性能比较。 基于 Replica 数据集提供的地面真值网格模型,我们将这些网格模型与来自高斯模型的点云对齐,其中我们在每个高斯椭球中随机采样三个点。
⭕️ 致谢
本项目基于 3DGS 并依赖于 PlanarSLAM 工作提供的数据。 感谢开源社区的贡献。
📋 许可证
本项目根据 Gaussian-Splatting 许可证发布。
✉️ 引用
如果您在研究中发现本项目有用,请考虑引用:
BibTex
@article{li2024geogaussian,
title={GeoGaussian: Geometry-aware Gaussian Splatting for Scene Rendering},
author={Li, Yanyan and Lyu, Chenyu and Di, Yan and Zhai, Guangyao and Lee, Gim Hee and Tombari, Federico},
journal={arXiv preprint arXiv:2403.11324},
year={2024}
}