3D Gaussian Splatting 论文学习

概述

目前比较常见的渲染方法大致可以分为2种:

  1. 将场景中的物体投影到渲染平面:传统的渲染管线就是这种方式,主要针对Mesh数据,可以将顶点直接投影成2D的形式,配合光栅化、深度测试、Alpha混合等就可以得到渲染的图像。
  2. 从相机到像素发出一条射线与场景物体交互去计算沿着射线的颜色积分:例如光线追踪,去计算光线和Mesh的光学行为(反射等)来得到像素的颜色值;或是体渲染,对于体数据或是隐式的场景表达(NeRF)通过采样的方式来计算一个光线上的离散的积分,得到最终的颜色。

隐式的场景表达因为其连续性天然具有可微性,比较适合放在优化框架中去使用,但是在渲染时由于需要随机采样,会浪费大量时间在无效的采样点上。3D高斯这个方法则结合了连续可微和投影后光栅化渲染的优势,实现了高质量的实时渲染效果。

接下来我以一些关键知识点为章节来进行总结:

3D高斯表示

3D高斯实际上就是点云+概率密度,使得场景离散化表示的同时对不存在顶点的空间有了连续的颜色变化。一个高斯球的数学形式可以表示为
G(x)=exp⁡(−12(x−μ)TΣ−1(x−μ)) G(x)=\exp{(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu))} G(x)=exp(21(xμ)TΣ1(xμ))
其中Σ\SigmaΣ是协方差矩阵,μ\muμ是高斯球的重心坐标(均值)。论文中省略了高斯分布的归一化系数,这是因为我们并不需要得到严格的概率分布,只需要表达对空间的相对影响就行了。协方差矩阵Σ\SigmaΣ是一个正定对称矩阵,是场景学习时的优化参数,如果直接优化一个3x3的矩阵很难满足高斯分布的性质,因此往往将其分解为旋转矩阵RRR和缩放矩阵SSS,即
Σ=RSSTRT \Sigma=RSS^TR^T Σ=RSSTRT
然后缩放用一个三维的向量表示,旋转用一个四元数表示。

以上的概率分布实际上定义了一个类似“椭球”的形状,用来表示某个高斯球对空间的影响程度,除此之外对每个高斯球还需要不透明度α\alphaα和颜色信息。不透明度好理解,一个[0,1]的浮点数,深度排序后用来影响颜色的混合。而颜色信息,论文中用了四阶球谐函数(0, 1, 2, 3,每个颜色分量对应16个参数)来表示。因为我之前对球谐函数不太了解,所以这里简要总结一下球谐函数:

球谐函数(Spherical Harmonics),可以用来拟合球面函数ρ=f(θ,ϕ)\rho=f(\theta,\phi)ρ=f(θ,ϕ)。实际上球谐函数就是一组基函数,怎么理解基函数呢?类似傅里叶展开的基函数为{sin(pθ),cos(qθ)}\{sin(p\theta),cos(q\theta)\}{sin(),cos()},用他们的线性组合可以拟合任意一个周期函数;也类似我们刚接触机器学习的欠拟合和过拟合时都会遇到的例子,用多项式去拟合数据点,也可以把{1,x,x2,…,xk}\{1,x,x^2,\dots,x^k\}{1,x,x2,,xk}作为基函数,每个基函数前面乘的参数作为可学习的参数。

而用于拟合球面函数常用的基函数就是球谐函数
Sml(θ,ϕ), −m≤l≤m S_m^l(\theta,\phi), \ -m\le l\le m Sml(θ,ϕ), mlm
它的具体形式就不展开了,需要再查吧,总之对于一个mmm阶(m≥0m\ge0m0)的球谐函数,它有2m+12m+12m+1种变化。而对于一个任意的球面函数f(θ,ϕ)f(\theta,\phi)f(θ,ϕ),我们用kkk阶球谐函数去拟合的方式为
f(θ,ϕ)=∑m=0k∑l=−mmCmlSml(θ,ϕ) f(\theta,\phi)=\sum_{m=0}^k \sum_{l=-m}^m C_m^l S_m^l(\theta,\phi) f(θ,ϕ)=m=0kl=mmCmlSml(θ,ϕ)
注意我这里的阶数是从0开始的。需要学习的参数是CmlC_m^lCml,总共有(k+1)2(k+1)^2(k+1)2个。

