4D Gaussian Splatting:用于实时的动态场景渲染

Wu G, Yi T, Fang J, et al. 4d gaussian splatting for real-time dynamic scene rendering[J]. arXiv preprint arXiv:2310.08528, 2023.

在这里插入图片描述

更多参考资料如下:

  • 文章总结:4D Gaussian Splatting for Real-Time Dynamic Scene Rendering;
  • 疑难问答:4D Gaussian Splatting for Real-Time Dynamic Scene Rendering | Hacker News

目录

  • 一. 研究思路
  • 二. 4D Gaussian Splatting
  • 三. Gaussian 变形场
    • 1. 3D Gaussian Neural Voxel Encoding
    • 2. Gaussians Deformation Computation
    • 3. 优化
  • 四. 实验结果
    • 1. 数据集
    • 2. 对比实验
    • 3. 消融实验
  • 五. 总结
  • 六. 复现

一. 研究思路

  • 新视图合成 (Novel View Synthesis, NVS) 在 3D 视觉领域非常常见,快速且高质量地表示和渲染动态场景一直是一项重要且具有挑战性的任务。
  • NeRFs 变体能够渲染动态场景,但是训练和渲染的效率太低;3D-GS 能够达到实时的渲染速度,但仅限于静态场景。
  • 文中提出了一种新方法 —— 4D Gaussian Splatting,在保持训练和渲染效率的同时,能够紧凑地表示三维动态场景,从而实现实时渲染和高质量的渲染效果。

4D-GS 在 3D-GS 的基础上,引入 变形场 (deformation field) 来表示 Gaussians 的运动和形变,包括一个多分辨率特征平面 (multi-resolution HexPlane) 和一个轻量级 MLP。在每个时间戳 (timestamp),变形场会将 Gaussians 转换到一个具有新形状的新位置,该变换相当于 Gaussian 的运动和形变。HexPlane 通过计算体素特征进行编码,来建立相邻 Gaussians 之间的关系,从而提高运动和形变预测的准确性;MLP 对特征进行解码并获得 Gaussians 变换后的新位置。最后将变换后的 Gaussians 按时间戳做 Splatting,就能够得到连续的三维动态场景渲染视频。
在这里插入图片描述

二. 4D Gaussian Splatting

虽然 4D Gaussian 本该在每一个时间戳 t t t 都使用一组 Gaussians,但 4D Gaussian Splatting 只保留一组标准的 3D Gaussians S \mathcal{S} S,然后使用变形场 F \mathcal{F} F 预测每一个时间戳 t t t 时 3D Gaussians 的运动和形变状态:
在这里插入图片描述

因此想要表示动态场景只需要学习 S \mathcal{S} S F \mathcal{F} F 即可,并且有:
S ′ = F ( S , t ) \mathcal{S}' = \mathcal{F}(\mathcal{S}, t) S=F(S,t)

其中 3D Gaussians 的信息 S \mathcal{S} S 包括三维位置 X \mathcal{X} X 和协方差矩阵 Σ \Sigma Σ,协方差矩阵 Σ \Sigma Σ 则是由缩放矩阵 S S S 和旋转矩阵 R R R 构成 1。因此学习 3D Gaussians 的 S \mathcal{S} S 就是学习 X \mathcal{X} X S S S R R R 的过程。

为了在保持高渲染质量和快速渲染速度的前提下捕捉相邻 Gaussians 之间的信息,文中采用了多分辨率神经体素 (multi-resolution neural voxels) 来建立 Gaussians 之间的关系。这种方法仅使用四个相邻点对单位体素网格内的变形场进行编码,从而减少了内存消耗。随后引入了一种紧凑的 MLP,与多分辨率神经体素相结合,有效地融合了变形特征,并确保了渲染过程中快速的前向传播速度。

三. Gaussian 变形场

如前文所述,变形场包括多分辨率神经体素和一个轻量级 MLP g g g。多分辨率神经体素其实就是前文所说的多分辨率特征平面 HexPlane 的一个模块,用来编码每个 Gaussian 在时间戳 t t t 时的体素特征;MLP 用来解码,以获得每个 Gaussian 在时间戳 t t t 时的 S ′ \mathcal{S}' S

1. 3D Gaussian Neural Voxel Encoding

在这里插入图片描述

如图所示,空间相邻的 Gaussians 在运动和形变上具有相似的特征,同一个 Gaussian 在相邻时间也会呈现相似的变化特性。并且相隔较远的 Gaussians 之间也具有一定的关联。因此,文中采用 多分辨率特征平面体素模块 (multi-resolution HexPlane voxel module) 对单元体素中的每个Gaussian 的空间和时间信息进行编码。

