3D Gaussian Splatting for Real-Time Radiance Field Rendering 阅读笔记

这篇具有很好参考价值的文章主要介绍了3D Gaussian Splatting for Real-Time Radiance Field Rendering 阅读笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

感谢B站意の茗的讲解。
论文地址:https://arxiv.org/abs/2308.04079
项目主页:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

概述

  • 从已有点云模型出发(sfm),以每个点为中心建立可学习的3D高斯表达,Splatting方法进行渲染,实现高分辨率实时渲染。(推动NERF加速方向)
  • 能用训练好的点云在windows上进行实时渲染。随机初始化点云,不提供初始点云也行,在训练过程中可以对点云进行生长和修剪。(一般NeRF需要从COLMAP计算相机位姿,此时已经得到初始点云。)
  • 用instant-NGP的速度,实现了mid-nerf360的渲染质量。
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

总体介绍

1、文章简介(主要思想和贡献)

  • 引入了一种各向异性(anisotropic)的3D高斯分布作为高质量、非结构化的辐射场表达。
    从sfm点云出发,以每个点为中心生成3D高斯分布。
    各向异性:从各个方向上看过去长得都不一样,即把一个点往不同相机位姿上投影的时候投出的样子不一样。
  • 实现了使用GPU进行快速可微的渲染,允许各向异性的拋雪球(Splatting)和快速反向传播。
    抛雪球Splatting:图形学中用三维点进行渲染的方法,将三维点视为雪球往图像平面抛,雪球在平面留下扩散痕迹,这些点的扩散痕迹叠加在一起构成最后的图像。
    是一种方便的针对点云的渲染方法,是渲染速度比NeRF快的原因。
  • 提出了针对3D高斯特性的优化方法,并同时进行自适应密度控制。
    储存在点里的高斯函数,需要在反向传播的时候进行优化更新。根据梯度自适应调整点云分布(Adaptive Density
    Control部分)。 若某点3D高斯太大,不能拟合此处细节,则对其进行分割,用两个点表达。
    若某位置点太多太密集,用不到太多的3D高斯,则将这些吞并为一个3D高斯。

2、预备知识(3D高斯的公式推导)

  • 一维高斯分布的概率密度函数:x服从均值μ方差σ2的高斯分布
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 扩展到三维高斯分布的概率密度函数:假设a,b,c均服从0,1正态分布,且相互独立
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 对于一般的情况(注意粗体是向量,斜体是标量) 给出一个3*1向量x=[x,y,z]T,其中想,y,z可能并不是独立同分布,因此做线性变换。
    把均值不一定为0的,方差不一定为1(不满足上述N(0,1))的[x,y,z]T,变换到均值为μ方差为1的[a,b,c]T。 矩阵表示:
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

    其中,均值向量的E(x)为x的均值。 (x-μ)表示x,y,z减去各自的均值,即将数据分布中心化。

  • 变换矩阵A对[x,y,z]进行线性组合,让[x,y,z]变成[a,b,c] 变换后带入到上式p(v)中,即
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 转化为x的概率密度函数 两边积分
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

    dv换成dx:求雅克比矩阵,把dv里的v换成包含x的表达式
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

    so,向量x的概率密度函数
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 1维高斯用均值和方差表示->多维高斯用均值向量(μ)和协方差矩阵表示。

  • 把变换矩阵A转化成协方差矩阵(对称矩阵,能进行特征值分解)。

  • 矩阵U的每一列都是相互正交的特征向量,单位向量。Λ矩阵对角线元素是协方差矩阵的特征值(矩阵论内容)。

    3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 一组正交基乘一个对角阵,构成线性变换
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 变换矩阵A=UΛ{1/2},协方差矩阵Λ=AT(UU^T=I)

  • 完整的3D高斯概率密度函数(椭球,形状有Σ决定)
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

3、相关工作(point-NeRF和Plenoxels)

从CG角度,梳理了基于点的渲染方法
与NeRF相关的两个工作:

3.1 Point-NeRF:第一个用点云做NeRF的工作

