3D Gaussian介绍以及综述
本文最后更新于:6 个月前
Introduction
资源列表
3D Gaussian相关跟踪项目:
3D Gaussian综述以及相关项目:
- [2402.07181] 3D Gaussian as a New Vision Era: A Survey
- [2401.03890] A Survey on 3D Gaussian Splatting
3D Gaussian Splatting
3D Gaussian Splatting(SIGGRAPH2023)提出了一种新的场景表达方式,它使用3D Gaussian当作场景基元,利用众多3D Gaussian来表示场景。在训练过程中通过对3D Gaussian进行交错优化和致密化,以实现场景的准确表示。在渲染方面,开发了一种支持3D Gaussian的可微光栅化器。
3D Gaussian
Splatting能够在较少训练时间的情况下同时保持优秀的渲染质量,最重要的是允许在1080p分辨率下进行高质量实时(
模型架构
3D Gaussian
Splatting的总体流程如下,这里可以进行简单描述。首先,通过SfM来处理场景的多张图片,输出初始点云。将点云中的每个点作为中心点,将其初始化为3D
Gaussian,每个3D
Gaussian还具有其他可优化的参数。给定一个视角,我们可以将3D
Gaussian投影到2D,通过球谐函数得到相应的颜色,然后进行

上面简单介绍了模型的全流程,下面对其中的不同组件进行介绍。
3D Gaussian 基元
论文中使用3D Gaussian作为场景基元,每个3D
Gaussian的可优化参数包括位置position(对应Gaussian的均值)
4元数提供了一种有效的方法,来处理三维空间旋转和定位问题。与欧拉角相比,四元数避免了万向锁问题,并且在计算上比旋转矩阵更高效、更紧凑。通过四元数可以实现平滑的插值和连续的旋转。
4元数认为三维空间中的旋转可以通过一个实部和三个虚部来定义,形式上为
。在旋转中,实部 表示旋转的角度,而虚部 表示旋转轴的方向。详细理解可以参考:四元数如何控制物体旋转? bilibili
自适应致密化
从初始化开始,我们只有经过SfM得到的一些初始化点,在后续的流程中,3D
Gaussian
Splatting会自适应地增加高斯密度,以更好地捕捉场景细节,即自适应致密化。具体来说,它会在重建不足的区域进行Gaussian的克隆,在过度重建的区域进行Gaussian的分裂。这两者在反向传播过程中都表现出较大的空间位置梯度。对于重建不足的小Gaussian,会沿着梯度方向创建出相同大小的小Gaussian;对于过度重建的大Gaussian,会将其分割成更小的Gaussian,大小除以某个尺度因子
以上致密化的过程会周期性进行(在预热之后,每100次迭代进行一次致密化),同时在致密化过程中会删除几乎透明的Gaussian(

可微分光栅化
本部分介绍3D Gaussian中的可微分光栅化过程。考虑在空间中已经有很多3D Gaussian,可微分光栅化完成的工作就是在给定视角的情况下,将这些3D Gaussian转化为图像。

对于众多的3D Gaussian,首先需要将它们投影到2D图线空间中,形成多个2D
Gaussian,这个步骤被称为Splatting。对于每个3D
Gaussian,设其中心点为
首先,论文将图像分为很多的patch(原论文中称为tile),每个patch的大小为
每个Patch和像素的渲染都是独立发生的,这使得过程非常适合并行化。具体来说,3D
Gaussian的项目对将该过程在GPU上进行优化,由GPU的Block来执行每个Patch的渲染,同时由Block中的每个Thread来执行每个Pixel的渲染。由于每个Block具有共享内存,这使得整个过程会非常高效。对于每个像素(每个Thread),当透明度
其他细节
3D Gaussian Splatting的整体流程中,还有一些其他的细节:
- 损失函数使用L1 Loss和SSIM Loss:
- 在点剪枝阶段,会去除多余的或者影响较小的Gaussian,包括几乎透明(
低于指定阈值)的高斯、在空间中过大的高斯、在空间中具有较大足迹的高斯等。在某种程度上可以视为正则化过程 - 为了防止摄像机附近Gaussian密度的不合理增加,会周期性将Gaussian的不透明度设置为接近于零。这种方式能够控制使得必要Gaussian的密度增加,同时剔除冗余的Gaussian。有助于节省计算资源,同时确保模型中的Gaussian更加精确和有效地表示场景
- 在优化过程中会有一个“warm up”过程,该过程中使用较低的分辨率进行计算。具体来说,首先使用4倍小的分辨率进行优化,并且分别在迭代250次以及500次时进行两倍上采样
在代码实现中,Gaussian的的实现是基于点云完成的。点云中的每个点都存储了相关属性。其中有关球谐函数的系数,包括了属性f_dc_0,f_dc_1,f_dc_2表示RGB的0阶系数,f_rest_0~f_rest_14, f_rest_15~f_rest_29, f_rest_30~f_rest_44分别表示RGB的剩余球谐系数。
简单总结
3D Gaussian Splatting提出了一种新的场景表征方式,它使用众多3D Gaussian来表示场景,同时使用可微分光栅化来渲染图像。这种方式提供了更快的训练和渲染速度,同时能够保持优秀的渲染质量。
3D Gaussian的优点:
- 能够生成高品质、逼真的场景
- 可以进行快速、实时的渲染
- 更快的训练速度
3D Gaussian的缺点:
- 在模型优化过程中,会出现“破碎”的Gaussian,包括太大、太长、冗余等
- 在训练过程中需要更多的显存
- 单个场景需要更多的磁盘占用空间
- 与现有的渲染管线不兼容
3D Gaussian Splatting的相关项目地址:
相关Survey
本部分主要记录在3D Gaussian相关Survey中提到的改进方向以及相关工作等,所参考的Survey分别是:
常用数据集

相关工作
对3D Gaussian相关工作进行分类:

Gaussian本身的优化
- 在提高3DGS的内存效率
- Scaffold-GS(CVPR2024):使用锚点来分布局部3D Gaussian,并根据视锥体内的观察方向和距离动态预测相关属性,能够做到更快收敛、更少基元和更好的视觉质量
- Compact 3D Gaussian(CVPR2024):Gaussian的压缩
- 进一步提高渲染图像的质量,解决锯齿和伪影问题
- Mip-Splatting(CVPR2024):借助3D平滑和2D Mip实现抗锯齿渲染
- GaussianShader: 提出了一种在3D Gaussian上应用着色函数的方法,增强镜面特征和反射表面的场景
- Relightable 3D Gaussian: 提出了一种新的基于点的渲染框架,用于从多视图图像中进行材质和照明分解
- GaussianPro: 利用渐进传播策略来指导3D Gaussian的致密化,利用场景的现有重建几何形状的先验以及PatchMatch技术来生成具有准确位置和方向的新Gaussian
- 原始的3DGS需要大量的训练图像,降低合成新视角的图像成本则是希望能够在较少训练图像上得到优秀的场景表征
- DepthRegGS:使用少视图来优化Gaussian,其中使用深度图(由与训练的单目模型获得)作为指导和约束
- FSGS:少视图(3个训练视图)的实时场景视图合成
- SparseGS: 少视图Gaussian
- 可能改进:改进3D Gaussian的致密化方式、利用几何信息提高渲染质量
- 动态场景的表征
- 4D Gaussian Splatting(CVPR2024): 基于3D Gaussian完成动态场景的表征,将空间和时间作为一个整体进行建模
- 4D Gaussian Splatting(ICLR2024):提出了一种用于实时3D动态场景渲染的新框架
- DynMF:提出一种功能紧凑而高效的表达方式,将动态场景分解为若干神经轨迹
- PhysGaussian(CVPR2024):将牛顿动力学集成到3D Gaussian中,实现高质量的运动合成
- Deformable 3D Gaussians(CVPR2024): 提出了一种可变形的3D Gaussian分布方式。该方式使用显式3D Gaussian重构场景,并通过变形场来学习处于规范空间内的Gaussian,来对单目动态场景进行建模
重建 Reconstruction
- 表面mesh重建:利用3D Gaussian来完成表面mesh提取
- SuGaR(CVPR2024):结合正则项来促进高斯和场景表面之间的对齐,然后使用泊松重建从高斯中导出mesh网格
- NeuSG:引入尺度正则化器,通过强制3D Gaussian变得非常薄,将其中心拉近表面
- 可能改进:对于表面网格提取,引入光照分解的方法可能可以提取更真实的表面纹理
- Few-shot重建:从少量图片中重建3D场景,要求模型具有泛化性
- pixelSplat:从两个输入视图来推断3D Gaussian场景
- TriplaneGaussian:使用混合表示来从单视图中重建3D场景,该混合表示结合了显示的点云和隐式的三平面场
- Splatter Image(CVPR2024):一种非常快速的单目3D对象重建方法
Gaussian的编辑和操作
- GaussianEditor(CVPR2024):一种基于3D Gaussian的3D编辑算法
- Control4D(CVPR2024):提出了一种使用文本指令来编辑4D肖像的框架
- SC-GS(CVPR2024): 提出了一种新的表示,将动态场景的运动和外观分别显式地分解为稀疏控制点和密集高斯
- CoGS:一种可控的Gaussian Splatting方法,可以直接操纵场景元素,提供动态场景的实时控制
生成 Generation
- GaussianDreamer(CVPR2024): 提出一种快速的3D对象生成框架,通过3D Gaussian来连接2D和3D扩散模型,可以在短时间内生成高质量的3D实例
- GSGEN(CVPR2024): 使用3D Gaussian来完成文本到3D对象的生成
- AGG: 设计了一种级联的生成pipeline,可以做到泛化性地物体生成,无需针对每个实例进行优化
- LucidDreamer(CVPR2024): 提出一种称为Interval Score Matching(ISM)的方法,解决了SDS(Score Distillation Sampling)会带来的过度平滑的问题
- DreamGaussian(ICLR2024): 基于3D Gaussian的3D内容生成框架
- Align Your Gaussians: 允许生成动态的3D内容
- 4DGen: 使用静态3D资源和单目视频序列来构建4D内容
- DreamGaussian4D: 在Gaussian Splatting中显式建模空间变换来完成图像到4D的生成
- Efficient4D: 利用视频来生成4D对象
感知 Perception
- Open-vocabulary semantic object detection and
localization:开放词汇语义对象检测和定位
- LEGaussians(CVPR2024): 提出了Language Embedded 3D Gaussian,一种用于开放词汇查询任务的新颖场景表示
- FMGS: 集成了用于Language Embedding的多分辨率hash encoding以及用于场景表征的3D Gaussian
- 3D Segmentation
- 2D-Guided 3D Gaussian Segmentation: 利用2D分割来监督3D Gaussian的分割
- Gaussian Grouping: 利用SAM的2D Mask预测以及3D空间一致性监督,实现了3D场景中Gaussian的分割
- Segment Any 3D Gaussians: 将SAM与3D Gaussian进行集成,实现3D交互式分割
- Feature 3DGS(CVPR2024): 在3D Gaussian上增加特征字段,并利用2D基础模型来监督学习特征字段
- Segment Anything in 3D Gaussians: 在3D Gaussian中完成对象分割,同时不需要任何训练过程或可学习参数
- Tracking:动态物体的跟踪
- DrivingGaussian(CVPR2024): 利用3D Gaussian重建动态的大规模驾驶场景
- Street Gaussians: 利用单目视频对动态城市街景场景进行建模
- SLAM
- GS-SLAM: 在SLAM中利用3D Gaussian
- Gaussian Splatting SLAM(CVPR2024): 使用3D Gaussian,利用单个移动的单目或RGB-D相机进行增量3D重建
- SplaTAM: 使用位姿未知的单目RGB-D相机来实现密集SLAM
虚拟人 Virtual Humans
- Human Gaussian Splatting: 利用3D Gaussian,从多视图视频中学习逼真的人体头像
- HUGS: Human Gaussian Splats: 利用单目视频来重建人体和静态背景
- Human101: 利用单目视频完成快速重建和实时渲染
- 3DGS-Avatar(CVPR2024): 利用单目视频,来分别建模人体以及布料变形,训练时间短,交互式渲染帧率高
- GaussianAvatar(CVPR2024): 使用3D Gaussian来联合优化运动和外观
- GauHuman: 从SMPL的LBS权重开始,使用有效的姿态细化模块来纠正SMPL姿态
- GaussianAvatars(CVPR2024): 将3D Gaussian绑定到参数化可形变面部模型上,在表情、姿式和视角方面完全可控
- HeadGaS: 利用3D Gaussian来进行3D头部动态重建
- PSAvatar: 使用基于点的可变形形状模型,不仅可以重建面部结构,还可以重建复杂的几何形状,例如眼镜和发型等
- Gaussian Head Avatar(CVPR2024): 使用3D Gaussian以及基于MLP的变形场来进行头部重建,避免了LBS的有限表达能力
改进方向/Feature
- 处理3D Gaussian中的漂浮元素(Floating Elements):通过透明度阈值过滤Gaussian/增加正则项使得这些Floating Elements靠近表面
- mech重建:如何利用3D Gaussian来增强或者补充其他的多视图重建技术
- 渲染的真实性:考虑结合MVS等方法,提高几何精度
- 实时渲染:进一步提高3D Gaussian渲染的速度
- 少样本3D Gaussian:如何利用少样本来学习3D Gaussian
- 镜面反射与非镜面反射区域的区分
- 生成更加具有真实性的3D对象和场景
- 将大模型(例如LLM、SAM等)与3D Gaussian进行集成
- 将3D Gaussian作为工具来完成其他相关任务