【辐射场】3D Gaussian Splatting

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

三维高斯…喷喷

  \,   3D Gaussian Splatting,下文简称3DGS,是好一段时间以来在三维内容创作和三维重建领域比较有热度的一项技术。
它属于基于图像的三维重建方法,意思就是你对现实物体或者场景拍照片,就能给你训练成一个场景模型,能够被渲染出来给你看。
  它产生的模型可以作为三维内容创作的资产,什么意思呢,就是你可以搞一点视频或者很多图片作为输入,丢进什么应用等一会就变成一个3DGS,最后过几个插件就可以拖进大家最爱的blender/ue/unity里面用啦。
【辐射场】3D Gaussian Splatting,3d,三维重建
  所谓的辐射场方法意思就是它们会存一些辐射度(radiance),类似于存储你位于某个地点、从某个视角、看场景里面的各个点发出的光的属性。这些方法一般基于体渲染、光线步进(Ray Marching)或者光线追踪(Ray Tracing),得到的重建结果模型自然属于一种独特的格式。虽然说还是比较方便兼容真实感渲染(PBR)的,就像houdini里面的SDF、VDB,都是根据体积组织的……不过万一如果想要变成有mesh那类表面建模的:那就还需要相当多的额外工作(Sugar、此外DreamGaussian也有一个小工具)
  最新的一些工作例如4DGS、4K4D甚至可以把视频(连续图像序列)重建成动态场景,就是对于动态场景的修改暂时可能比较尴尬。GS的小物体比较有优势,静态大场景看起来比较捉急,但是4D的工作同向对比目前看起来会比较好看。
  自然还有GS进SLAM的工作(GS-SLAM、SplaTAM),就不多嘴了。


先质疑再质疑

【辐射场】3D Gaussian Splatting,3d,三维重建
  俗话说,demo都是骗人的 。上图只是相对第一张图稍微往右上转了一点点,把焦点从桌子转到背景物件,有点难看吧。当然如果增加训练步数和图片数量能好看一点,不过缺陷确实是存在的。随便抓一个3DGS的演示基本都能看到这个问题,只要你不是站在被训练到的视角,那么你往背景看大概率就会出现如上图所示的破洞。然而你拍场景的时候会对着墙角的杂草全方位覆盖吗?
  如果你往被遮盖的地方、或者图上这种地方跑近了,你就会看到糊糊的Gaussian Splats。
  如果你想要从3DGS得到一个完整的、有精细材质的、甚至能估计碰撞体积的物体,就需要首先保证那个物体不能动、其次从各个角度多拍点图(如果你有三十万相机能够同时从各个角度拍完也行吧)。对于大场景来说,这种要求就有点严苛了,结果就是稍微远一点、几米开外的地方都不能细看。
  那么为啥会破洞呢?我们观察这个例子
【辐射场】3D Gaussian Splatting,3d,三维重建
【辐射场】3D Gaussian Splatting,3d,三维重建
  上面是3DGS、下面是点云。这两幅图照样是在角落,那个桌子附近点特别多的。呃,当然点云初始化来自于NeRF360V2 dataset,其实跟他一开始大差不差,这也是我们亲爱的3DGS原论文里面指出故意的。
  【辐射场】3D Gaussian Splatting,3d,三维重建

你可以简单地把3DGS理解成一种基于好多个点(点云)的结构,每个点在渲染的时候会变成一个从各个角度看可以有不同光泽的一坨球面高斯splat,形似椭球,上面的颜色是一个椭球面上的关于极坐标角度的函数,那不管是分段线性插值还是怎么的总要想个办法近似吧,GS就是用球谐函数(图是形似原子轨道,实际上还是球面上的函数,极坐标半径是指那个角度上球谐函数值大小)作为基函数,组合出一个比较丰富的函数,拉一拉变成椭圆。虽然在训练和优化的过程中这些椭圆的位置、尺寸朝向和圆润程度、不同方向上辐射折射反射出来的颜色等等(多元正态分布的均值、协方差、球面高斯的球谐系数)可以有一定变化,但是假如一开始点没安放好、分布相当不均匀,那就会四处破大洞了。
  呃呃。虽然破洞,还是有不少优点。
  表现上来说就和一般NeRF类似,着色还是相当真实的(可以补光,不好把场景本来有的光去掉(relighting));另外因为是把信息存在点里面、而不是像NeRF那样跟你的视线强相关,总的来说多个3DGS可以方便地合并到一起。
  从效率来说、一个是炼起来不算龟速,另一个是渲染快。上面那个小花园拿A5k跑大概一小时能有好几万steps(参考:论文里面拿来抢SOTA用的是5k/7k/30k iters);渲染的时候能做到实时的,20系以上跑起来可以有一百到几百fps。
  顺带一提一个3DGS一般是1GB起步。这方面也有能缩到1/15的工作。