3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 从点云出发构建辐射场(同3DGS),然后为每个点提取一个特征(特征向量),存储在点里。
  • 体渲染:从相机光心发出的穿透像素的采样射线,采样射线上取采样点,采样点周边一定范围内的三维点的特征向量被取出来之后做插值,得到采样位置的特征表达,将这个特征解码得到采样位置的颜色和体密度。堆叠整条射线上的点,得到像素RGB的值。(NeRF常见思路)
    3D高斯从CG出发,点里存储物理含义更加明确的3D高斯,避开了Point-NeRF对抽象特征的学习过程,从而让训练更加收敛
    渲染方面,3D高斯的Splatting更传统,效率更高。Point-NeRF浪费了点云携带的精确几何信息,存储的特征向量表征了点的空间信息,但插值,MLP之后可能会拟合出一个不符合实际情况的几何构造出来(空间信息储存在抽象特征中),不像高斯分布有明确的几何中心(三维点峰值,告诉系统这有很高的不透明度)。
    3D高斯比Point-NeRF,点云对整个模型起到的锚定作用更强,最大程度上用到初始
  • 点云表达的空间几何信息。 自适应点云生长和剔除

3.2 Plenoxels(没有神经网络的辐射场)

3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 同样继承很多NeRF要素(体素、三线性插值、体渲染)
  • 体素格点存储球谐函数(spherical harmonic)系数,系数做插值得到采样位置的球谐函数。
  • 抛弃了常用的MLP和隐式特征,用更显式的CG的球谐函数。3DGS同用传统但高效的方法,提高模型表达能力的下线,并结合可微和可学习思想,拉高模型拟合的上限。

具体方法

1、可微的3D高斯Splatting

1.1 每个点存储数据

  • Position(Mean):点的位置xyz,也是3D高斯分布的均值向量。
  • Covariance matrix:协方差矩阵,决定高斯(绿色椭球)形状和方向。
  • Opacity α :不透明度,用于渲染Splatting把它往图像平面上投的时候,扩散痕迹通过不透明度叠加在一起。
  • Spherical harmonics:球谐函数,拟合视角相关的外观。用一组正交基的线性组合来拟合光场。

1.2 为什么选择3D高斯

需要选择一种图元能够在拥有场景表达能力的同时可微,而且显式地支持快速渲染。3D高斯点云里的参数可以再迭代优化的过程中更新,并且能够容易地用splat的方法投影到2D图像,做很快的α混合(渲染)。
其他人构建辐射场的方法:把每个点视为带方向的小平面,但方向需要准确的表面法向量信息,难以从稀疏的sfm模型中得到精确地法向量。(3DGS不需要法向量)

1.3 3D高斯的定义:协方差矩阵控制3DGS的形状

相较于前面推导的表达式:

  • 去掉了均值μ:因为高斯分布以点为中心,xyz均值就在点上,已经中心化了。所以将均值设为0。
  • 去掉了exp前面的系数:系数为了控制整个概率密度函数积分为1,但此处不需要,而是让整个分布的大小自由控制。

协方差矩阵的物理含义:为什么这个矩阵能够控制3DGS的形状(下面例子是二维的,实际是三维)
3d gaussian splatting for real-time radiance field rendering,笔记,3d

A为线性变换,把任意一个分布变换到均值μ方差1的范围内,如图所示(二维分布,先y方向压缩,再绕原点旋转一定角度)
3d gaussian splatting for real-time radiance field rendering,笔记,3d

因此矩阵A构造:变换矩阵A=旋转矩阵R*缩放(尺度变换)矩阵S
3d gaussian splatting for real-time radiance field rendering,笔记,3d

  • 优化:在迭代优化过程中,优化矩阵A的内容,即可改变高斯椭球的形状、大小、方向等几何外观(点里存储的数据),从而使它在Splatting的时候投影出正确的效果。

    旋转矩阵的优化:不适合直接让3*3的旋转矩阵参与优化,因此用四元数参与优化并转化。将参数从9个降低到4个,而且能保持协方差矩阵的半正定性质,同时四元数方便插值。

  • 求导:如何让矩阵A对尺度s和四元数q求偏导?论文附录有推导过程。

  • 渲染:椭球怎样投影成平面的图像?CG有深入研究,对协方差矩阵做变换即可,文中引用的01年文献有说明。

2、优化与自适应密度控制

2.1 优化

  • 每个点里存储的上述四个数据都要参与优化。
  • 优化策略:随机梯度下降(Stochastic Gradient Descent)
  • 自写CUDA核心加速
  • 快速光栅化,提高效率
  • Sigmoid和Exponential激活函数:Sigmoid函数限制不透明度在[0,1)之内;协方差矩阵里的尺度用指数激活函数(常规细节)。
  • 损失函数: L1 loss,渲染图像和GT图像求光度误差,按一定比例λ加上SSIM结构相似性的误差。
    3d gaussian splatting for real-time radiance field rendering,笔记,3d

