3D Gaussian Splatting for Real-Time Radiance Field Rendering-简洁版

embedded/2024/12/22 14:11:20/

1. 研究背景与问题

传统的3D场景表示方法,如网格和点云,适合GPU加速的光栅化操作,但缺乏灵活性。而基于神经辐射场(NeRF)的表示方式,尽管质量高,但需要高成本的训练和渲染时间。此外,快速的辐射场方法虽然优化了速度,但以牺牲图像质量为代价。当前尚无方法能够在大场景和高分辨率条件下实现高质量的实时渲染。

流程:
  1. 输入一组静态场景的图像,由SfM校准的相应摄像机和稀疏点云;
  2. 从稀疏点云中,创建了一组三维高斯函数,通过位置(均值)、协方差矩阵和不透明度 来定义。这使得对3D场景的表示相对紧凑,一定程度上是因为可以使用高度各向异性的体积斑点(anisotropic volumetric splats)来紧凑地表示细微结构。辐射场的方向外观成分通过球谐函数(SH)进行表示,遵循标准做法。
  3. 通过一系列优化步骤来创建辐射场表示,这些步骤涉及3D高斯参数的位置、协方差、和SH系数,并与自适应控制高斯密度的操作交替进行。

2. 方法核心创新

论文提出了一种新颖的3D高斯表示和渲染方法,其核心创新包括:

a. 3D高斯分布的场景表示
  • 通过相机校准生成的稀疏点云初始化3D高斯分布,每个高斯由位置、协方差矩阵、透明度等参数定义。
  • 3D高斯允许在优化过程中高效表示连续的体积辐射场,同时减少了对空白空间的计算浪费。

为什么需要用3D高斯代替点云?

  • 点云是离散的,只是单纯的点,不能很好地描述场景的连续性或细节。
  • 3D高斯分布是一种连续的表示方式,可以更好地描述一个点附近的空间范围。
  • 通过调整高斯分布的形状(例如拉长、压扁),它可以更灵活地适应场景中的复杂几何结构。
b. 各向异性协方差优化
  • 方法引入各向异性协方差优化,使得3D高斯可以准确表示复杂几何结构。
  • 协方差矩阵通过分解为旋转矩阵和缩放矩阵优化,以确保其物理合法性(半正定性)。
  • 3D高斯分布的基本概念:

    • 一个3D高斯分布可以看作是一个“模糊的点”,其分布范围和形状由一个协方差矩阵(Covariance Matrix)决定。
    • 各向同性(Isotropic)高斯:形状是一个球,所有方向的扩展程度都相同。
    • 各向异性(Anisotropic)高斯:形状可以是椭球,允许不同方向的扩展程度不同。
  • 为什么需要各向异性协方差?

    • 在复杂的3D场景中,物体的形状往往是不规则的,例如细长的树枝或扁平的地面。
    • 各向异性协方差允许高斯分布适应这些复杂的几何特征。比如,细长的物体可以用一个细长的椭球来表示,而不是用一个笼统的球体。
  • 如何实现各向异性协方差优化?

    • 协方差矩阵的表示:通过分解为一个旋转矩阵(决定方向)和一个缩放矩阵(决定大小和形状),分开优化每个部分。
    • 这种方法保证了协方差矩阵始终是物理有效的(正定矩阵),不会因为优化过程中的梯度更新导致矩阵失效。
c. 高效的可见性感知渲染
  • 提出一种快速的基于GPU的平铺排序算法,用于实现高效的各向异性splats投影和前向后向传播。
  • 渲染过程采用近似的alpha混合,能够显著加速训练和实时渲染。

3. 优化与适应性密度控制

  • 训练过程中,采用自适应密度控制方法动态调整高斯分布的数量和位置:
    • 克隆:对于稀疏区域,复制小高斯以增加密度。
    • 拆分:对于过大的高斯,分裂成多个更小的高斯以提高精度。
  • 通过透明度阈值和几何梯度筛选机制,定期移除冗余或无效的高斯。

4. 性能与质量评估