咋办啊?

  \,   3DGS的结果有时候看起来不理想,主要是那些位置本身并没有充分的信息。哪怕有,注意到直接对比渲染结果和ground truth图像的优化目标函数又不能很好地反应三维重建的质量和真实度,结果就是你从训练的时候相机的位置和姿态看过去它能拟合,结果挪动一下看见面前的splats马上偏离位置四处漏风。考虑到真实世界各种经验和物理先验,例如局部一般会有比较重复自相似的样式等等,或许能有帮助。
  更加NeRF的Plenoctrees→Plenoxels几乎可以说是3DGS的前身,之前许多工作其实也是强相关的,可以作为参考(就像Mip-splatting干的那样)。
  NeRF的时候一种思路是提出新的有关不确定性的量度(Bayes’ Rays),一种思路是利用真实世界信息来补全那些不确定的部分(Nerfbusters)。比如利用Segment Anything、利用3D Diffusion、配合深度等等(SparseGS)……反正能保证渲染实时就挺好的。
  另外GS虽然又独创又高效、不过在诸多NeRF类方法之中,其他方法在精度方面也还是很有价值的,而且有相当一部分还能实现实时渲染。
  顺带一提,如果你拍的时候拍太久了,环境光变化比较大;或者在涉及尤其是大面积阴影的情况下,呃,想想就知道会有麻烦。拍得充分一点,不然会起黑雾的。自己拍着玩还可能要小心镜头光晕。


能讲讲原理吗?

, , ,  讲完啦!想看定义看公式听名词还是看代码啊?
  3DGS整个过程主要包括从运动结构恢复(SfM)得到点云、通过渲染得到loss再反向传播训练其各点上球面高斯各项参数(它的位置都是比较清楚的,方便sort)。因为splat除了是各向异性之外基本可以类比一堆堆物理世界的粒子模型、有辐照度和各向异性颜色、有一定的不透明度以及一定的透光度,多个splat就要α-blending。训练的时候要把渲染结果跟ground truth比出loss,因为渲染过程是视野/视锥范围内部分点云各个点上根据存的系数得到3dsplat再被rasterize(三维正态分布沿一维积分(或者说求边缘分布)得到二维,alpha-blending到你的screen uv上光栅化),就能顺着或者逆着渲染过程变成图像,这样就有forward跟backward,顺便还可以做点小并行。得益于它的splats可以排序,backward的时候alpha blending的逆过程是比较直接可行的。光栅化时还希望在经过透视变换的时候splat不会被扭曲变形,要把变换矩阵近似一下。
  3DGS的split clone prune有点被逼的,不过既然约等于一个个椭球球那也确实有一点难搞,不像NeRF那样隐式了根本操心不了这些问题。4DGS里面专门关于位置做了点工作,如果能够减轻对可能不太靠谱的SfM的依赖或许会更好一点,像COLMAP-free 3DGS等等。PAPR里面也指出SfM不给力的情况下,对于clone的情况因为梯度不对头,有的点如果一开始就离splat远,最后也几乎不可能被照顾到。此外,split clone的方式面对纹理上的精细细节也比较乏力。
  此外,输入(多个)连续图像序列,一开始就重建出动态场景表示,有需要再截取某一帧或许不失为一种选择,也有机会利用其比较充分的信息让那一帧的状态更确定、说不定还能做一些物理模拟等等工作对比loss。文章来源地址https://www.toymoban.com/news/detail-770153.html