3d gaussian splatting for real-time radiance field rendering,笔记,3d

小实验:用3DGS这种紧凑的表达方式,确实能在优化之后拟合复杂的几何细节。
渲染了一张图像后把3DGS Shrink,收缩到原来的60%,细节仍然在(但也可能是点云的功劳)。

2.2 点云密度自适应控制

  • 使系统能够从稀疏的,质量不高的初始点云,甚至是随机初始化的点云里拟合出比较好的模型。
  • 每隔一定迭代次数,移除不透明度α小于阈值(接近透明)的点。
  • 对重建不充分的区域进行处理:往往有较大的梯度。 欠重建Under-reconstruction:clone
    过重建Over-reconstruction:split
    判断重建是否充分的依据:梯度。更新点的位置的时候如果梯度太大,说明这个位置误差比较大,需要修正的量比较大。梯度超过阈值,执行densify操作。
    在第一行克隆的过程中按梯度方向安置新的点。 怎么区分上述两种情况:方差大,说明这个3DGS很大,需要分割;方差小,,,克隆。
    3d gaussian splatting for real-time radiance field rendering,笔记,3d
  • 靠近相机的地方可能学出一些floaters(可能是漂浮的一些东西),属于模型的错误重建。因此周期性的把不透明度重置为0,去除floaters,后续学习中真正要用到的点的不透明度将会回到正确的值,不用的不透明度太低的点会被剔除。
  • 周期性移除较大的高斯用于避免重叠。

3、快速可微光栅化

Tile-based Rasterizer(渲染不仅仅是splatting)

  • 把整个图像分为16*16个tiles(区块),每个tile视锥内挑选可视的3DGS。
  • 对于每个视锥内只取置信度大于99%的高斯,实例化为一个个高斯对象,包含所在tile的id以及对应视域下的深度,并按深度排序。(不需要逐像素地进行排序,突破了传统光栅化的瓶颈)
  • 排序之后,按这些GS到图像平面的深度值的排序顺序,从近到远往对应的tile上做splat。把splat留下的痕迹做堆叠累积,直到不透明度饱和(为1)。每个tile单独开一个线程块,可以认为所有tile上的光栅化(从堆叠的splat痕迹中去划分像素网格,生成像素值)是并行运行的。
  • 有像素的不透明度达到饱和,就停止对应的线程。(而不是所有像素都饱和之后才停止,加速)
  • 渲染完图像,求出误差反向传播的时候,就可以根据刚才的排序来找到需要优化的GS。在tile的尺度上回溯做了splat的点。(之前的工作中,这种像素误差传递需要对每个像素记下哪些点位颜色做了贡献。)之前的NeRF方法为了加速训练过程中的渲染往往不会做全图的渲染,而是随机选取一定数量的像素点采样来求误差。而本文每次迭代都在做全图的渲染,因此图像会有更高的收敛速度和更高的训练效率。

总结流程:
3d gaussian splatting for real-time radiance field rendering,笔记,3d文章来源地址https://www.toymoban.com/news/detail-793453.html

  1. 从初始的sfm点云出发,以每个点为中心生成3DGS。
  2. 用相机参数把点投影到图像平面上(splatting)。
  3. 从splatting的痕迹中tile-based光栅化,得到渲染图像,将渲染图像和GT求LOSS,反向传播。
  4. 自适应的密度控制模块根据传递到点上的梯度,来决定是否需要对3DGS做分割或者克隆。梯度传递到3DGS里面对其存储的那几个参数进行更新。

