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

news2025/1/9 1:26:39

在这里插入图片描述


标题: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数据集的视频的可视化结果。

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

  

在这里插入图片描述

  其他消融实验:

在这里插入图片描述

在这里插入图片描述


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

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

相关文章

【STM32+CubeMX】 新建一个工程(STM32F407)

相关文章&#xff1a; 【HAL库】 STM32CubeMX 教程 1 --- 下载、安装 目录 第一部分、新建工程 第二部分、工程文件解释 第三部分、编译验证工程 友情约定&#xff1a;本系列的前五篇&#xff0c;为了方便新手玩家熟悉CubeMX、Keil的使用&#xff0c;会详细地截图每一步Cu…

el-date-picker 不响应change事件的解决办法

前言 接到需要把element plus组件的日期时间选择器的input输入框展示隐藏&#xff0c;遇到点击确认按钮change事件不被触发问题&#xff0c;解决办法如下&#xff1a; ①visible-change的回调参考 即根据visible-change的方法里的回调参数进行需要操作 const visibleChange …

api开发如何在代码中使用京东商品详情接口的参数?

选择编程语言和相关工具 以 Python 为例&#xff0c;你可以使用requests库来发送 HTTP 请求获取接口数据。如果是 Java&#xff0c;可以使用OkHttp等库。 Python 示例 假设你已经安装了requests库&#xff0c;以下是一个简单的代码示例来获取和使用京东商品详情接口参数&#…

【docker系列】可视化Docker 管理工具——Portainer

1. 介绍 Portainer是一个可视化的Docker操作界面&#xff0c;提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作&#xff08;包括上传下载镜像&#xff0c;创建容器等操作&#xff09;、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录…

机器学习基础-大语言模型

目录 大语言模型的基本概念 “大”体现在什么地方&#xff1f; 预训练微调两阶段的基本流程和作用 第一阶段&#xff1a;利用语言模型进行无监督预训练 第二阶段&#xff1a;通过监督微调的模式解决下游任务 BERT模型中MLM和NSP机制基本概念 MLM NSP Prompt学习的基本概…

Ubuntu挂载Windows 磁盘,双系统

首先我们需要在终端输入这个命令&#xff0c;来查看磁盘分配情况 lsblk -f 找到需要挂载的磁盘&#xff0c;检查其类型&#xff08; 我的/dev/nvme2n1p1类型是ntfs&#xff0c;名字叫3500winData&#xff09; 然后新建一个挂载磁盘的目录&#xff0c;我的是/media/zeqi/3500wi…

Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解

文章目录 模式介绍优缺点适用场景结构案例实现注意事项 模式介绍 有时候需要向某些对象发送请求&#xff0c;但是并不知道请求的接收者是谁&#xff0c;也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序&#xff0c;使得请求发送者和请求接收者能够消除彼此…

如何很快将文件转换成另外一种编码格式?编码?按指定编码格式编译?如何检测文件编码格式?Java .class文件编码和JVM运行期内存编码?

如何很快将文件转换成另外一种编码格式? 利用VS Code右下角的"选择编码"功能&#xff0c;选择"通过编码保存"可以很方便将文件转换成另外一种编码格式。尤其&#xff0c;在测试w/ BOM或w/o BOM, 或者ANSI编码和UTF编码转换&#xff0c;特别方便。VS文件另…

AnaConda下载PyTorch慢的解决办法

使用Conda下载比较慢&#xff0c;改为pip下载 复制下载链接到迅雷下载 激活虚拟环境&#xff0c;安装whl&#xff0c;即可安装成功 pip install D:\openai.wiki\ChatGLM2-6B\torch-2.4.1cu121-cp38-cp38-win_amd64.whl

opencv摄像头标定程序实现

摄像头标定是计算机视觉中的一个重要步骤&#xff0c;用于确定摄像头的内参&#xff08;如焦距、主点、畸变系数等&#xff09;和外参&#xff08;如旋转矩阵和平移向量&#xff09;。OpenCV 提供了方便的工具来进行摄像头标定。下面分别给出 C 和 Python 的实现。 1. C 实现…

