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

news2024/11/28 0:37:59

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

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

相关文章

Java作业四

要求:编写带图形界面的聊天程序,实现让客户可以持续地发送消息给服务器,服务器也可以即时看到客户端发送的消息,并回消息给客户端。 程序运行界面如下: 老师写的: 1、客户端 package Demo02; import java.…

VM虚拟机中Ubuntu14.04安装VM tools后仍不能全屏显示

1、查看Ubuntu所支持的分辨率大小。 在终端处输入: xrandr,回车 2、输入你想设置的分辨率参数。 我设置的为1360x768,大家可以根据自己的具体设备设置。 在终端输入:xrandr -s 1360x768 注意:这里1360后边是字母 x 且…

C语言-内存函数详解

文章目录 1. memcpy使用和模拟实现2. memmove使用和模拟实现3. memset函数的使用4. memcmp函数的使用 1. memcpy使用和模拟实现 返回类型和参数: void * memcpy ( void * destination, const void * source, size_t num );1.函数memcpy从source的位置开始向后复制…

电子学会C/C++编程等级考试2023年03月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数字字符求和 请编写一个程序实现以下功能:从一个字符串中,提取出所有的数字字符即0-9,并作为数求和。 时间限制:1000 内存限制:65536输入 一行字符串,长度不超过100,字符串中不含空格。输出 字符串中所有数字字符作为数…

【Mybatis】预编译/即时sql 数据库连接池

回顾 Mybatis是一个持久层框架.有两种方式(这两种方式可以共存) 1.注解 2.xml 一.传递参数 以使用#{} 来接受参数为例 (以上两种方式一样适用的) 1)传递单个参数 #{} 可以为任意名称 2)多个参数 默认的参数名称就是接口方法声明的形参 3)参数为对象 默认给每个对象的每个属性都…

探索 Linux vim/vi 编辑器:介绍、模式以及基本操作演示

💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点…

笔记(三)maxflow push relabel与图像分割

笔记(三)maxflow push relabel与图像分割 1. Push-Relabel算法思想2.Push-Relabel算法原理示意图3.Push-Relabel算法具体实例4. push relabel与图割 1. Push-Relabel算法思想 对于一个网络流图: 该算法直观可以这样理解,先在源节点处加入充足…

2018年1月22日 Go生态洞察:Hello, 中国!

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Java毕业设计 SpringBoot 车辆充电桩系统

Java毕业设计 SpringBoot 车辆充电桩系统 SpringBoot 车辆充电桩系统 功能介绍 首页 图片轮播 登录注册 充电桩展示 搜索充电桩 充电桩报修 充电常识 个人中心 我的收藏 后台管理 登录 首页 个人中心 维修员管理 用户管理 电桩类别管理 充电桩管理 充电桩报修管理 维修回复管…

DBS note4:Buffer Management

目录 1、介绍 2、缓冲池 3、处理页面请求 4、LRU替换和时钟策略 1)顺序扫描性能 - LRU 5、最近最常使用替换策略(MRU Replacement) 1)Sequential Scanning Performance - MRU 6、练习题 1)判断真假 2&#xf…

HCIP-十、BGP基础

十、BGP基础 实验拓扑实验需求及解法1.R1 属于 AS100,R2/3/4 属于 AS200,R5 属于 AS3002.AS200 内运行 OSPF3.建立 IBGP 邻居4.建立 EBGP 邻居5.BGP 发布路由6.路由黑洞 实验拓扑 实验需求及解法 本实验模拟 ISP 网络拓扑,运行 BGP。如图所示…

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

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

chrome driver 截图和填表

昨天突然有一个需求(自己的),想把某个网站题目主体部分翻译并保存成图片,开始时用了国内网站的翻译(人工、简单翻译),后来发现很多地方翻译的不尽人意,于是只好用翻译插件对原始网站…

【H5 Canvas】【平面几何】特殊图形绘制(【带旋转】箭头/正多边形/正多尖角形等)

文章目录 直线/弧线 箭头 直线/弧线 箭头 // startX,startY 起始坐标 // endX,endY 结束坐标 // radian 圆弧角度,取值[0,PI]; 0表示画直线箭头,否则画圆弧箭头 CanvasRenderingContext2D.prototype.drawArrow function(startX,startY,endX,endY,radia…

【Spring篇】spring核心——AOP面向切面编程

目录 想要彻底理解AOP,我觉得你的先要了解框架的模块化思想,为此先记录框架在讲AOP 什么是java框架?为什么要出现框架? 我总结以下七点来讲述和帮助理解java框架思想 什么是AOP? 如何理解上面这句话呢&#xff1…

HarmonyOS安装三方库遇到的问题

使用开发电脑系统为:MacOS, 开发工具为:DevEco-Studio版本号3.1.1 Release。在控制栏使用终端工具输入命令:ohpm install ohos/lottie遇到的第一个问题如下图。 解决方案: 1、在首选项中找到ohpm的安装路径。 2、打开bash_profil…

电子学会C/C++编程等级考试2022年06月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:小白鼠再排队 N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”,“blue”等字符串来表示。不同的小白…

pyhon数据分析A股股票策略实际买卖总结(每月末更新数据)

简介 本篇文章主要记录python数据分析a股股票选股后实际买卖的记录。 选股策略 低位寻股&#xff0c;筛选出低位股价股票已经做过调整的股票&#xff0c;做短线交易&#xff08;不超过7天&#xff09;&#xff0c;不贪&#xff0c;小赚即走。分三个时段&#xff0c;开盘三十…

SSM企业风向管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 企业风向管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库 &#xff0c;系统主要采用B/…

决策树(第四周)

一、决策树基本原理 如下图所示&#xff0c;是一个用来辨别是否是猫的二分类器。输入值有三个&#xff08;x1&#xff0c;x2&#xff0c;x3&#xff09;&#xff08;耳朵形状&#xff0c;脸形状&#xff0c;胡须&#xff09;&#xff0c;其中x1{尖的&#xff0c;圆的}&#xf…