针对大场景的高斯溅射-Octree-GS学习

1.论文内容

论文标题:Octree-GS: Towards Consistent Real-time Rendering with LOD-Structured 3D Gaussians》

1.1针对的问题

在处理大型复杂场景时,由于视锥内过多的高斯基元,初始的3DGS会遇到渲染瓶颈。这一限制在缩小视图时尤为明显,可能导致不同细节场景的渲染速度不一致。

1.2实验数据集

(1)场景范围:

从复杂的室内场景、多尺度场景到大型城市场景;

(2)评价指标:

PSNR、SSIM、LPIPS+在每视图渲染过程中使用的活跃3D高斯/神经高斯的平均数量,作为渲染效率的公平指标。

1.3Octree-GS应对方案

(1)采用LOD结构的3D高斯技术,支持场景表示的细节分解;

(2)动态选择来自多分辨率锚点集中的适当级别,确保在自适应LOD调整的同时保持一致的渲染性能和高保真渲染结果。

Tips:LOD(Level of Detail)细节层次模型是一种用于描述三维模型细节的方法。LOD的最低层次包含最基本的模型信息,只包含少量的顶点和面片,通常用于在远处和低分辨率情况下呈现;最高层次则包含模型的全部细节和精度,包括每个顶点的具体位置和法线方向等信息。

1.4目前针对视图自适应的高斯溅射变体

(1)Scaffold-GS

Scaffold-GS强调的是空间结构和视角的自适应调整,其核心在于通过锚点(anchor points)结构化地组织 3D 高斯,以应对视角自适应渲染的需求。传统的 3D-GS 方法会产生大量冗余的高斯,导致渲染效率低下,尤其在大范围视角变化或无纹理区域表现不佳。Scaffold-GS 通过锚点分布高斯,并根据视点方向和距离动态预测它们的属性,显著减少冗余的高斯数量,优化场景覆盖率。它还引入了锚点的增长和修剪策略,在不牺牲渲染速度的前提下,提高了不同细节层次的表现能力。

(2)Mip-Splatting

Mip-Splatting 则关注于跨尺度的平滑渲染和抗锯齿效果,其专注于通过引入 3D 和 2D Mip 滤波器来解决高斯散射中的抗锯齿问题。传统的 3D-GS 在多分辨率下容易出现锯齿和别名效应,Mip-Splatting 结合了体积和图像空间的平滑滤波技术,实现了跨尺度的无锯齿渲染。

虽然ScaffoldGS和Mip-Splatting展示了增强的渲染,但它们仍然缺乏自适应高斯函数管理。两者在有效处理缩放轨迹和过度纹理的场景方面存在挑战

(3)Octree-GS

本文的Octree-GS方法利用一种新的空间结构在场景中锚定3D高斯,同时继承了Scaffold-GS的灵活性和鲁棒性。场景由分层锚组织以符合LOD要求,在训练期间促进对复杂或大规模场景的有效适应。使用的LOD由观测视角和场景细节的丰富度决定,为了提高对LOD设计的适应性,进一步采用了渐进式的训练策略。

1.5Octree-GS方法

Octree-GS方法采用八叉树结构从三维高斯图像中学习神经场景,并将其分层组织成多个层次。基于观看距离和场景丰富度从八叉树中自适应查询LOD水平,显著减少任何视图的最终渲染中的高斯基元数,实现一致的渲染效率。

(1)LOD结构的3D高斯函数

  • 用LOD初始化锚定高斯函数
  • 级别选择:级别边界不透明度融合

(2)自适应的锚点高斯控制

  • 锚点增长
  • 锚点修剪

(3)渐进式训练

1.6结果分析

(1)整体结果

Octree-GS方法确保了精细的尺度细节,并减少了高斯数的数量。

(2)效率分析

Octree-GS方法在近距离捕捉细粒度细节方面表现出色,同时在更大范围内保持一致的渲染速度。值得注意的是,由于我们创新的LOD结构设计,我们的渲染速度在大规模场景和极端视图序列中比最先进的方法快10倍。

(3)多分辨率结果

将观测距离乘以相应的缩放因子来处理这个多分辨率数据集。Octree GS自适应地处理改变的足迹大小,并有效地解决3D-GS和Scaffold GS固有的混叠问题。

1.7结论

(1)Octree-GS采用新颖的八叉树结构分层组织锚点高斯函数,通过解决多尺度训练图像中的LOD冲突和减少纹理丰富或缩小视图中的冗余高斯,从而克服了混叠和渲染效率低下的问题,解决了以前的限制。

(2)Octree-GS显著增强了细节捕获,同时保持实时渲染性能,而不增加3D高斯的数量。

局限性:(1)八叉树构造和渐进式训练,仍然需要超参数调优,平衡每个LOD级别中的锚点和调整迭代训练激活也很重要;(2)Octree-GS模型仍然面临对初始稀疏点云的依赖和缺乏几何支持等挑战。

2.代码结构分析

项目地址:https://github.com/city-super/Octree-GS

(1)代码结构:

  • arguments:项目运行时所需的参数文件
  • assets:项目运行时所需的静态资源文件
  • utils:包含项目中使用的各种实用工具和辅助函数
  • data:数据集
  • gaussian_renderer:高斯渲染器的相关代码
  • lpipsPtTorch:用于计算图像质量指标的代码——>感知相似度指标
  • scene:包含场景数据和相关配置文件
  • SIBR_viewers:包含用于查看和可视化结果的工具
  • submodules:包含项目的子模块
  • convert.py:用于数据转换的脚本
  • metrics.py:用于计算评估指标的脚本
  • render.py:用于渲染场景的脚本
  • single_train.sh:用于单个场景训练的脚本
  • train.py:训练模型的主脚本
  • train.sh:批量训练场景的脚本

Octree-GS 项目使用教程-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/gitblog_00563/article/details/142838812

3.实验复现

1.下载源码

git clone https://github.com/city-super/Octree-GS --recursive D:\3D_Gaussian_variants\Octree-GS\Code

2.在指定路径下创建虚拟环境OctreeGS

conda create --prefix D:\Python\CondaEnvs\OctreeGS

3.使用Git bash运行bash文件

首先需要conda init进行激活,然后重启Git bash实现虚拟环境的激活。

4.运行train.py文件,通过设置参数运行文件(以迭代训练30000次为例)

python train.py --eval -s data/mipnerf360/flowers -r -1 --gpu -1 --fork 2 --ratio 1 --iterations 30000 -m outputs/mipnerf360/flowers/baseline --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --init_level -1 --dist_ratio 0.999 --levels -1 --extra_ratio 0.25 --extra_up 0.01

5.训练中遇到的问题及解决

(1)在安装diff-gaussian-rasterization和simple-knn时出现问题:分别运行到两者文件夹,然后运行语句“pip install .”实现正确的安装;

(2)训练时出现“AttributeError:module 'numpy' has no attribute 'int'”:是scene文件夹中gaussian_model.py文件的问题,将其中的np.int改为int即可。

6.训练和渲染完成

Ps:以上是个人学习过程的记录,如果有什么问题,还请评论指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值