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

news2024/12/18 8:04:38

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.coloradmin.cn/o/2261485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用ue5打开网址链接

需要用到 Launch URL 这个函数 字面意思就是打开填写的链接网页 这里填写的是百度,按下Tab键后就会打开百度的网页

电脑为什么会提示“msvcr120.dll缺失”?“找不到msvcr120.dll文件”要怎么解决?

电脑故障排查指南:揭秘“msvcr120.dll缺失”的真相与解决方案 在软件开发与日常维护的广阔天地里,遇到系统报错或文件缺失的情况可谓家常便饭。今天,我将带领大家深入探讨一个常见的系统提示——“msvcr120.dll缺失”,并揭秘其背…

Java:集合(List、Map、Set)

文章目录 1. Collection集合1-1. 迭代器遍历方式1-2. 通过for循环进行遍历1-3. forEach遍历 2. List集合2-1. ArrayList底层实现原理2-2. LinkedList底层实现原理 3. Set集合3-1. HashSet 底层实现3-2. LinkedHashSet 底层实现3-3. TreeSet 4. Collection集合->总结5. Map集…

4_使用 HTML5 Canvas API (3) --[HTML5 API 学习之旅]

4_使用 HTML5 Canvas API (3) --[HTML5 API 学习之旅] 1.缩放 canvas 对象 在 <canvas> 中缩放对象可以通过 scale 方法来实现。这个方法会根据提供的参数对之后绘制的所有内容进行缩放。下面是两个具体的示例&#xff0c;展示如何使用 scale 方法来缩放 canvas 上的对…

嵌入式驱动开发详解18(USB驱动开发)

文章目录 前言USBUSB简介USB信号线USB控制规格 USB—HUBUSB—HUB原理USB—HUB电路 USB—OTGUSB—OTG原理USB—OTG电路 USB协议后续参考文献 前言 该专栏主要是讲解嵌入式相关的驱动开发&#xff0c;但是由于部分模块的驱动框架过于复杂&#xff0c;其内容量不是一个人能完成的…

ubuntu监测硬盘状态

安装smartmontools smartctl -l error /dev/sdk smartctl -i /dev/sda lshw -class disk smartctl -H /dev/sd 结果1&#xff1a; 结果2&#xff1a;PASSED&#xff0c;这表示硬盘健康状态良好 smartctl -a /dev/sdb sdk lsblk blkid 测试写入速度 time dd if/dev/zero of…

华为云联合中国信通院发布首个云计算智能化可观测性能力成熟度模型标准

2024年12月3日&#xff0c;由全球数字经济大会组委会主办&#xff0c;中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;、中国通信企业协会承办的2024全球数字经济大会云AI计算国际合作论坛在北京成功召开。本次会议中&#xff0c;华为云联合中国信通院等单位…

Stable Diffusion 提示词语法

1.提示词基础 1.提示词之间用英文逗号,分隔 2.提示词之间是可以换行的 3.权重默认为1,越靠前权重越高 4.数量控制在75个单位以内 2.提示词各种符号的意义 2.1 ()、[]、{}符号 权重值()小括号[]中括号{}大括号默认1111层()1.1[]0.9{}1.052层(()) 1.121.21[[]]0.920.81{{}}1.…

CMake 保姆级教程(上)

整理自 视频 【CMake 保姆级教程【C/C】】 https://www.bilibili.com/video/BV14s4y1g7Zj/?p5&share_sourcecopy_web&vd_source6eb8f46d194c5ef9f89d3331f623a9c3 1、cmake简介 源文件&#xff08;.cpp / .c&#xff09;要经过 工具链 1.1 工具链 1、预处理&#…

[计算机网络]唐僧的”通关文牒“NAT地址转换

1.NAT&#xff1a;唐僧的通关文牒 在古老的西游记中&#xff0c;唐僧师徒四人历经九九八十一难&#xff0c;终于取得了真经。然而&#xff0c;他们并不是一开始就获得了通关文牒&#xff0c;而是经过了重重考验&#xff0c;最终得到了国王的认可&#xff0c;才顺利通过了各个关…

vscode设置终端代理

转载请标明出处&#xff1a;小帆的帆的博客 设置终端代理 修改项目的.vscode/settings.json {"terminal.integrated.env.windows": {"http_proxy": "http://127.0.0.1:7890","https_proxy": "http://127.0.0.1:7890"}, }…

java后端环境配置

因为现在升学了&#xff0c;以前本来想毕业干java的&#xff0c;很多java的环境配置早就忘掉了&#xff08;比如mysql maven jdk idea&#xff09;&#xff0c;想写个博客记录下来&#xff0c;以后方便自己快速搭建环境 JAVA后端开发配置 环境配置jdkideamavenMySQLnavicate17…

云计算HCIP-OpenStack03

书接上回&#xff1a; 云计算HCIP-OpenStack02-CSDN博客 10.KeyStone keystone-Openstack&#xff0c;IAM服务&#xff08;统一身份认证&#xff09;-云服务 建议先去了解Hadoop&#xff08;大数据生态系统&#xff09;中的kerberos&#xff08;LDAPkerberos的鉴权机制&#xf…

.Net WebAPI(一)

文章目录 项目地址一、WebAPI基础1. 项目初始化1.1 创建简单的API1.1.1 get请求1.1.2 post请求1.1.3 put请求1.1.4 Delete请求 1.2 webapi的流程 2.Controllers2.1 创建一个shirts的Controller 3. Routing3.1 使用和创建MapControllers3.2 使用Routing的模板语言 4. Mould Bind…

【Flink-scala】DataStream编程模型之状态编程

DataStream编程模型之状态编程 参考&#xff1a; 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 3.【Flink-scala】DataStream编程模型之窗口计算-触发器-驱逐器 4.【Flink-scal…

Gitlab服务管理和仓库项目权限管理

Gitlab服务管理 gitlab-ctl start # 启动所有 gitlab 组件&#xff1b; gitlab-ctl stop # 停止所有 gitlab 组件&#xff1b; gitlab-ctl restart # 重启所有 gitlab 组件&#xff1b; gitlab-ctl status …

SCAU期末笔记 - Linux系统应用与开发教程样卷解析(2024版)

我真的不理解奥&#xff0c;为什么会有给样卷不自带解析的&#xff0c;对答案都没得对&#xff0c;故整理一篇 样卷1 一、选择题 1、为了遍历shell脚本调用时传入的参数&#xff0c;需要在shell脚本中使用_____。 A.$#表示参数的个数B.S表示所有参数C.$0表示脚本名D.$1表示…

学习threejs,区域光THREE.AreaLight效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.AreaLight 区域光 二…

RabbitMQ消息队列的笔记

Rabbit与Java相结合 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 在配置文件中编写关于rabbitmq的配置 rabbitmq:host: 192.168.190.132 /…

VSCode,Anaconda,JupyterNotebook

文章目录 一. 下载VSCode并安装二. 下载Anaconda并安装1. anaconda介绍2. Anaconda的包管理功能3. Anaconda的虚拟环境管理4.Jupyter Notebook5. Jupyter Notebook使用简介6. Jupyter Notebook快捷键7.Jupyter notebook的功能扩展8. Jupyter notebook和Jupyter lab的区别 三. V…