GeoGaussian

GeoGaussian

几何感知高斯分布的场景渲染新方法

GeoGaussian是一种创新的场景渲染方法,利用几何感知的高斯分布优化来保持场景结构。它通过初始化表面对齐的薄高斯分布和约束优化,有效保持了场景的几何和纹理特征。该方法在新视角合成和几何重建方面表现优异,尤其适合结构化区域。项目开源了代码、数据集和使用说明,为计算机视觉研究提供了有价值的资源。

3D Gaussians场景渲染几何约束新视角合成点云Github开源项目

GeoGaussian:基于几何信息的高斯点云融合渲染(ECCV 2024)

<p align="center" width="100%"> <img width="33%" src="https://yellow-cdn.veclightyear.com/ab5030c0/070a86cd-5fdb-47a9-84cf-f21c86317b6f.gif"> </p>
<p align="center"> <a href="https://yanyan-li.github.io/project/gs/geogaussian.html"><img src="https://yellow-cdn.veclightyear.com/ab5030c0/e29cbbc9-f375-4d8b-817c-784c0da77dc3.svg"></a> <a href="http://arxiv.org/abs/2403.11324"><img src="https://yellow-cdn.veclightyear.com/ab5030c0/8581a0d0-2c68-4488-ab41-0d8f20c77432.svg"></a> <a href="https://"><img src="https://yellow-cdn.veclightyear.com/ab5030c0/ec33719e-f329-4a24-bfb6-a204616360ba.svg"></a> </p>

📖 摘要

在高斯点云融合优化过程中,如果没有特意保护场景几何结构,特别是无纹理区域如墙壁、天花板和家具表面,场景几何会逐渐恶化。这种退化严重影响了与训练数据视角差异较大的新视图的渲染质量。

为解决这一问题,我们提出了一种称为GeoGaussian的新方法。基于点云观察到的平滑连接区域,该方法引入了一种新的流水线来初始化与表面对准的细长高斯模型,并通过精心设计的密集化策略将其特性传递到新的生成中。最后,该流水线通过带有显式几何约束的约束优化过程确保场景几何和纹理得到维护。得益于所提出的架构,3D高斯的生成能力在结构化区域得到增强。

我们提出的流水线在新视图合成和几何重建方面达到了最先进的性能,在公共数据集上进行了定性和定量评估。

<div align="center"> <img width="100%" alt="image" src="https://yellow-cdn.veclightyear.com/ab5030c0/021ec2db-0a82-4d04-8772-d6b19af5d537.gif"> <img width="100%" alt="image" src="https://yellow-cdn.veclightyear.com/ab5030c0/684d41fb-670e-4caf-a198-e172ef8fc401.gif"> <img width="100%" alt="image" src="https://yellow-cdn.veclightyear.com/ab5030c0/3538cd3c-8ae4-49d3-b46e-13854cf3bae8.gif"> </div> <div align="center"> <b> 3DGS | LightGS | GeoGaussian(Ours) </b> </div>

在公共数据集上的新视图渲染对比。在某些具有较大平移和旋转差异的具有挑战性的视角下,3DGS和LightGS在照片级渲染方面存在问题。

📋 待办事项

  • 仓库 - 创建GeoGaussian仓库。
  • 代码 - 发布我们的方法。
  • 代码 - 为每个高斯点随机采样N个点脚本
  • 数据集 - 上传数据集下载链接。
  • 自述文件 - 预告片( I II III )图像和摘要
  • 自述文件 - 基于几何的策略
  • 自述文件 - GeoGaussian的设置。
  • 自述文件 - 表I和表II的结果
  • 自述文件 - 许可证致谢引用
  • 许可证 - 根据高斯融合许可证发布。
  • 测试 - 在Windows工作站上进行了测试
  • 测试 - 在Ubuntu服务器上进行了测试

🚀 基于几何信息的策略

<div align="center"> <img width="90%" alt="image" src="https://yellow-cdn.veclightyear.com/ab5030c0/638593c5-e5a3-4815-a399-e9c7bcfc767c.png"> </div>
  • 在仔细设计的初始化和密集化策略中采用了具有显式几何意义的细长3D高斯参数化,以建立合理的3D高斯模型。
  • 提出了几何一致性约束,鼓励细长高斯与平滑表面保持一致排列。

💾 数据集

基于SLAM方法PlanarSLAM,我们创建了新的点云而不是使用COLMAP的结果进行实验。

<p align="center" width="100%"> <img width="90%" src="https://yellow-cdn.veclightyear.com/ab5030c0/c3545907-d278-41d6-b205-536e7fab1264.png"> </p>

此类输入的新特性:

<ol> <li> 位于非纹理区域的点 </li> <li> 用不同颜色表示的全局平面实例 </li> <li> 每个平面点的表面法向量 </li> </ol>

可以通过以下链接获取子数据集: Replica (PlanarSLAM)TUM RGB-D (PlanarSLAM)ICL NUIM (PlanarSLAM)。 然后需要将原始数据集图像放在"results"文件夹中。 原始图像可以通过以下链接获取: ReplicaTUM RGB-DICL 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文件。

