3D高斯泼溅(Splatting)简明教程

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

3D高斯泼溅(Splatting)简明教程,3d

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器

3D 高斯泼溅(Splatting)是用于实时辐射场渲染的 3D 高斯分布描述的一种光栅化技术,它允许实时渲染从小图像样本中学习到的逼真场景。 本文将详细介绍它的工作原理以及它对图形学的未来意味着什么。

1、什么是 3D 高斯泼溅?

3D 高斯泼溅的核心是一种光栅化技术。 这意味着:

  • 有描述场景的数据。
  • 在屏幕上绘制数据。
  • 类似于计算机图形学中的三角形光栅化,用于在屏幕上绘制许多三角形:
    3D高斯泼溅(Splatting)简明教程,3d

然而,它不是三角形,而是高斯分布。 这是一个栅格化的高斯函数,为了清晰起见,绘制了边框:

3D高斯泼溅(Splatting)简明教程,3d

高斯泼溅由以下参数描述:

  • 位置:它所在的位置 (XYZ)
  • 协方差:如何拉伸/缩放(3x3 矩阵)
  • 颜色:它是什么颜色(RGB)
  • Alpha:透明度如何 (α)

在实践中,会同时绘制多个高斯曲线:
3D高斯泼溅(Splatting)简明教程,3d

这是三个高斯。 那么 700 万高斯呢?
3D高斯泼溅(Splatting)简明教程,3d

这是每个高斯光栅化完全不透明的样子:

3D高斯泼溅(Splatting)简明教程,3d

这是对 3D 高斯分布的非常简短的概述。 接下来,让我们逐步完成本文中描述的完整过程。

1、3D高斯泼溅原理

3D高斯泼溅的实现原理分为一下几个部分:

  • 运动结构恢复:利用SfM得到点云
  • 点云转高斯分布
  • 模型训练
  • 光栅化

1.1 运动结构恢复

第一步是使用运动结构恢复 (SfM: Structure from Motion) 方法从一组图像中估计点云。 这是一种从一组 2D 图像估计 3D 点云的方法。 这可以通过 COLMAP 库来完成。
3D高斯泼溅(Splatting)简明教程,3d

1.2 转换为高斯分布

接下来,每个点都转换为高斯分布。 这对于光栅化来说已经足够了。 然而,只能从 SfM 数据推断位置和颜色。 为了学习产生高质量结果的表示,我们需要对其进行训练。

1.3 模型训练

训练过程使用随机梯度下降,类似于神经网络,但没有层。 训练步骤为:

  • 使用可微分高斯光栅化将高斯光栅化为图像(稍后详细介绍)
  • 根据光栅化图像和地面真实图像之间的差异计算损失
  • 根据损失调整高斯参数
  • 应用自动致密化和修剪

步骤 1-3 从概念上讲非常简单。 第 4 步涉及以下内容:

  • 如果对于给定的高斯梯度很大(即它太错误),则分割/克隆它
  • 如果高斯很小,则克隆它
  • 如果高斯很大,则将其分割
  • 如果高斯的 alpha 太低,请将其删除

此过程有助于高斯更好地拟合细粒度细节,同时修剪不必要的高斯。

1.4 可微分高斯光栅化

如前所述,3D 高斯分布是一种光栅化方法,它将数据绘制到屏幕上。 然而,一些重要的元素还包括:

  • 快速
  • 可微分

光栅化器的原始实现可以在这里找到。 光栅化涉及:

  • 从相机角度将每个高斯投影为 2D。
  • 按深度对高斯进行排序。
  • 对于每个像素,从前到后迭代每个高斯,将它们混合在一起。

这篇论文中描述了其他优化。

光栅化器是可微分的也很重要,这样就可以用随机梯度下降来训练它。 然而,这仅与训练相关 - 训练有素的高斯也可以用不可微的方法呈现。

2、谁关注3D高斯泼溅?

为什么 3D 高斯溅射受到如此多的关注? 显而易见的答案是结果不言自明 - 这是高质量的实时场景。 然而,故事可能还有更多。

关于高斯泼溅还能做什么还有很多未知数。 它们可以动画化吗? 即将发表的论文《动态 3D 高斯:通过持久动态视图合成进行跟踪》表明他们可以。 还有许多其他未知数。 他们能做反思吗? 可以在没有参考图像训练的情况下对它们进行建模吗?

最后,人们对嵌入式人工智能的研究兴趣日益浓厚。 这是人工智能研究的一个领域,最先进的性能仍然低于人类性能几个数量级,其中大部分挑战在于表示 3D 空间。 鉴于 3D 高斯分布可以产生非常密集的 3D 空间表示,这对具身AI 研究有何影响?

这些问题需要注意方法。 实际影响如何还有待观察。

3、图形学的未来

那么这对图形学的未来意味着什么呢? 好吧,让我们将其分为优点/缺点:

优点

  • 高品质、逼真的场景
  • 快速、实时光栅化
  • 训练速度相对较快

缺点

  • 高 VRAM 使用率(4GB 用于查看,12GB 用于训练)
  • 大量磁盘占用(一个场景 1GB+)
  • 与现有渲染管道不兼容
  • 静态(暂时)