到了这里,关于【辐射场】3D Gaussian Splatting的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 经典文献阅读之--Gaussian Splatting SLAM(单目3D高斯溅射重建)

    3D GS在NeRF领域已经掀起了一股浪潮,然后又很快席卷到了SLAM领域,最近已经看到很多3D GS和SLAM结合的开源工作了。将为大家分享帝国理工学院戴森机器人实验最新开源的方案《Gaussian Splatting SLAM》,这也是第一个将3D GS应用到增量3D重建的工作,速度为3 FPS。要想实时从摄像头

    2024年03月10日
    浏览(56)
  • 【三维重建】DreamGaussian:高斯splatting的单视图3D内容生成(原理+代码)

    项目主页:https://dreamgaussian.github.io/ (包含论文和代码) 提示:以下是本篇文章正文内容,下面案例可供参考 常用的3D内容创建方式,主要是 利用基于优化的通过分数蒸馏采样(SDS)进行的3D生成 。该方法每个样本优化较慢,很难实际应用。本文提出了DreamGaussian,兼顾效率

    2024年02月06日
    浏览(52)
  • 【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的全网最详细的解析

    3D Gaussian Splatting for Real-Time Radiance Field Rendering 论文:link code:link video:link 1. 开山之作 Nerf 一切的开始都是起源于 NERF 开山之作 这里由详细的学习与拆解 【NERF】入门学习整理(一) 【NERF】入门学习整理(二) 【NERF】入门学习整理(三) 【NeRF数据集】LLFF格式数据集处理co

    2024年04月15日
    浏览(85)
  • 3D Gaussian Splatting

    本文转载于大佬~~ 这是3D Gaussian Splatting综述, 先回顾3D Gaussian的原理和应用,借着全面比较了3D GS在静态场景、动态场景和驾驶场景中的性能,最后为未来指明了研究方向! 三维 Gaussian splatting(3DGS)是近年来在显式辐射场和计算机图形学领域出现的一种变革性技术。这种创新

    2024年04月08日
    浏览(58)
  • 3D Gaussian Splatting 渲染过程

    给定一组三维高斯点,渲染步骤大致为:1.camera space转成ray space 2.对像平面进行分块,然后对高斯排序 3.正投影发出射线进行α-blending 这个步骤将NeRF中的投影过程变为了正投影,引入了ray space的概念,让3D Gaussian 变为2D Gaussian. 透视投影和正投影                    一般的渲

    2024年01月20日
    浏览(67)
  • 3D Gaussian Splatting的使用

    今年SIGGRAPH最佳论文,学习了一下,果然厉害,具体论文原理就不说了,一搜都有,主要是看看怎么用,自己能不能把身边的场景快速建个模。 赶紧记录下,好像这几天在这个基础上又有很多花样出来了… 我的系统是Ubuntu22.04。 开源作者已经都弄的很详细了,也有教程。 首

    2024年02月04日
    浏览(48)
  • 3D Gaussian Splatting文件的压缩【3D高斯泼溅】

    在上一篇文章中,我开始研究高斯泼溅(3DGS:3D Gaussian Splatting)。 它的问题之一是数据集并不小。 渲染图看起来不错。 但“自行车”、“卡车”、“花园”数据集分别是一个 1.42GB、0.59GB、1.35GB 的 PLY 文件。 它们几乎按原样加载到 GPU 内存中作为巨大的结构化缓冲区,因此

    2024年02月03日
    浏览(39)
  • 3D Gaussian Splatting:论文原理分析

    标题:3D Gaussian Splatting for Real-Time Radiance Field Rendering 作者:Bernhard Kerbl、Georgios Kopanas、Thomas Leimkühler和George Drettakis,来自法国Inria、Université Côte d\\\'Azur和德国Max-Planck-Institut für Informatik。 发表时间:2023年8月,ACM Transactions on Graphics上,卷号42,编号4 提出了一种名为3D Gaussia

    2024年01月23日
    浏览(50)
  • Awesome 3D Gaussian Splatting Resources

    GitHub - MrNeRF/awesome-3D-gaussian-splatting: Curated list of papers and resources focused on 3D Gaussian Splatting, intended to keep pace with the anticipated surge of research in the coming months. 3D Gaussian Splatting简明教程 - 知乎 

    2024年01月20日
    浏览(56)
  • 3D Gaussian Splatting学习记录11.2

    cmd输入以下命令,开始训练 整个训练(30,000步)大约需要20分钟,但7000步后会保存一个中间模型,效果已经很不错了。训练结束后得到output文件 在Ubuntu 22.04上,运行以下命令来构建可视化工具: 安装后,找到SIBR_gaussianViewer_app二进制文件,并以模型的路径作为参数运行它: 参

    2024年02月04日
    浏览(65)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包