当前位置: 首页 > article >正文

【动态重建】时间高斯分层的长体积视频

在这里插入图片描述


标题:Representing Long Volumetric Video with Temporal Gaussian Hierarchy
来源:浙江大学
链接:https://zju3dv.github.io/longvolcap/

文章目录

  • 摘要
  • 一、前言
  • 二、主要方法
    • 2.1 时间高斯分层
    • 2.2 高效渲染
    • 2.3 层次结构更新
    • 2.4 紧凑的外观模型
    • 2.5 加速渲染
    • 2.6 训练细节
  • 三、实验
  • 总结


摘要

  本文从多视点RGB视频中重建长体积视频。最近的动态视图合成方法利用强大的四维表示,如特征网格或点云序列,来实现高质量的渲染结果。然而,它们通常被限制在较短的(1∼2s)视频剪辑中,并且在处理较长的视频时经常遭受较大的内存占用。为了解决这一问题,我们提出了一种新的四维表示,称为 时间高斯分层能够紧凑地建模长的体积视频 。由于动态场景中通常存在不同程度的时间冗余,由不同速度变化的区域组成。基于此,我们的方法建立了一个 四维的高斯原语层,其中,(1).每个层次分别描述具有不同内容变化程度的场景区域,并自适应地共享高斯原语来表示不同时间段上不变的场景内容,从而有效地减少了高斯原语的数量。此外,(2).高斯层分层的树状结构能够有效地用高斯原语的子集来表示特定时刻的场景,GPU内存的使用几乎恒定,而不管视频长度。此外,我们设计了一个 (3).紧凑的外观模型,它混合了漫射高斯和视图相关的高斯分布,以进一步减少模型大小,同时保持渲染质量。我们还 (4).开发了一个基于硬件加速技术的高斯原语的栅格化管道,以提高渲染速度。大量的实验结果表明,我们的方法在训练成本、渲染速度和存储使用方面优于其他方法。

在这里插入图片描述

  

  


一、前言

   体积视频旨在从多个视点捕捉动态场景,并提供自由视点合成的功能,使用户能够与虚拟对象或角色进行互动,以获得沉浸式的体验。高质量的体积视频的可用性在许多领域都至关重要,包括AR/VR、游戏、远程呈现等。虽然传统的体积视频系统[Collet等人2015;Wu等人2020]显示了令人印象深刻的结果,但它们通常需要定制的硬件和复杂的工作室设置,这限制了它们的可访问性和实用性。

  新兴的神经渲染方法提供了执行基于隐式或显式4D表示的动态场景的逼真视图合成的能力。早期工作[Li等人,2022;Pumarola等人,2021a]旨在利用具有时间嵌入的神经辐射场来参数化动态场景。尽管它的存储模型规模有限,但这种表示的表示能力和效率有限,导致每帧的低质量渲染需要几秒甚至几分钟。最近的研究[曹和约翰逊2023;弗里多维奇-基尔等人2023;王等人2022;徐等人2024b]使用更强大的4D表示,通过特征网格或点云序列,以提高渲染保真度或效率。然而,这些方法通常只适用于短体积视频序列(1∼2s)[Xu等,2024b;Yang等,2023b]。当应用于较长的视频(1∼10分钟)时,这些方法需要非常大的模型,考虑到实际存储大小的限制,提出了伸缩性的挑战。

  在本文中,我们引入了时间高斯分层,这是一种新的四维表示方法,用于长体积视频的紧凑建模,同时在训练和渲染方面都很有效。我们的关键观察结果是,动态场景通常由变化缓慢的区域和变化迅速的区域组成,反映了不同程度的时间冗余。基于这一观察结果,我们的方法构建了场景原语的多层次层次结构,例如,3D或4D高斯飞溅,以表示4D场景,其中不同layer的模型区域具有不同程度的内容变化,并为每个layer分配不同数量的场景原语,旨在明确地处理时间冗余。具体来说,如图3所示,所提出的层次表示由多个层次组成,每个层次都包含一组负责在不同时间尺度内建模场景的片段。在每个片段中,我们利用一组四维高斯原语来表示场景,考虑到它们的高表示能力和渲染速度。我们的实验结果表明,在所提出的层次结构中,运动较慢的场景区域通常在较长时间尺度的片段内共享高斯原语,从而减少了场景原语的数量,导致模型大小的减小。此外,时间高斯层次结构允许我们在一个时间步长表示场景的片段子集,而不是所有的高斯原语,从而进一步减少运行时内存

  时间高斯层次结构的另一个优点是,它使我们能够保持有效的训练和渲染,而不考虑体积视频的长度。我们表示的树状结构可以有效地讲segments 位于特定的时刻。因此,我们可以将高斯层次存储在随机存取存储器中,并在特定时刻的场景训练或渲染时将相应的块加载到GPU内存中。该策略确保了运行期间GPU内存使用保持不变,无论体积视频的长度,保证了高效的训练和渲染

  为了进一步减小体积视频的模型尺寸,我们引入了一种由漫射高斯和视图相关高斯模型组成的混合外观模型,该模型自适应地将表征能力分配给目标场景的不同区域。该策略还可以缓解高斯原语的过拟合问题,同时保持了动态视图相关外观建模的高能力。最后,我们开发了一个gpu加速的算法和硬件加速的栅格化管道来实现我们的表示,以大大提高渲染速度。如图1所示,我们的方法在训练成本、渲染效率和存储开销等方面都明显优于以往的方法,同时获得了更好的渲染质量

  实验评估采用广泛数据集的动态视图的多视图输入。此外,我们收集了一组长多视图序列(5-10分钟)来证明我们的方法在视频长度上的可伸缩性。硬件使用RTX 4090 GPU,以1080p的分辨率处理18,000帧的视频,实现了450 FPS的渲染速度。我们还收集了一个长的真实世界的多视图数据集,称为SelfCap,来验证实验。

