论文阅读:3D Gaussian Splatting for Real-Time Radiance Field Rendering

论文地址:https://arxiv.org/abs/2308.04079

代码地址:graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering" (github.com)


概要

提出一个实时且能够高质量渲染场景的方法,通过结合离散和连续表示方法的优势,不仅克服了传统方法在噪声和渲染质量方面的限制,而且极大地提高了渲染速度。

辐射场:辐射场是三维空间中光分布的表示,它捕捉光如何与环境中的表面和材料相互作用。

显式辐射场:相反,显式辐射场直接表示离散空间结构中的光分布,

隐式辐射场:隐式辐射场表示场景中的光分布,而不明确定义场景的几何体。
      显式表达方法(点、网格、体素)的连续性质有助于优化,但渲染所需的随机采样成本高昂,并且可能会导致噪声。隐式表达(NeRF)耗费计算资源巨大,运行速度慢。3D GS 表示从隐式辐射场到显式辐射场的转变。它通过利用3D高斯作为灵活高效的表示,利用了这两种方法的优势。

Motivation

  • 引入各向异性3D高斯球作为辐射场的高质量、非结构化表示。
  • 一种3D高斯属性的优化方法,与自适应密度控制交织在一起,为捕获的场景创建高质量的表示。
  • 一种适用于GPU的快速可微渲染器。

系统框架

本论文的核心在于3D高斯函数的场景表达方式以及快速渲染的方法。3D高斯的表达方式能够准确、紧凑、可微地表达三维场景。而基于分块的快速渲染方法保证了渲染质量的同时提高了训练和渲染速度。给定输入:经过SFM 校准后的图像以及SFM输出的稀疏点云。该方法整体如下图所示:首先从SFM得到的稀疏点云构建三维高斯函数,在训练过程中通过可微的快速渲染器对3D高斯函数的属性进行优化,并交替进行自适应密度控制。

输入:点云
输出:渲染图像

  • 从初始的sfm点云出发,以每个点为中心生成3DGS。

  • 用相机参数把点投影到图像平面上(splatting)。

  • 从splatting的痕迹中tile-based光栅化,得到渲染图像,将渲染图像和GT求LOSS,反向传播。

  • 自适应的密度控制模块根据传递到点上的梯度,来决定是否需要对3DGS做分割或者克隆。梯度传递到3DGS里面对其存储的那几个参数进行更新。

技术细节

可微三维高斯表达方式

这一部分的目标是从无法向量先验的SFM点云中构建出可以渲染出高质量新视图的场景表达方式。

三维高斯的自适应密度优化

该方法的核心是优化过程的设计,除了优化三维高斯属性中的位置  、不透明度  以及协方差矩阵  外,还会优化  球谐系数以捕获视角相关的外观和颜色  。这些参数的优化与自适应密度控制交替进行。

最终的loss是通过二维图像计算得到的,而在三维投影到二维的过程中必然会产生歧义。因此本方法采用的三维高斯表达方式能够在网络的优化过程中能自适应的调整高斯核的数量,即自适应密度控制。

具体来说,这样一种自适应密度控制的方法能够识别出缺失几何特征的“未完全重建区域”以及高斯函数覆盖过广的“过度重建区域”。实验观察表明,出现这两种重建的错误的区域中,视图空间的位置梯度都很大,这是由于网络优化尝试移动高斯分布以纠正这种情况。这也就为识别这些重建错误的区域提供了便利,该方法将位置梯度阈值  设为0.0002,下图3是该方法针对这两种情况作出的不同处理的示意图:

首先,对于“未完全重建区域”,我们需要覆盖3D高斯到需要重建的几何处。因此该论文中采用的方法是将原有的3D高斯克隆一份相同大小的,并沿位置梯度方向移动到新的位置。其次,对于“过度重建区域”,该论文中采用的方法是将过大的3D高斯分解为两个小的,缩小幅度  为1.6,同时使用原有3D高斯的PDF来进行采样初始化新3D高斯的位置。

为了防止产生过量的3D高斯以及floater,本论文中还采用周期性重置不透明度  为零以及移除较大的3D高斯用于避免重叠。

用于三维高斯的快速可微光栅化

为了实现高效的高斯函数光栅化和渲染,该论文提出了一种基于瓦片的光栅化器,主要包括以下几个步骤和特点:

1. 瓦片划分与高斯剔除

  • 将屏幕划分为16x16的区域(瓦片),然后在每个区域内进行高斯剔除。
  • 剔除的原则是只保留那些与视锥体内相交,且置信度达到99%的高斯函数,这样避免了不必要的计算。
  • 引入了保护带(guard band),用于剔除处于极端位置、不必要的3D高斯函数,进一步提升剔除效率。

2. 排序与实例化

  • 剩余的高斯函数依据它们覆盖的区域数量实例化,每个实例被分配了一个“键值”(key),该键值包含视图空间中的深度信息以及瓦片区域的ID。
  • 使用快速的GPU基数排序算法对这些高斯函数进行排序,这一操作确保渲染过程中从前至后处理更为有效。

3. 区域列表与线程并行

  • 排序完成后,为每个瓦片区域分配一个列表,列表包含了按深度排序的高斯函数的第一个和最后一个条目。
  • 在光栅化阶段,每个区域启动一个GPU线程块,首先将对应高斯函数的数据加载到GPU共享内存中。
  • 线程块通过从前到后遍历高斯函数列表,为像素累积颜色和不透明度值,并在像素达到目标饱和度时停止相应的线程,从而提高并行处理效率。

4. 高效的梯度计算

  • 论文还提出了一种新的反向传播中高效计算梯度的方法。
  • 在前向过程中,只需存储每个点累积的总透明度 α\alphaα,而不是每个点的具体α\alphaα值。
  • 在反向传播过程中,通过将该点的总透明度除以每个点的透明度来计算梯度系数,从而减少了内存消耗和计算复杂度。

小结

总共13个真实场景上测试了算法,这些场景取自以前发布的数据集和合成的Blender数据集。特别是,在Mip-Nerf360 [Barron 2022] (NeRF渲染质量目前处于最先进水平)中提出的全场景、来自坦克和寺庙数据集的两个场景[Knapitsch 2017]和深度融合[Hedman 2018]提供的两个场景上测试了所提出方法。

近年来,在计算机视觉和三维重建领域,NeRF受到了越来越广泛的关注。虽然NeRF能够渲染出高质量的图像,但受到神经网络训练速度以及体渲染速度的限制。这类方法经常会面临速度和质量的抉择难题,同时渲染的实时性也是个限制NeRF使用扩展的重大问题。本工作首先基于SFM的点云设计了能快速精确表达场景的3D高斯函数,并以此开发了可由CUDA加速的渲染算法,实现了辐射场的实时渲染。这是其他基于点云的NeRF类方法无法做到的。

该工作兼具高效与质量的优越性,在未来结合该3D高斯表示形式,可以进一步用运在动态场景、三维生成以及SLAM-based的NeRF运用场景中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/421410.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文解读 | ACL2024 Outstanding Paper:因果指导的主动学习方法:助力大语言模型自动识别并去除偏见...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击阅读原文观看作者直播讲解回放! 作者简介 孙洲浩,哈尔滨工业大学SCIR实验室博士生 概述 尽管大语言模型(LLMs)展现出了非常强大的能力,但它们仍然…

ApplicationVerifier介绍说明

文章目录 1、介绍1、安装2、配置需要验证的项目2、在WinDbg中调试3、其他配置项 1、介绍 AppVerifier 特别用于检测和帮助调试内存损坏、危险的安全漏洞以及受限的用户帐户特权问题。 AppVerifier 有助于创建可靠且安全的应用程序,方法是监视应用程序与Windows操作…

53 - I. 在排序数组中查找数字 I

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9853%20-%20I.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E6%95%B0%E5%AD%97%20I/README.md 面试题 53 - I. 在排序数组中查找数字 …

Mysql基础练习题 1757.可回收且低脂的产品(力扣)

编写解决方案找出既是低脂又是可回收的产品编号。 题目链接: https://leetcode.cn/problems/recyclable-and-low-fat-products/description/ 建表插入数据: Create table If Not Exists Products (product_id int, low_fats ENUM(Y, N), recyclable …

mysql 之 information_schema

information_schema 是 MySQL 中的一个特殊数据库,它提供了关于 MySQL 服务器中所有数据库、表、列、索引、存储过程、函数、触发器等对象的元数据信息。information_schema 是一个只读数据库,主要用于查询数据库的结构信息,而不是存储用户数…

【网络安全】-文件上传漏洞