对于某个高斯球的颜色RGB,论文中每个分量用一个3阶(或者说是4阶,看从0还是1开始)球谐函数表示,总共48个参数,这样就可以根据任意视角(θ,ϕ)(\theta,\phi)(θ,ϕ),查询这个高斯球的颜色了。

综上所述,每个3D高斯球有以下几个属性:

  • 位置:(x,y,z)(x,y,z)(x,y,z)
  • 缩放向量,四元数:表示高斯分布的协方差矩阵
  • 不透明度:opacity α\alphaα
  • 颜色:球谐函数拟合C(θ,ϕ)C(\theta,\phi)C(θ,ϕ)

图片渲染

假设所有的高斯球已经训练好,要怎么渲染成2D的图像呢?前面也讲到过,像NeRF是发射光线,然后沿着光线进行采样对颜色做离散积分,如果套用到3D高斯的话,就要在光线路径上采样,然后计算所有(或者附近)的高斯球在该采样点的颜色。然而论文方法名称里叫“Splatting”,顾名思义就是“溅射”,或者说是“抛雪球”,比较形象的解释了高斯球的渲染方式:直接投影到2D。

给定一个视图变换(世界坐标到相机坐标)矩阵WWW,相机坐标下某个高斯球的协方差矩阵为
Σ′=JWΣWTJT \Sigma'=JW\Sigma W^TJ^T Σ=JWΣWTJT
其中JJJ为投影变换的仿射近似的雅各比矩阵,假设投影变换x′=p(x)x'=p(x)x=p(x),那么 J=∂p∂μJ=\frac{\partial p}{\partial\mu}J=μp ,投影变换就可以近似为 x′=p(μ)+J(x−μ)x'=p(\mu)+J(x-\mu)x=p(μ)+J(xμ) 。其实就是把一个非线性的投影变换近似成一个线性变换,使得3D高斯投影后还是一个2D高斯。

至此,图片的渲染就可以对每个像素点,按照距离(深度)对所有高斯球排序,然后根据深度和不透明度以及二维高斯分布计算累加的颜色。论文还提出了一种加速方式,就是将图片分为16x16的小块,每一块按照一定置信度找到受影响的所有高斯球进行排序,后续就不再对每个像素单独排序了,并且每个小块只计算被影响的高斯球的颜色叠加。这样GPU上的每个Block处理一个小块,共享内存,每个Thread再处理一个像素点,光栅化过程就会非常非常快。

训练策略

训练流程如下图所示

image-20240910144820202

先用SFM(Structure From Motion,例如Colmap)将多视角图片转为点云,然后进行高斯球的初始化,然后再进行迭代训练以及进行高斯球密度的调整。

高斯球密度调整策略一般每过一定迭代次数调整一次,大致类型如下:

  1. 对于不透明度低于一定阈值的高斯球,直接删除(说明是空的,对应区域没有物体);
  2. 对于位置梯度(也就是对高斯球中心坐标那三个参数求导)过大的区域,可能有两种情况:
    1. 欠拟合:说明高斯球无法很好的填充周围的空白区域,于是克隆一个新的相同的高斯球;
    2. 过拟合,高斯球填满了周围的区域,还溢出了很多,于是分割成两个更小的高斯球

总结

相较于NeRF,3D高斯确实在保证质量的情况下,速度快很多,基本能够达到实时的渲染,并且训练时间也不长(半小时左右)。不过3D高斯是显式的表示,占用的内存和显存更高,保存场景时占用的空间比NeRF高了2个数量级。