二、主要方法

  给定多视图视频,能有效重建紧凑和轻量级的4D体积表示。首先开发了一种新的四维表示,称为时间高斯分层,以有效地建模在长动态场景中不同尺度的运动和动态(2.1节).然后,我们提出了一种紧凑的外观表示法(2.2节),其中只有少数与视角相关的点,使用球面谐波的所有degree建模,以在保持渲染质量的同时大大降低表示长体积视频的存储成本。最后开发了一个渲染管道,具有硬件加速栅格化和预计算,以实时渲染TGH(2.4节)。概述见图3。

在这里插入图片描述

损失函数:

在这里插入图片描述

2.1 时间高斯分层

  时间高斯分层,通过利用树状结构来管理不同运动粒度的分层时间片段,从而为任意长度的体积视频保持几乎恒定的计算成本(VRAM和速度)

  图3(a)是时间高斯分层的整体结构。具体地,每个layer有许多相同长度的temporal segments(时间段)。更深层的segment长度是前一层的一半。视频总时间为 T T T,layer的深度为 L L L,root leval的segment长度为 S S S。因此,segment s l s_l sl的时间scale和第𝑙层的segment数量 N l N_l Nl为:

在这里插入图片描述
此外,还附加了一个长度为 ∞ ∞ 的全局segment 来表示场景的静态部分。每个segment 存储一组4DGS,表示如左侧;并利用右侧公式 N ( t ; μ t , σ t ) N(t;μ_t,σ_t) N(t;μt,σt)的逆函数来计算高斯的影响半径 r r r和影响范围[𝜏,𝜏]:

在这里插入图片描述

  coarse level的 long segments 用于建模缓慢运动, while finer level的short segments 用于建模快速运动。为确保segment的范围覆盖了其高斯影响半径,并且不能被下一层中的segment覆盖,利用temporal scale s l s_l sl计算第 𝑛 个level的第𝑙个segment的起始和结束时间戳(式5),并使用公式6将4DGS放置在结构中:

在这里插入图片描述
𝑚∈{1,2……𝑀}表示所有的segment索引,𝑀为下一级𝑙+1中的segment数,来确保每个4DGS的segment最短。

2.2 高效渲染

   只采样影响该时间戳𝑡的4DGS来渲染图像:由于segment不重叠,时间戳 t t t 只受level 𝑙 的一个segment影响,对应索引为 n l t = f l o o r ( t s l ) n^t_l=floor(\frac {t}{s_l}) nlt=floor(slt) ,得到跨越所有level的𝐿个segment。该识别过程计算复杂度为𝑂( l o g N log_N logN),𝑁是片段总数。然后将受影响的segment 所有4DGS与索引{ n l t ∣ l ∈ 1 … L n^t_l|l∈1…L nltl1L}连接,以获得streaming 斯数据 G t G_t Gt,使用可微光栅化器渲染。

  实验将时间高斯层次结构置于RAM中,只将受影响的片段复制到GPU内存中 。这有助于节省大量的GPU内存,并保持接近恒定的GPU内存使用,而不管体积视频的长度,而朴素的4DGS,计算所有4D高斯的时间范围,导致大量的GPU内存使用。

2.3 层次结构更新

  由于在level而不是单个segment上更新高斯,计算复杂度仍然是𝑂(𝐿),其中𝐿是层次结构中级level总数。由于𝐿相对于所表示的体积视频的长度是一个常数,这有助于保持我们的方法的恒定的内存使用和迭代速度。

2.4 紧凑的外观模型

  体积视频的散射部分,并不一定需要high-degree的SH来精确建模。直观地说,漫反射高斯应该在其残差SH系数h上得到一个低幅度的梯度(即使它们被呈现和优化为视图依赖的系数),因此可以使用零初始化和梯度阈值策略来识别这些高斯。首先用零初始化所有高斯的残差SH系数h。然后,定义一个梯度阈值 g t h g_{th} gth,将低幅度的|| g h ∣ ∣ 2 g_h||_2 gh2< g t h g_{th} gth的梯度改为零。

  

  

2.5 加速渲染

  给定时间戳𝑡,我们使用等式(7)获得流高斯 G t G_t Gt并根据视图空间深度按前后顺序排列,并在GPU上进行快速基数排序。然后将这些排序后的高斯分布转移到硬件光栅化器,并使用三维高斯溅算法投影到屏幕空间,得到二维高斯分布。由于二维高斯值不能被高斯化器直接识别来计算高斯像素对,我们将二维高斯值转换为具有不透明度阈值的二维矩形原语(quad)。硬件栅格化管道然后将quad的集合栅格化到屏幕上,生成quad-pixel pairs(fragments),其中我们可以通过计算multivariant Gaussian distribution function容易地计算像素位置的不透明度和颜色。由于高斯分布是按背到前的顺序排序的,硬件光栅化器可以有效地对特定像素对应的所有片段执行背对前的alpha混合,以计算其最终颜色,该颜色被连接成最终渲染的图像。通过直接利用硬件的栅格化管道和使用GPU进行排序,这种实现可以更好地利用GPU,并显著提高渲染效率。如图8所示(实现了5倍加速)。

在这里插入图片描述