每个体素模块定义为 R ( i , j ) , i , j ∈ { ( x , y ) , ( x , z ) , ( y , z ) , ( x , t ) , ( y , t ) , ( z , t ) } . R(i, j), {i, j} ∈ \{(x, y),(x, z),(y, z),(x, t),(y, t),(z, t)\}. R(i,j),i,j{(x,y),(x,z),(y,z),(x,t),(y,t),(z,t)}. 这样的编码方式将 4D 信息编码进 6 个二维体素平面。计算每个体素特征的公式如下:
f voxel  = ⋃ l ∏ P ( i , j ) , where  P ( i , j ) = interp ⁡ ( R ( i , j ) ) f_{\text {voxel }}=\bigcup_l \prod P(i, j), \text { where } P(i, j)=\operatorname{interp}(R(i, j)) fvoxel =lP(i,j), where P(i,j)=interp(R(i,j))

f voxel  f_{\text {voxel }} fvoxel  是神经体素的隐特征,利用双线性插值 (bilinear interpolation) 对附近的四个查询体素特征进行插值。

2. Gaussians Deformation Computation

MLP 用来解码和整合有用的特征信息,然后计算 X \mathcal{X} X S S S R R R 的变化量:
Δ X , Δ r , Δ s = g ( f voxel ) \Delta \mathcal{X}, \Delta r, \Delta s=g\left(f_{\text {voxel}}\right) ΔX,Δr,Δs=g(fvoxel)

于是可以计算 X ′ \mathcal{X}' X S ′ S' S R ′ R' R
( X ′ , r ′ , s ′ ) = ( X + Δ X , r + Δ r , s + Δ s ) \left(\mathcal{X}^{\prime}, r^{\prime}, s^{\prime}\right)=(\mathcal{X}+\Delta \mathcal{X}, r+\Delta r, s+\Delta s) (X,r,s)=(X+ΔX,r+Δr,s+Δs)

3. 优化

文中采取了两阶段训练策略:静态场景初始化和变形场微调;

  • 初始化阶段:主要优化静态场景的表示,即只优化 3D Gaussians 的参数;
  • 微调阶段:主要学习变形场的表示,即优化多分辨率神经体素和 MLP;
    在这里插入图片描述

使用重建损失来监督训练过程,并添加基于网格的 TV 损失 L t v \mathcal{L}_{tv} Ltv 到损失函数中:
L = ( C ^ − C ) 2 + L t v \mathcal{L}=(\hat{C}-C)^2+\mathcal{L}_{t v} L=(C^C)2+Ltv

四. 实验结果

4D-GS 在合成数据集和真实数据集上都进行测试,并根据图像的分辨率和场景的复杂性评估了渲染速度。对于合成数据集,4D-GS 在 RTX 3090 GPU 上以 800×800 的分辨率实现了 70 FPS 的渲染速度;对于真实数据集,4D-GS 在 RTX 3090 GPU 上以 1352×1014 的分辨率实现了 36 FPS 的渲染速度。通过实验表明,4D-GS 在实现实时渲染的同时保持了高质量的渲染效果。

1. 数据集

  • 合成数据集:使用 D-NeRF 中的 8 个合成场景,包括 Hell Warrior、Mutant、Hook、Bouncing Balls、Lego、T-Rex、Stand Up、Jumping Jacks。
  • 真实数据集:使用 Nerfies 和 DyNeRF 的真实场景数据集。

2. 对比实验

文中使用 PSNR、L-PIPS、SSIM 作为模型的评价指标,将 4D Gaussian Splatting 和 TiNeuVox-B、KPlanes、HexPlane-Slim、3D Gaussian Splatting 做了对比。定量结果见下表:
在这里插入图片描述

定性结果如图:
在这里插入图片描述

在这里插入图片描述

3. 消融实验

在这里插入图片描述

在这里插入图片描述

五. 总结

六. 复现


  1. 3D Gaussian Splatting:用于实时的辐射场渲染 ↩︎

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

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

相关文章

C#,《小白学程序》第二十一课:大数的减法(BigInteger Subtract)

1 文本格式 using System; using System.Linq; using System.Text; using System.Collections.Generic; /// <summary> /// 大数的&#xff08;加减乘除&#xff09;四则运算、阶乘运算 /// 乘法计算包括小学生算法、Karatsuba和Toom-Cook3算法 /// </summary> p…

python中模块的创建及引用(import as,import,from)

模块&#xff08;module&#xff09;简介&#xff1a; 1.模块化&#xff0c;模块化指将一个完整的程序分解为一个一个的小模块&#xff0c; 通过将模块组合&#xff0c;来搭建出一个完整的程序 2.不采用模块化就是统一将所有的代码编写到一个文件中&#xff0c;采用 模块化就是…

Redis-Redis 高并发分布式锁