a. 速度和质量比较
  • 相较于当前最佳质量的Mip-NeRF360,训练时间从48小时缩短到仅6分钟(快速配置)或51分钟(高质量配置),渲染速度达每秒135帧。
  • 结果显示在多数据集上的图像质量(PSNR、SSIM)达到或超过现有方法。
b. 适用性与场景范围
  • 在多种数据集(例如Tanks&Temples、Mip-NeRF360等)中验证,适用于室内和室外场景,包括复杂几何结构和无界环境。
c. 模型压缩与内存使用
  • 优化后的高斯分布数量显著低于传统点云方法,模型存储效率更高。

5. 局限性与未来改进方向

  • 未观测区域可能会产生伪影或不完整的重建。
  • 高斯过大时可能导致渲染时“跳跃”伪影。
  • 当前的GPU内存需求高,训练过程消耗超过20GB,未来可通过低级优化减少内存占用。


http://www.ppmy.cn/embedded/147841.html

相关文章

基于Spring Boot的阿坝州旅游系统

一、系统背景与目的 随着旅游业的快速发展和互联网技术的不断进步,越来越多的游客开始通过网络平台来查询旅游信息、预订旅游产品。为了满足游客对阿坝州旅游信息的需求,提升阿坝州旅游业的整体服务水平,基于Spring Boot技术框架开发了一款阿…

springboot接入ftp/ftps并上传文件和配置

springboot接入ftp/ftps并上传文件和配置 1. 整体描述2. 具体实现2.1 引入pom2.2 创建ftps连接2.3 上传文件2.4 关闭连接2.5 创建FTP目录2.6 main方法2.7 运行结果 3. FTP服务器配置3.1 修改require_ssl_reuse参数3.2 设置FTPS连接3.3 设置FTPS连接为隐式连接 4. 总结 1. 整体描…

Python解释器和PyCharm详解

目录 1.什么是Python解释器? Python解释器的类型和特性 Python解释器的优势 2.什么工具可以写Python文件? 3.为什么Python解释器和PyCharm不在同一个网站? 1.什么是Python解释器? Python解释器‌是Python程序运行的核心,它的主要作用是将Python代码转换为…

MQTT实现集群分布式消费

今天被问到启用多个应用消费时,每个消费者都会受到订阅消息的事。很久前用过,这里梳理记录一下: MQTT协议本身是支持共享订阅功能。 这里这个共享订阅比较特殊,他有点类似kafka的消费组的概念。但是设计和实现上区别比较大。 设…

扩展SpringBoot中的SpringMVC的默认配置

SpringBoot默认已经给我们做了很多SpringMVC的配置,哪些配置? 视图解析器ViewResolver静态资料的目录默认首页index.html图标名字和图标所在目录,favicon.ico类型转换器Converter,格式转换器的Formatter消息转换器HttpMessageCon…

java中随机数的生成

随机数的生成 方法一(使用Math.random方法)方法二(使用Random类) 方法一(使用Math.random方法) Math.random()方法就是专门生成一个0~1之间随机数的方法. 范围:[0,1). //生成[0,10)之间随机数.int num (int) (Math.random() * 10);System.out.println(num);方法二(使用Random…

【ETCD】【实操篇(二)】如何从源码编译并在window上搭建etcd集群?

要在 Windows 上编译 etcd 及 etcdctl 工具,并使用 bat 脚本启动 etcd 集群,首先需要准备好开发环境并确保依赖项正确安装。下面是从 etcd 3.5 源码开始编译和启动 etcd 集群的详细步骤: 目录 1. 安装 Go 环境2. 获取 etcd 源码3. 编译 etcd…

关于electron项目运行时,只编译渲染进程,不编译主进程问题

现象 编译到此处卡住没有报错也没下文 看下命令执行后操作 找到对应命令后操作 这里的await 没有收到完成信号导致 再看vue-cli-service 命令 此处发现是这个方法报错导致 再看这个方法 结论 所以项目不能存在 yarn.lock 而去使用npm,vuecli会优先执行yarn 命令&a…