UE5AI感知组件

官方解释&#xff1a; AI感知系统为Pawn提供了一种从环境中接收数据的方式&#xff0c;例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件&#xff08;AIPerception Component&#xff09;是用于实现游戏中的非玩家角色&#xff08;NPC&#xff09;对环境和其…

Python生日祝福烟花

1. 实现效果 2. 素材加载 2个图片和3个音频 shoot_image pygame.image.load(shoot(已去底).jpg) # 加载拼接的发射图像 flower_image pygame.image.load(flower.jpg) # 加载拼接的烟花图 烟花不好去底 # 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大 shoo…

智能手机租赁系统全新模式改变消费习惯与商家盈利路径

内容概要 智能手机租赁系统的崛起&#xff0c;让我们瞄到了一个消费市场的新风向标。想象一下&#xff0c;传统上人们总是为了最新款手机奋不顾身地排队、借钱甚至是透支信用卡。现在&#xff0c;通过灵活的租赁选项&#xff0c;消费者可以更加随意地体验高科技产品&#xff0…

【简博士统计学习方法】第1章:3. 统计学习方法的三要素

3. 统计学习方法的三要素 3.1 监督学习的三要素 3.1.1 模型 假设空间&#xff08;Hypothesis Space&#xff09;&#xff1a;所有可能的条件概率分布或决策函数&#xff0c;用 F \mathcal{F} F表示。 若定义为决策函数的集合&#xff1a; F { f ∣ Y f ( X ) } \mathcal{F…

牛客网刷题 ——C语言初阶(2分支和循环-for)——打印菱形

1. 题目描述 用C语言在屏幕上输出以下图案&#xff1a; 2. 思路 我是先上手&#xff0c;先把上半部分打印出来&#xff0c;然后慢慢再来分析&#xff0c;下面这是我先把整个上半部分打印出来&#xff0c;因为空格不方便看是几个&#xff0c;这里先用&代替空格了 然后这里…

STM32——系统滴答定时器(SysTick寄存器详解)

文章目录 1.SysTick简介2.工作原理3.SysTick寄存器4.代码延时逻辑5.附上整体代码6.一些重要解释 1.SysTick简介 Cortex-M处理器内集成了一个小型的名为SysTick(系统节拍)的定时器,它属于NVIC的一部分,且可以产生 SysTick异常(异常类型#15)。SysTick为简单的向下计数的24位计数…

《Opencv》信用卡信息识别项目

目录 一、项目介绍 二、数据材料介绍 1、模板图片&#xff08;1张&#xff09; 2、需要处理的信用卡图片&#xff08;5张&#xff09; 三、实现过程 1、导入需要用到的库 2、设置命令行参数 3、模板图像中数字的定位处理 4、信用卡图像处理 5、模板匹配 四、总结 一…

密码学科普

1 信息传输中的安全隐患 1. 窃听 解决方案&#xff1a;明文加密&#xff0c;X只能窃听到密文 2. 假冒 解决方案&#xff1a;消息认证码或者数字签名 3. 篡改 解决方案&#xff1a;消息认证码或者数字签名 4. 事后否认 解决方案&#xff1a;数字签名 2 对称加密/非对称加密 1…

复合机器人助力手机壳cnc加工向自动化升级

在当今竞争激烈的制造业领域&#xff0c;如何提高生产效率、降低成本、提升产品质量&#xff0c;成为众多企业面临的关键挑战。尤其是在手机壳 CNC 加工这一细分行业&#xff0c;随着市场需求的持续增长&#xff0c;对生产效能的要求愈发严苛。而复合机器人的出现&#xff0c;正…

爬虫学习记录

1.概念 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程 通用爬虫:抓取的是一整张页面数据聚焦爬虫:抓取的是页面中的特定局部内容增量式爬虫:监测网站中数据更新的情况,只会抓取网站中最新更新出来的数据 robots.txt协议: 君子协议,网站后面添加robotx.txt…