文件操作漏洞包括文件上传漏洞,文件包含漏洞,文件下载漏洞。 文章目录 前言 什么是文件上传漏洞? 文件上传的验证与绕过: 1.前端js验证:   Microsft Edge浏览器: Google Chrome浏览器: 2.后端…

[WEBPWN]BaseCTF week1 题解(新手友好教程版)

WEB A Dark Room 这道题的考点是查看网页源代码 网页源代码这里看到的是网页的html css js在用户浏览器上执行的代码 有时候很多铭感信息,或者关键信息。 查看网页源代码的几种方式 1 右键点击查看网页源代码 2 F12 3 Ctrl U 快捷键 HTTP是什么 HTTP&#x…

【F179】基于Springboot+vue实现的幼儿园管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 系统管理也都将通过计算机进行整体智能化操作&#xff…

Redis学习Day3——项目工程开发`

扩展阅读推荐: 黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili 使用git命令行将本地仓库代码上传到gitee/github远程仓库-CSDN博客 一、项目介绍及其初始化 学习Redis的过程,我们还将遇到各种实际问题,例如缓存击穿、雪崩、热Key等问题&…

IGNAV_NHC分析

extern int nhc(insstate_t *ins,const insopt_t *opt,const imud_t *imu)函数名 insstate_t* ins IO ins state insopt_t* opt I ins options imud_t* imu I imu measurement data return : 1 (ok) or 0 (fail) 用NHC进行约束,其实用NHC做量测去…

从大脑图谱/ROI中提取BOLD信号

动机 在功能连接(Functional Connectivity,FC)构建过程中,由于FC中元素数目是节点数目的平方关系,所以在计算FC之前进行数据降维是一个常见的选择。 一般会将体素级/顶点级BOLD信号(在2mm的图像分辨率下大脑…

Android libui新加接口,编译报错:error: Please update ABI references

1.背景信息 由于项目需要,要合入google的bug fix:https://cs.android.com/android/_/android/platform/frameworks/native/+/2c1782c6f986debe5ec89d5cdd3a3f08b08d5683 查看google的修改发现,对Transform.h 增加了一个方法:android::ui::Transform::det。合入修改之后,我…

NXP,S32K1XX汽车通用微控制器开发笔记

文章目录 1. 概述2. 开发环境配置2.1 S32 Design Studio2.2 安装SDK2.3 新建demo工程2.4 字体配置2.5 按需求修改demo2.5.1 修改pin脚定义2.5.2 增加串口打印功能2.6 编译代码2.7 debuger 配置参考1. 概述 S32K1系列32位微控制器(MCU)提供基于Arm Cortex-M的MCU,以及基本的…

pycharm中函数或方法的跳转以及返回

跳转 跳转很方便,ctrl 函数名即可。 跳转返回 有自带的回退按钮,找到视图->外观->工具栏,选中工具栏,这样就能出现箭头按钮,左箭头就是回退,右箭头前进。 快捷按钮可以为: 回退&…

Docker高级管理之compose容器编排与私有仓库的部署

Compose容器编排 Compose:容器的编排技术(可以管理多个容器),移植性、迁移性更强 查看使用的Compose的版本:docker-compose -v 首先创建一个编排文件 文件内容 compose文件格式: 缩进(严格意…

基于SpringBoot+Vue的房屋租赁管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的房屋租赁…

【Linux C | 终端设备】Linux下 tty、ttyS*、ttyAMA*、console 的区别,以及系统输出重定向(附带代码)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 2024-09-11 …

RickdiculouslyEasy-CTF-综合靶场

步骤一:利用Goby搜索靶机地址 步骤二:访问靶机地址 步骤二:扫描端口 nmap 172.16.1.7 -p 1-65535 步骤三: 扫描目录 dirsearch -u http://172.16.1.7/ 第一个flag:命令:nmap -A -v -T4 172.16.1.7 -p 1-6…

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析

智能家居在近年来得到了快速发展,AI技术不断发展,人机交互十分成熟,各种家电也都迎来了智能化浪潮,智能家居为人们提供了优秀的产品体验,受到主流消费者的青睐,智能家居里的中型智慧屏产品也随之兴起。 瑞芯…

2024最新盘点,主流生产报工软件有哪些?

本文将盘点知名的生产报工软件,为企业选型提供参考! 各位生产经理有没有碰到过这种情况,产品生产从工单-报工-质检-入库的过程中不能实时知道任务进度,生产日报也不清晰,老是被客户催,上头领导不满意&…