到了这里,关于3D Gaussian Splatting for Real-Time Radiance Field Rendering 阅读笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 3DGS 其一:3D Gaussian Splatting for Real-Time Radiance Field Rendering

    3DGS 其一:3D Gaussian Splatting for Real-Time Radiance Field Rendering

    Reference: 深蓝学院:NeRF基础与常见算法解析 GitHub: gaussian-splatting 原文官网 A Survey on 3D Gaussian Splatting 开始弃用NeRF?为什么Gaussian Splatting在自动驾驶场景如此受欢迎? 相关文章: NeRF 其一:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis NeRF 其二:Mip-NeRF NeRF 其三:In

    2024年01月18日
    浏览(31)
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering(论文中代码复现)

    3D Gaussian Splatting for Real-Time Radiance Field Rendering(论文中代码复现)

    3D Gaussian Splatting for Real-Time Radiance Field Rendering https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/ 主要研究方法是使用3D高斯光点绘制(3D Gaussian Splatting)方法进行实时光辐射场渲染。该方法结合了3D高斯场表示和实时可微分渲染器,通过优化3D高斯场的属性和密度控制,实现了高质

    2024年02月03日
    浏览(23)
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程

    3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程

    graphdeco-inria/gaussian-splatting: Original reference implementation of “3D Gaussian Splatting for Real-Time Radiance Field Rendering” (github.com) 以下是最初电脑所安装的内容: Anaconda3 2022.10-Windows-x86_64 CUDA 电脑只支持11.6,所以装的是11.6版本。 使用git去克隆repository 尽管挂了梯子,但是还是需要多次刷

    2024年02月05日
    浏览(7)
  • GPS-Gaussian:Generalizable Pixel-wise 3D Gaussian Splatting for Real-time Human Novel View Synthesis

    GPS-Gaussian:Generalizable Pixel-wise 3D Gaussian Splatting for Real-time Human Novel View Synthesis

    1)仿射变换 quad 所谓仿射变换,就是向量经过一次线性变换加一次平移变换,用公式可以表示为: quad 其中,p为变换前原始向量,q为变换后目标向量,A为线性变换矩阵,b为平移变换向量。 quad 对于二维图像而言,p和q分别是某个像素点在原图和仿射变换后的图中的未知(

    2024年02月03日
    浏览(6)
  • NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 论文阅读

    NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 论文阅读

    题目 :NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 作者 :Antoni Rosinol, John J. Leonard, Luca Carlone 代码 :https://github.com/ToniRV/NeRF-SLAM 来源 :arxiv 时间 :2022 我们提出了一种新颖的几何和光度 3D 映射流程,用于从单目图像进行准确、实时的场景重建。 为了实现这一目标

    2024年02月14日
    浏览(11)
  • LiDAR SLAM 闭环——BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM

    LiDAR SLAM 闭环——BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM

    标题:BoW3D: Bag of Words for Real-Time Loop Closing in 3D LiDAR SLAM 作者:Yunge Cui,Xieyuanli Chen,Yinlong Zhang,Jiahua Dong,Qingxiao Wu,Feng Zhu 机构:中科院沈阳自动化研究所 来源:2022 RAL 现算法已经开源,代码链接: GitHub - YungeCui/BoW3D: [RA-L] BoW3D: Bag of Words for Real-Time Loop Closing in 3D LiDAR SLAM.      

    2024年02月12日
    浏览(7)
  • Why choose Flink for real-time processing

    Why choose Flink for real-time processing

    Why choose Flink [1] Streaming data more truly reflects our lifestyle (real-time chat); [2] Traditional data architecture is based on limited data sets (Spark is based on micro-batch data processing); [3] Our goal: low latency, high throughput (distributed architecture, there may be confusion in the order, for example, within 1 hour of statistics, some data

    2024年03月20日
    浏览(8)
  • 【GAMES202】Real-Time Global Illumination(in 3D)—实时全局光照(3D空间)

    【GAMES202】Real-Time Global Illumination(in 3D)—实时全局光照(3D空间)

    上篇我们介绍了PRT,并以Diffuse的BRDF作为例子分析了预计算的部分,包括Lighting和Light transport,如上图所示。 包括我们还提到了SH,可以用SH的有限阶近似拟合球面函数,然后计算。 这里和上篇的推导方式不太一样,我们上篇是把Lighting项用SH分解然后交换积分和求和符号,最

    2024年02月10日
    浏览(25)
  • Training-Time-Friendly Network for Real-Time Object Detection 论文学习

    Training-Time-Friendly Network for Real-Time Object Detection 论文学习

    目前的目标检测器很少能做到快速训练、快速推理,并同时保持准确率。直觉上,推理越快的检测器应该训练也很快,但大多数的实时检测器反而需要更长的训练时间。准确率高的检测器大致可分为两类:推理时间久的的训练时间久的。 推理时间久的检测器一般依赖于复杂的

    2024年02月15日
    浏览(17)
  • 实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking

    论文url https://arxiv.org/abs/2003.11753 提出了一个名为Deep Multi-Camera Tracking (DMCT)的实时3D多摄像机跟踪系统。该系统旨在解决使用多个RGB摄像机进行3D人群跟踪的挑战性任务。 多个RGB摄像机的实时视频帧,每个视频帧是一个彩色图像,具有高度和宽度的像素矩阵。 基础卷积层(Ba

    2024年04月09日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包