此外,你还需要安装open3dscipymatplotlibpillow库。

# 如果你已经安装了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目录, 以及depthrgb目录, 它们分别存储训练过程中渲染的RGB和深度图像。

📊 结果

<table> <tr> <td colspan="2"><div align="center">方法<br>数据</div></td> <td colspan="4"><div align="center">3DGS</div></td> <td colspan="4"><div align="center">LightGS</div></td> <td colspan="4"><div align="center">GeoGaussian(我们的)</div></td> </tr> <tr> <td rowspan="3"><div align="left">R1</div></td> <td rowspan="3"><div align="center">PSNR↑<br>SSIM↑<br>LPIPS↓</div></td> <td>30.49</td> <td>33.98</td> <td>37.45</td> <td>37.60</td> <td><i>30.54</i></td> <td><i>34.06</i></td> <td><i>37.72</i></td> <td><i><b>38.44</b></i></td> <td><i><b>31.65</b></i></td> <td><i><b>35.17</b></i></td> <td><i><b>38.00</b></i></td> <td><i>38.24</i></td> </tr> <tr> <td><i>0.932</i></td> <td><i>0.951</i></td> <td>0.964</td> <td>0.965</td> <td><i>0.932</i></td> <td><i>0.951</i></td> <td><i>0.965</i></td> <td><i>0.967</i></td> <td><i><b>0.937</b></i></td> <td><i><b>0.957</b></i></td> <td><i><b>0.968</b></i></td> <td><i><b>0.979</b></i></td> </tr> <tr> <td><i>0.051</i></td> <td>0.036</td> <td>0.029</td> <td>0.028</td> <td><i>0.051</i></td> <td><i>0.035</i></td> <td><i>0.028</i></td> <td><i>0.025</i></td> <td><i><b>0.041</b></i></td> <td><i><b>0.027</b></i></td> <td><i><b>0.022</b></i></td> <td><i><b>0.021</b></i></td> </tr> <tr> <td rowspan="3"><div align="left">R2</div></td> <td rowspan="3"><div align="center">PSNR↑<br>SSIM↑<br>LPIPS↓</div></td> <td>31.53</td> <td>35.82</td> <td>38.53</td> <td>38.70</td> <td><i>31.54</i></td> <td><i>35.93</i></td> <td><i>38.78</i></td> <td><i>39.07</i></td> <td><i><b>32.13</b></i></td> <td><i><b>36.81</b></i></td> <td><i><b>38.84</b></i></td> <td><i><b>39.14</b></i></td> </tr> <tr> <td><i>0.935</i></td> <td><i>0.959</i></td> <td><i>0.968</i></td> <td><i>0.968</i></td> <td><i>0.935</i></td> <td><i>0.959</i></td> <td><i>0.968</i></td> <td><i>0.968</i></td> <td><i><b>0.943</b></i></td> <td><i><b>0.963</b></i></td> <td><i><b>0.969</b></i></td> <td><i><b>0.970</b></i></td> </tr> <tr> <td>0.050</td> <td><i>0.031</i></td> <td>0.028</td> <td>0.029</td> <td><i>0.049</i></td> <td><i>0.031</i></td> <td><i>0.027</i></td> <td><i>0.028</i></td> <td><i><b>0.041</b></i></td> <td><i><b>0.025</b></i></td> <td><i><b>0.024</b></i></td> <td><i><b>0.024</b></i></td> </tr> <tr> <td rowspan="3"><div align="left">OFF3</div></td> <td rowspan="3"><div align="center">PSNR↑<br>SSIM↑<br>LPIPS↓</div></td> <td>30.90</td> <td>33.86</td> <td>36.26</td> <td>36.56</td> <td><i>30.93</i></td> <td><i>33.90</i></td> <td><i>36.38</i></td> <td><i>36.63</i></td> <td><i><b>31.62</b></i></td> <td><i><b>33.91</b></i></td> <td><i><b>36.42</b></i></td> </tr> </table> <td><i><b>36.66</b></i></td> </tr> <tr> <td><i>0.928</i></td> <td>0.946</td> <td><i>0.958</i></td> <td><i>0.959</i></td> <td><i>0.928</i></td> <td><i>0.947</i></td> <td><i>0.958</i></td> <td>0.958</td> <td><i><b>0.938</b></i></td> <td><i><b>0.953</b></i></td> <td><i><b>0.963</b></i></td> <td><i><b>0.964</b></i></td> </tr> <tr> <td><i>0.052</i></td> <td><i>0.040</i></td> <td>0.037</td> <td>0.036</td> <td><i>0.052</i></td> <td><i>0.040</i></td> <td><i>0.036</i></td> <td><i>0.037</i></td> <td><i><b>0.040</b></i></td> <td><i><b>0.032</b></i></td> <td><i><b>0.029</b></i></td> <td><i><b>0.029</b></i></td> </tr> <tr> <td rowspan="3"><div align="left">OFF4</div></td> <td rowspan="3"><div align="center">PSNR↑<br>SSIM↑<br>LPIPS↓</div></td> <td><i>29.5</i></td> <td>32.98</td> <td>37.70</td> <td>38.48</td> <td>29.51</td> <td><i>32.97</i></td> <td><i>37.95</i></td> <td><i>38.59</i></td> <td><i><b>31.90</b></i></td> <td><i><b>34.61</b></i></td> <td><i><b>38.30</b></i></td> <td><i><b>38.74</b></i></td> </tr> <tr> <td>0.920</td> <td><i>0.941</i></td> <td><i>0.962</i></td> <td><i>0.964</i></td> <td>0.920</td> <td><i>0.941</i></td> <td><i>0.962</i></td> <td><i>0.964</i></td> <td><i><b>0.936</b></i></td> <td><i><b>0.953</b></i></td> <td><i><b>0.966</b></i></td> <td><i><b>0.967</b></i></td> </tr> <tr> <td><i>0.070</i></td> <td><i>0.049</i></td> <td>0.037</td> <td><i>0.035</i></td> <td><i>0.070</i></td> <td><i>0.049</i></td> <td><i>0.036</i></td> <td>0.036</td> <td><i><b>0.050</b></i></td> <td><i><b>0.036</b></i></td> <td><i><b>0.030</b></i></td> <td><i><b>0.031</b></i></td> </tr> <tr> <td rowspan="3"><div align="left">Avg.</div></td> <td rowspan="3"><div align="center">PSNR↑<br>SSIM↑<br>LPIPS↓</div></td> <td>30.62</td> <td>34.16</td> <td>37.49</td> <td>37.84</td> <td><i>30.63</i></td> <td><i>34.22</i></td> <td><i>37.71</i></td> <td><i>38.18</i></td> <td><i><b>31.83</b></i></td> <td><i><b>35.13</b></i></td> <td><i><b>38.18</b></i></td> <td><i><b>38.20</b></i></td> </tr> <tr> <td><i>0.929</i></td> <td>0.949</td> <td><i>0.964</i></td> <td><i>0.964</i></td> <td><i>0.929</i></td> <td><i>0.950</i></td> <td><i>0.964</i></td> <td><i>0.964</i></td> <td><i><b>0.939</b></i></td> <td><i><b>0.957</b></i></td> <td><i><b>0.967</b></i></td> <td><i><b>0.970</b></i></td> </tr> <tr> <td><i>0.056</i></td> <td><i>0.039</i></td> <td><i>0.032</i></td> <td><i>0.032</i></td> <td><i>0.056</i></td> <td><i>0.039</i></td> <td><i>0.032</i></td> <td><i>0.032</i></td> <td><i><b>0.043</b></i></td> <td><i><b>0.030</b></i></td> <td><i><b>0.026</b></i></td> <td><i><b>0.026</b></i></td> <div> 表 I. Replica 数据集的渲染比较。 ↓ 表示数值越小越好, ↑ 表示数值越大越好。 最佳得分以<i><b>粗体斜体</b></i>显示。 第二佳得分以<i>斜体</i>显示。 </div>
<table> <tr> <td colspan="2"><div align="center">方法</div></td> <td>R0</td> <td>R1</td> <td>R2</td> <td>OFF0</td> <td>OFF1</td> <td>OFF2</td> <td>OFF3</td> <td>OFF4</td> <td>平均</td> </tr> <tr> <td rowspan="4"><div align="left">3DGS<br><br>GeoGaussian<br>(我们的)</div></td> <td rowspan="2"><div align="center">均值 (m)<br>标准差 (m)</div></td> <td>0.026</td> <td>0.025</td> <td>0.042</td> <td>0.017</td> <td><i><b>0.019</b></i></td> <td>0.039</td> <td>0.032</td> <td>0.032</td> <td>0.029</td> </tr> <tr> <td>0.066</td> <td>0.081</td> <td>0.146</td> <td>0.050</td> <td><i><b>0.055</b></i></td> <td><i><b>0.201</b></i></td> <td>0.066</td> <td>0.112</td> <td>0.097</td> </tr> <tr> <td rowspan="2"><div align="center">均值 (m)<br>标准差 (m)</div></td> <td><i><b>0.018</b></i></td> <td><i><b>0.014</b></i></td> <td><i><b>0.015</b></i></td> <td><i><b>0.020</b></i></td> <td>0.029</td> <td><i><b>0.013</b></i></td> <td><i><b>0.018</b></i></td> <td><i><b>0.014</b></i></td> <td><i><b>0.018</b></i></td> </tr> <tr> <td><i><b>0.032</b></i></td> <td><i><b>0.016</b></i></td> <td><i><b>0.028</b></i></td> <td><i><b>0.042</b></i></td> <td>0.067</td> <td>0.024</td> <td><i><b>0.020</b></i></td> <td><i><b>0.023</b></i></td> <td><i><b>0.031</b></i></td> </tr> </table>

表 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}
}

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多