<think>好的,用户想寻找与3D高斯点绘技术相关的招聘信息。首先,我需要明确3D Gaussian Splatting的具体应用领域和技术特点,这样才能知道哪些行业或公司可能招聘相关人才。 根据提供的引用资料,3D Gaussian Splatting在SLAM(同步定位与地图构建)和自动驾驶中有应用,比如Gaussian-SLAM项目实现了高真实感的密集SLAM[^1]。此外,该技术也用于三维显式几何表达,与传统的三角网格相比,能避免维度爆炸问题,适合需要高效渲染的场景,如游戏和虚拟现实[^3]。还有复现该技术需要安装FFmpeg等工具,可能涉及计算机图形学开发[^4]。 接下来,我应该考虑用户可能的背景。用户可能具备计算机图形学、计算机视觉或相关领域的知识,正在寻找职位。他们可能需要具体的招聘平台、公司或技能建议。用户可能没有明确说出的是,他们想了解如何提升自己的竞争力以申请这些职位,或者哪些公司正在积极采用这项技术。 然后,需要生成相关问题,帮助用户进一步探索。比如,技术应用领域、所需技能、招聘平台、公司类型以及如何提升竞争力。这些问题应该覆盖用户可能关心的各个方面,而不仅仅是直接回答招聘信息。 最后,确保回答结构清晰,引用正确,并且使用正确的中文和LaTeX格式。比如,提到均值$\mu_x, \mu_y, \mu_z$和标准差$\sigma$时使用行内公式[^2],保持专业性的同时易于理解。</think>### 关于3D高斯点绘技术(3D Gaussian Splatting)的招聘信息与建议 #### 技术应用与行业需求 3D高斯点绘技术(3D Gaussian Splatting)是一种基于概率分布的三维数据表达与渲染方法,其核心是通过高斯分布(如均值$\mu_x, \mu_y, \mu_z$和标准差$\sigma$)描述三维空间中的数据分布。相比传统的三角网格,它能更高效地处理密集数据渲染,并避免维度爆炸问题,因此在以下领域有广泛应用: 1. **SLAM与自动驾驶**:用于高真实感地图构建(如Gaussian-SLAM项目)[^1]。 2. **游戏与虚拟现实**:替代传统三角网格,提升渲染效率与视觉效果[^3]。 3. **计算机图形学开发**:涉及复现与优化技术(如依赖FFmpeg等工具链)。 #### 招聘信息获取渠道 1. **科技公司官网**: - **自动驾驶领域**:Waymo、Cruise、特斯拉等公司的计算机视觉/三维重建相关岗位。 - **游戏与VR/AR领域**:Unity、Epic Games(Unreal Engine)、Meta(Reality Labs)等。 - **图形学工具开发**:NVIDIA(Omniverse)、Autodesk等。 2. **专业招聘平台**: - **LinkedIn**:搜索关键词“3D Gaussian Splatting”“Point-Based Rendering”“Neural Rendering”。 - **Glassdoor/Indeed**:关注“Computer Vision Engineer”“3D Graphics Researcher”等职位。 - **学术与工业界会议**:SIGGRAPH、CVPR等会议的招聘板块。 3. **学术界与开源社区**: - 参与开源项目(如3D Gaussian Splatting复现)可接触相关团队。 - 高校实验室(如计算机图形学/机器人方向)可能招聘研究人员。 #### 技能要求(典型岗位) - **核心技术**:熟悉3D高斯点绘原理、概率模型优化、实时渲染算法。 - **编程能力**:C++/Python、CUDA/OpenGL、PyTorch/TensorFlow。 - **工具链**:FFmpeg、点云处理库(Open3D、PCL)。 - **加分项**:SLAM/自动驾驶项目经验、SIGGRAPH/CVPR论文。 #### 示例岗位(虚构) ```plaintext 职位名称:3D渲染算法工程师 公司:某自动驾驶科技公司 要求: 1. 开发基于3D Gaussian Splatting的高效地图渲染系统。 2. 优化高斯分布参数(μ, σ)的实时计算性能[^2]。 3. 与SLAM团队协作,提升稠密地图重建精度[^1]。 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值