到目前为止,原始的 CUDA 实现尚未适应生产渲染管道,如 Vulkan、DirectX、WebGPU 等,因此还有待观察会产生什么影响。

目前已经进行了以下适应性工作:

  • 远程查看器
  • WebGPU查看器
  • WebGL 查看器
  • Unity查看器
  • 优化的 WebGL 查看器

这些依赖于远程流传输 (1) 或传统的基于四元组的光栅化方法 (2-5)。 虽然基于四元组的方法与数十年的图形技术兼容,但它可能会导致质量/性能降低。 然而,查看器 #5 表明,尽管采用基于四元组的方法,优化技巧仍可以带来高质量/性能。

那么我们会看到 3D 高斯泼溅在生产环境中完全重新实现吗? 答案可能是肯定的。 主要瓶颈是对数百万个高斯进行排序,这在原始实现中使用 CUB 设备基数排序(一种仅在 CUDA 中可用的高度优化的排序)有效完成。 然而,只要付出足够的努力,在其他渲染管道中当然可以达到这种性能水平。


原文链接:3D高斯泼溅 — BimAnt文章来源地址https://www.toymoban.com/news/detail-745829.html

到了这里,关于3D高斯泼溅(Splatting)简明教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 3D Gaussian Splatting(高斯飞溅3D算法) Windows系统部署(简版) |导入到Unity

    目录 前言 1、安装python (1)下载地址 (2)添加环境变量 2、安装CUDA         3、安装git (1)下载地址 (2)检查是否安装成功 4、安装visual studio 5、安装COLMAP (1)下载地址 (2)添加环境变量 6、安装ffmpeg (1)下载地址 (2)添加环境变量 (3)检查是否安装成功 7、安

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

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

    2024年02月06日
    浏览(33)
  • 经典文献阅读之--Gaussian Splatting SLAM(单目3D高斯溅射重建)

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

    2024年03月10日
    浏览(41)
  • 【反渲染高斯】GS-IR: 3D Gaussian Splatting for Inverse Rendering

    会有自己的理解PS,不保证正确,欢迎评论中指出错误。 我们提出了一种基于3D高斯溅射(GS)的新型反向渲染方法GS-IR,它利用前向映射体渲染forward mapping volume rendering来实现逼真的新视图合成和重照明结果。与先前使用隐式神经表征和体绘制(例如NeRF)的工作不同,这些工作具有

    2024年02月19日
    浏览(29)
  • Husky使用简明教程

    Husky 是一个流行的 Git 钩子工具,用于在不同的 Git 操作(如提交和推送)前自动运行脚本。比如代码格式化、静态检查等。这有助于保持代码库的质量和一致性。本教程将详细介绍 Husky 的原理、使用方式、配置方法以及如何在开发中集成 Husky。 Husky 原理 安装 Husky 配置 Hus

    2024年04月10日
    浏览(32)
  • HuggingFace简明教程

    视频链接:HuggingFace简明教程,BERT中文模型实战示例.NLP预训练模型,Transformers类库,datasets类库快速入门._哔哩哔哩_bilibili 什么是huggingface?huggingface是一个开源社区,它提供了先进的NLP模型,数据集,以及其他便利的工具。 数据集:Hugging Face – The AI community building the future.  这

    2024年01月25日
    浏览(34)
  • Docker入门简明教程

    Docker 是基于 Go 语言实现的云开源项目,是基于 Linux 的多项开源技术提供高效、敏捷和轻量级的容器方案。创建于 2013 年初,自从开源后就受到了广泛的关注,从长远的眼光来看,Docker 是未来虚拟化的一个发展的趋势。带来了更轻量快捷的的体验,一台主机可以同时运行数千

    2024年01月23日
    浏览(40)
  • SAP报表简明教程

    SAP 报表简明教程   一、 报表需求,根据物料编码和物料类型 查询报表。用户输入界面要求如下:     二、 开始写代码。先进入 TCODE:SE38 ,新建一个程序。      点击创建按钮,如下图:      输入标题,写明 此程序的功能 作者,创建时间,点保存,     输入自己事先建

    2024年02月04日
    浏览(37)
  • SSH 隧道简明教程

    本章主要介绍了什么是 SSH 隧道以及如何使用 SSH 隧道,包括 SSH 隧道加密数据传输以及绕过防火墙。 SSH 隧道是 SSH 中的一种机制,它能够将其他 TCP 端口的网络数据通过 SSH 连接来转发,并且自动提供了相应的加密及解密服务。因为 SSH 为其他 TCP 链接提供了一个安全的通道来

    2024年02月06日
    浏览(41)
  • mpack简明教程

    本文先简单介绍MessagePack的基本概念。 然后,介绍一个MessagePack C API - MPack的通常使用。 接着尝试对MPack截断数据的读取。 注:本文完整代码见仓库。 如果你使用过C/C++的json库,那么上手MessagePack是比较容易的。关于C/C++ Json库的使用可见:C++ JSON库的一般使用方法-CSDN博客。

    2024年02月20日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包