集群分布式场景高并发 1.negix配置代理和路由 高并发场景超卖问题 1.使用原生redis控制超卖时(若是商品&#xff0c;则可以将商品id作为锁对象)&#xff0c;会遇到的问题 问题一&#xff1a;若直接使用&#xff1a;将获取锁的对象和设置的超时的时间分开&#xff0c;则不能控…

css实现图片绕中心旋转,鼠标悬浮按钮炫酷展示

vue模板中代码 <div class"contentBox clearfix home"><div class"circle"><img class"in-circle" src"../../assets/img/in-circle.png" alt""><img class"out-circle" src"../../as…

【Android】Android Framework系列--Launcher3各启动场景源码分析

Android Framework系列–Launcher3各启动场景源码分析 Launcher3启动场景 Launcher3是Android系统提供的默认桌面应用(Launcher)&#xff0c;它的源码路径在“packages/apps/Launcher3/”。 Launcher3的启动场景主要包括&#xff1a; 开机后启动&#xff1a;开机时&#xff…

Spring Boot 改版如何解决?使用阿里云创建项目、使用IDEA进行创建

接上次博客&#xff1a;JavaEE进阶&#xff08;2&#xff09;SpringBoot 快速上手&#xff08;环境准备、Maven&#xff1a;核心功能&#xff0c;Maven仓库、第⼀个SpringBoot程序&#xff1a;Spring介绍&#xff0c;Spring Boot介绍、创建项目&#xff09;-CSDN博客 目录 使…

网络篇---第一篇

系列文章目录 文章目录 系列文章目录前言一、HTTP 响应码有哪些?分别代表什么含义?二、Forward 和 Redirect 的区别?三、Get 和 Post 请求有哪些区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…

ctfshow sql

180 过滤%23 %23被过滤&#xff0c;没办法注释了&#xff0c;还可以用’1’1来闭合后边。 或者使用--%0c-- 1%0corder%0cby%0c3--%0c--1%0cunion%0cselect%0c1,2,database()--%0c--1%0cunion%0cselect%0c1,2,table_name%0cfrom%0cinformation_schema.tables%0cwhere%0ctable_…

YOLO目标检测——背包检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;各种背包检测数据集说明&#xff1a;背包检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(json)和yolo(txt)三种格式标签…

图论——最小割问题

Capacity&#xff08;S&#xff0c;T) Min-Cut(通俗的说就是用最小的力气隔断&#xff09; 最小割并不唯一 最大流最小割定理 对于一个网络流问题&#xff0c;最大流的流量最小割的容量 寻找最小割 可以使用Edmonds-karp or Dinic algorithm 首先寻找任意一个最大流&#xff…

LangChain 10思维链Chain of Thought一步一步的思考 think step by step

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

Linux内核--内存管理(一)任务空间管理

目录 一、引言 二、基本概念梳理 三、用户态进程内存管理 ------>3.1、用户态 ------>3.2、内核态 ------>3.3、内存管理结构 ------>3.4、mm_struct ------>4.5、vm_area_struct 四、内核态结构 ------>4.1、32位内核态结构 ------>4.2、64位…

2018年4月26日 Go生态洞察:Go新品牌形象及标识发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

从代码执行,看单片机内存的分配

1、单片机执行指令过程详解 单片机执行程序的过程&#xff0c;实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行&#xff0c;即取指令--分析指令--执行指令。 取指令的任务是&#xff1a;根据程序计数器PC中的值从程序存储器读…

C语言基础介绍

1. C语言基础知识 C语言是一种计算机编程语言&#xff0c;是一门用于编写系统软件和应用软件的高级语言。C语言的基础知识包括&#xff1a; 数据类型&#xff1a;C语言中的数据类型包括整型、浮点型、字符型等。 变量&#xff1a;C语言中使用变量来存储数据&#xff0c;变量必…

Spring RabbitMQ那些事(2-两种方式实现延时消息订阅)

目录 一、序言二、死信交换机和消息TTL实现延迟消息1、死信队列介绍2、代码示例(1) 死信交换机配置(2) 消息生产者(3) 消息消费者 3、测试用例 三、延迟消息交换机实现延迟消息1、安装延时消息插件2、代码示例(1) 延时消息交换机配置(2) 消息生产者(3) 消息消费者 3、测试用例 …

[Linux]进程创建➕进程终止

文章目录 1.再谈fork()函数1.1fork()创建子进程 OS都做了哪些工作?1.2对上述问题的理解1.3写时拷贝进行父子进程分离的优势1.4了解eip寄存器和pc1.5了解进程的上下文数据1.6对计算机组成的理解1.7fork常规用法1.8fork调用失败的原因 2.进程终止2.1进程终止时操作系统要做的工作…

人工智能-注意力机制之Transformer

Transformer 比较了卷积神经网络&#xff08;CNN&#xff09;、循环神经网络&#xff08;RNN&#xff09;和自注意力&#xff08;self-attention&#xff09;。值得注意的是&#xff0c;自注意力同时具有并行计算和最短的最大路径长度这两个优势。因此&#xff0c;使用自注意力…

13年老鸟总结,性能测试方法汇总+性能响应很慢排查方法(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、性能测试包含哪…

windows的bat文件(学习笔记)

简介 通过windows的cmd执行的批处理&#xff0c;扩展名可以是.bat或.cmd&#xff08;类似linux的shell脚本&#xff09; 所有语句符号不区分大小写 帮助提示信息&#xff1a;命令 /? 1 基本语法 (1) 注释&#xff1a;rem 注释文本不执行 (2) 关闭盘符输出&#xff1a;e…