2.6 训练细节

  通常,一个1200帧的序列需要训练50k次迭代,在RTX 4090 GPU上大约需要2个小时。根据序列长度线性地缩放迭代次数,每100次迭代,根据视图空间梯度和不透明度值对高斯数进行分割、克隆和剪枝,从而对高斯数进行自适应控制。由于时间高斯层次结构,使得GS的自适应控制可以被限制在前一次迭代中的采样到的segment,这显著降低了这一阶段的GPU内存使用和计算成本

  超参数。layer数量𝐿=9,,root segment 𝑆=10𝑠。根据4DGS ,将边界时间高斯 o t h o_{th} oth设置为0.05。对于紧凑外观模型,我们将用于分离弥散和视图相关高斯分布的梯度阈值𝑔𝑡ℎ设置为1.0𝑒−6,截止比𝜆ℎ设置为0.15。𝜆𝑚、𝜆𝑠、𝜆𝑝的权重分别根据经验设置为0.8、0.2和0.01

  数据集Neural3DV由一个带有19-21台摄像机的多视图系统捕获,分辨率为2704×2028和30FPS。ENeRF-outdoor是一个户外动态数据集,18个同步像机在1920×1080和60FPS收集。我们选择了三个1200帧的序列进行评估: actor1_4、actor2_3和actor5_6。MobileStage关注动态人类,用24个 1080p摄像机以30FPS记录。CMU-Panopisic是一个大规模的多视图数据集,捕捉日常人类活动。我们使用了31台高清相机的全分辨率和剪辑的全长度,三个子序列(sports
clip, namely the box, softball and basketball subsequences)的分辨率分别为1080p和1000帧、800帧和700帧。我们还构建了SelfCap数据集,由三个动态视频组成,每个视频以60帧/秒的4K分辨率使用22个iPhone相机的同步阵列拍摄。该数据集中的视频长度从2分钟到10分钟,明显超过了以前的数据集的持续时间。所有数据集都是使用同步的静态相机阵列捕获的,除了共享相机参数外,没有明确的时间一致性

  

  

三、实验

  定性和定量比较见表1和图4到6。

在这里插入图片描述
在这里插入图片描述

  上述实验证明了我们的方法在40∼50秒范围内的视频中的可行性。与以前只能处理1个∼2s的方法相比,我们的方法取得了显著的改进。为了进一步验证更长视频的潜力,我们在新的数据集SelfCap上测试了我们的方法,它跨越6000帧甚至更长。得益于我们的时间高斯层次结构,我们的方法可以保持非常低的训练成本,使它能够代表大量的体积视频。在图7中,我们展示了来自SelfCap数据集的视频的可视化结果。

在这里插入图片描述
在这里插入图片描述

  

在这里插入图片描述

  其他消融实验:

在这里插入图片描述

在这里插入图片描述


总结

  

  

  







d \sqrt{d} d 1 8 \frac {1}{8} 81 x ˉ \bar{x} xˉ x ^ \hat{x} x^ x ~ \tilde{x} x~ ϵ \epsilon ϵ
ϕ \phi ϕ


http://www.kler.cn/a/466970.html

相关文章:

  • 场馆预定平台高并发时间段预定实现V1
  • 热备份路由HSRP及配置案例
  • ESP8266+STM32+阿里云保姆级教程(AT指令+MQTT)
  • 【python因果库实战15】因果生存分析4
  • 代码随想录算法【Day11】
  • 【每日学点鸿蒙知识】广告ID、NFC手机充值、CSS支持语法、PC与模拟器交互、SO热更新等
  • Excel使用VLOOKUP时注意绝对引用和相对引用区别
  • 基于Java的超级玛丽游戏的设计与实现【源码+文档+部署讲解】
  • SQLite AND/OR 运算符
  • 【信息系统项目管理师】高分论文:论信息系统项目的风险管理(数字化联合审查管理系统)
  • JVM学习指南(9)-JVM运行时数据区
  • Kotlin 协程基础知识总结六 —— 协程 Flow 的综合应用
  • rocketmq-pull模式-消费重平衡和拉取PullTaskImpl线程
  • ubuntu1604 apt镜像源切换
  • 使用PyTorch实现基于稀疏编码的生成对抗网络(GAN)在CIFAR-10数据集上的应用
  • 计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习
  • STM32-笔记34-4G遥控灯
  • Golang:使用minio替代文件系统实战教程
  • NLP CH3复习
  • springboot3 性能优化
  • 1.4 spring八股文学习
  • 机器学习基础例子篇
  • 如何通过 5 种有用的方法将 iPhone 连接到戴尔笔记本电脑?
  • PDF文件提示-文档无法打印-的解决办法
  • 跟着问题学3.3——Faster R-CNN详解及代码实战(1)
  • 【AimRT】AimRT Hello World