动态 3D 高斯:摘要
我们提出了一种方法,同时解决动态场景新视角合成和所有稠密场景元素的六自由度(6-DOF)跟踪任务。我们采用了一种基于分析的合成框架,受到最近将场景建模为一组 3D 高斯的工作的启发,通过可微渲染优化来重建输入图像。为了建模动态场景,我们允许高斯随时间移动和旋转,同时保持其颜色、不透明度和大小的持久性。通过用局部刚性约束对高斯的运动和旋转进行正则化,我们展示了我们的动态 3D 高斯能够正确地建模物理空间相同区域的变化,包括该空间的旋转。稠密的 6-DOF 跟踪和动态重建自然地从持久动态视角合成中产生,无需任何对应关系或流作为输入。我们展示了由我们的方法所支持的大量下游应用,包括第一人称视角合成、动态组合场景合成和 4D 视频编辑。
引言
持久动态 3D 世界建模对于判别和生成的人工智能来说都具有变革意义。在判别方面,这将能够在时间上重建场景的每个部分的度量空间。建模当前一切事物的位置、曾经的位置以及其移动方向,对于许多应用至关重要,包括机器人、增强现实和自动驾驶。在生成型 AI 中,这样的模型可以促进新形式的内容创作,例如用于电影、电子游戏或元宇宙的易于控制和编辑的高分辨率动态 3D 资产。许多此类应用需要可扩展的方法,可以在高分辨率图像上实时运行。迄今为止,还没有一种方法能够在保持实时训练和渲染能力的同时,针对任意动态场景生成具有高准确度跟踪和视觉吸引力的新视角的照片级重建。
在本文中,我们提出了一种同时解决动态 3D 场景重建和稠密非刚性长期 6-DOF 场景跟踪的判别任务,以及解决动态新视角合成的生成任务的方法。我们在分析-合成框架中对这些任务进行公式化,即我们构建了一个与所有输入观测(来自不同时间步和相机的图像)一致的持久动态 3D 表示,通过正确建模物理空间的一致性先验,自然地实现了跟踪。3D 高斯 Splatting [17] 最近作为一种建模 3D 静态场景的有前途的方法出现。它将复杂场景表示为大量着色的 3D 高斯组合,通过基于 Splatting 的光栅化渲染到相机视图中。这些高斯的位置、大小、旋转、颜色和不透明度可以通过可微渲染和基于梯度的优化进行调整,以使它们表示由一组输入图像给出的 3D 场景。在本文中,我们将该方法从仅建模静态场景扩展到动态场景。
本文提出了一种新方法,可以同时解决动态 3D 场景重建 (Dynamic 3D Scene Reconstruction)和稠密非刚性长期 6 自由度(6-DOF)场景跟踪 (Dense Non-Rigid Long-Term 6-DOF Scene Tracking),并完成动态新视角合成 (Dynamic Novel View Synthesis)。通过分析-合成框架,本文构建了一个持久的动态 3D 表示,该表示与所有输入图像一致。关键见解是:保持高斯的颜色、不透明度和大小不变,仅允许其位置和方向变化,从而使高斯表示为基于粒子的物理模型,实现动态场景的跟踪和重建。此外,该方法使用局部刚性先验 (Local Rigidity Prior)、局部旋转相似性先验 (Local Rotational Similarity Prior)和长期局部等距先验(Long-Term Local Isometry Prior),确保粒子在局部邻域内保持近似刚性移动,并在所有时间步中相邻粒子保持接近。
与传统的欧拉表示法 (Eulerian Representation)和拉格朗日表示法 (Lagrangian Representation)相比,该方法属于拉格朗日表示,但通过使用定向粒子来实现更丰富的物理先验和完整的 6 自由度运动 (Full 6-DOF Motion)的重建。实验结果显示,使用 CMU Panoptic Studio 数据集,该方法在动态新视角渲染上达到了28.7 PSNR ,渲染速度为850 FPS ,在 RTX 3090 GPU 上训练 150 个时间步仅需2 小时 。此外,本文实现了平均 L2 误差仅为2.21 厘米 的 3D 场景跟踪,2D 跟踪的平均归一化像素误差为1.57,比以前的方法提高了一个数量级(10 倍)。
方法的显著特点是,跟踪完全基于逐帧图像渲染 (Tracking Derived Solely from Frame-by-Frame Rendering),无需光流、姿态骨架或其他形式的对应信息作为输入。这种动态 3D 高斯方法适合用于各种创意场景编辑技术,如在所有时间步中传播编辑、添加或移除动态对象等,且具有极快的渲染和训练时间,适用于实时渲染应用(Real-Time Rendering Applications)。
相关工作
本文提出了一种统一的分析-合成框架,致力于解决动态新视角合成 (Dynamic Novel View Synthesis)、长期点跟踪 (Long-Term Point Tracking)和动态重建(Dynamic Reconstruction)的组合任务。本文的方法采用多相机捕获数据,在动态场景中实现了高效的视角合成、点跟踪和重建。
动态新视角合成
自 NeRF [25] 发布以来,新视角合成领域迅速发展,大量"动态 NeRF"方法将 3D 辐射场扩展到4D 动态领域(4D Dynamic Domain)。这些方法一般分为以下几类:
- 单独表示拟合(Separate Representation per Timestep):无法建模时间上的对应关系 [2, 43]。
- 欧拉表示法 (Eulerian Representation):在4D 时空网格(4D Spatiotemporal Grid)上表示场景,但无法生成时间上的对应关系 [5, 10, 36]。
- 标准时间步变形(Canonical Timestep Deformation):使用变形场从一个标准时间步变形到其余时间步,通常只产生单向的对应关系 [8, 21, 22, 28, 29, 32, 40, 44]。
- 模板引导方法 (Template Guided Methods):通过预定义模板(例如人类姿态骨架,Human-Pose Skeleton)对动态场景进行建模,但需要先验知识 [13, 20, 42]。
- 基于点的方法 (Point-Based Methods):利用自然的拉格朗日表示(Lagrangian Representation)生成时间上的对应关系,但未能像 MLP 或基于网格的方法那样获得广泛关注 [1, 45]。
长期点跟踪
传统的视频跟踪算法通常关注跟踪整个对象或在两个时间步之间跟踪稠密场景点 [19, 30, 38]。近年来,长期稠密点跟踪 (Long-Term Dense Point Tracking)成为热点,目的是在整个视频中跟踪每个像素 [6, 7, 12, 16, 40, 47]。本文将这一任务扩展到3D 场景 中,并使用多相机设置进行评估。与 OmniMotion [40] 类似的方法相比,OmniMotion 专注于单目视频,而我们使用多相机设置,实现了度量 3D 空间中的跟踪。此外,我们的方法无需光流输入(Optical Flow),而是通过物理先验直接实现持久的表示和跟踪。
动态重建
除了辐射场方法外,还有其他方法解决了动态重建 (Dynamic Reconstruction)任务,这些方法往往依赖深度摄像头(Depth Camera)或假设点云为输入 [3, 14, 23, 27, 31, 34]。与我们最接近的方法 [14] 需要 480 个输入摄像头以及预先计算的光流关系,而我们的方法仅需 27 个摄像头,并且直接实现了长期 3D 点轨迹的预测和重建。
方法
总览
本文提出了一种方法,通过时间持久的方式,使用多视角输入对动态 3D 场景 (Dynamic 3D Scene)进行重建。本文的方法基于测试时优化,逐时间步进行重建,使得场景中的3D 点 (3D Points)和旋转(Rotation)在时间上保持一致。
动态 3D 高斯表示
动态场景重建
本文中,动态场景表示 ( S ) (S) (S) 由一组动态 3D 高斯(Dynamic 3D Gaussians)参数化。每个高斯具有以下参数:
- 3D 中心 (3D Center):每个时间步 ( x t , y t , z t ) (x_t, y_t, z_t) (xt,yt,zt)。
- 3D 旋转 (3D Rotation):通过四元数 (Quaternion) ( q w t , q x t , q y t , q z t ) (q_{wt}, q_{xt}, q_{yt}, q_{zt}) (qwt,qxt,qyt,qzt) 参数化。
- 3D 大小 (3D Size):在所有时间步中保持一致 ( s x , s y , s z ) (s_x, s_y, s_z) (sx,sy,sz)。
- 颜色 (Color):在所有时间步中保持一致 ( r , g , b ) (r, g, b) (r,g,b)。
- 不透明度逻辑值 (Opacity Logit):在所有时间步中保持一致 ( o ) (o) (o)。
- 背景逻辑值 (Background Logit):在时间步中保持一致 ( b g ) (bg) (bg)。
在实验中,场景通常由 200-300k 个高斯表示,其中只有 30-100k 个高斯不属于静态背景。每个高斯可以视为代表了物理空间中的某一区域,并对其影响,影响程度由不透明度决定。
f i , t ( p ) = σ ( o i ) exp ( − 1 2 ( p − μ i , t ) T Σ i , t − 1 ( p − μ i , t ) ) f_{i,t}(p) = \sigma(o_i) \exp \left( -\frac{1}{2} (p - \mu_{i,t})^T \Sigma^{-1}{i,t} (p - \mu{i,t}) \right) fi,t(p)=σ(oi)exp(−21(p−μi,t)TΣi,t−1(p−μi,t))
- 高斯中心 (Gaussian Center) μ i , t = [ x i , t , y i , t , z i , t ] T \mu_{i,t} = [x_{i,t}, y_{i,t}, z_{i,t}]^T μi,t=[xi,t,yi,t,zi,t]T。
- 协方差矩阵 (Covariance Matrix) Σ i , t = R i , t S i S i T R i , t T \Sigma_{i,t} = R_{i,t} S_i S_i^T R_{i,t}^T Σi,t=Ri,tSiSiTRi,tT,由缩放分量 (Scaling Component) S i S_i Si 和旋转分量 (Rotation Component) R i , t R_{i,t} Ri,t 组合得到。
通过固定高斯在时间上的大小、颜色和不透明度,使得每个高斯在时间上动态移动的同时,代表相同的物理区域,从而实现整个场景的6 自由度(6-DOF)跟踪。
可微渲染与高斯 3D Splatting
为了优化高斯的参数以表示场景,我们需要将高斯以可微的方式 (Differentiable Manner)渲染到图像中。在本文中,我们使用了来自 [17] 的可微 3D 高斯渲染器 (Differentiable 3D Gaussian Renderer),并将其扩展到动态场景中。具体做法是将 3D 高斯的影响函数沿深度维度进行积分投影,近似为像素坐标中的2D 高斯影响函数(2D Gaussian Influence Function)。
影响函数的评估
我们可以在 2D 中对每个像素进行高斯影响函数 (Gaussian Influence Function) f f f 的评估。通过对高斯按深度排序,并使用 Max [24] 体渲染公式进行前向到后体渲染,最终得到渲染图像:
C p i x = ∑ i ∈ S c i f i , pix 2 D ∏ j = 1 i − 1 ( 1 − f j , pix 2 D ) C_{pix} = \sum_{i \in S} c_i f_{i,\text{pix}}^{2D} \prod_{j=1}^{i-1} (1 - f_{j,\text{pix}}^{2D}) Cpix=i∈S∑cifi,pix2Dj=1∏i−1(1−fj,pix2D)
其中 C p i x C_{pix} Cpix 是每个像素的最终渲染颜色, c i c_i ci 是每个高斯的颜色, f i , pix 2 D f_{i,\text{pix}}^{2D} fi,pix2D 是高斯对该像素的影响。该实现使用了一些图形和 CUDA 优化技术(CUDA Optimization Techniques)来实现高效渲染。
基于物理的正则化先验
为了使场景在时间上保持一致,我们引入了三个正则化损失(Regularization Losses):
-
局部刚性损失 (Local Rigidity Loss) L r i g i d L_{rigid} Lrigid:确保相邻的高斯随着时间步保持刚体变换。理解: 对于每个高斯 i附近的高斯 j应该在时间步之间以跟随 i的坐标系刚体变换的方式移动。如公式所示,中心位置j与中间位置i(都是向量,分别是时刻为t-1,以及时刻为t)做差,我们把范数里面的左乘 R i , t − 1 − 1 R_{i,t-1}^{-1} Ri,t−1−1,就可以得到u的向量差/旋转矩阵【这就代表着i附近的点需要跟i保持同步,也就是距离不变(理解的话就是i与j的距离在R方向的投影是一样的,而且这个地方我理解的是这个地方也变相的约束了局部旋转)】
-
局部旋转相似性损失 (Local Rotation Similarity Loss) L r o t L_{rot} Lrot:使相邻高斯在时间步之间具有相似的旋转。【这个地方我感觉有点点奇怪,这里的四元数矩阵到底有没有被归一化呢,既然说是局部旋转相似的话,为什么直接考虑归一化后的旋转矩阵呢(但是由于算了 q j , t q_{j,t} qj,t q j , t − 1 − 1 q_{j,t-1}^{-1} qj,t−1−1),我感觉其实做不做归一化应该是一样的,大家可以手动验证一下,而且后面实验表明,loss rigid的作用比这个效果好很多,我在想是不是也是因为上面的约束已经涵盖了一部分的旋转,导致这个地方只需要小修小补一下,先走大步,然后在走小步子的感觉】
-
长期局部等距损失 (Long-Term Local Isometry Loss) L i s o L_{iso} Liso:保持高斯之间的距离恒定。【这个我感觉就不需要说明了,就是算一个j,i之间的距离,前面约束了短期,这个地方想约束长期距离】
为什么我感觉 L r o t L_{rot} Lrot与 L i s o L_{iso} Liso有点像1的补充呢,从实验结果来看在缺少 L r i g i d L_{rigid} Lrigid的时候,精度丢失较大,而 L r o t L_{rot} Lrot与 L i s o L_{iso} Liso带来的影响却不明显
这些正则化先验确保了高斯的局部邻域在时间步之间近似刚性移动,从而实现动态场景的长期跟踪。
优化细节
场景的每个时间步逐个优化。在第一个时间步期间,所有高斯的参数都进行了优化。在第一个时间步之后,高斯的大小、颜色、不透明度和背景逻辑值被固定,仅更新位置和旋转。因此,我们的方法可以被视为首先对第一帧进行静态重建,然后对其余帧进行长期稠密的 6-DOF 跟踪。
根据 [17],在第一个时间步中,我们使用粗略的点云来初始化场景,该点云可以通过运行 colmap 获得,但我们使用来自深度摄像机的可用稀疏样本。请注意,这些深度值仅用于在第一个时间步中初始化稀疏点云,在优化过程中不再使用。
在第一个时间步中,我们使用 [17] 中的密集化过程来增加高斯的密度并实现高质量的重建。对于其余帧,高斯的数量是固定的,且不再进行密集化。
我们在第一帧中使用 10000 次迭代(大约 4 分钟)拟合 3D 场景,使用 27 个训练相机,每次迭代渲染单张完整的图像。对于之后的每个时间步,我们使用 2000 次迭代(大约 50 秒),总共 150 个时间步需要 2 小时。在每个新时间步的开始,我们使用基于当前位置减去前一位置的速度估计值,通过前向估计来初始化高斯中心位置和旋转四元数参数,并对四元数进行归一化(例如,我们也重新归一化四元数表示)。我们发现这对于取得良好的结果非常重要。我们还在每个时间步的开始重置 Adam 的一阶和二阶动量参数。
在我们的测试场景中,主体的衬衫颜色(灰色)与背景非常相似。我们注意到,衬衫经常由于与背景混淆而被错误跟踪,而裤子和头发等更具对比度的元素被正确跟踪。为了增加场景中前景和背景部分之间的对比度,我们还渲染了前景/背景蒙版,并对伪真实背景蒙版应用背景分割损失 L B g L_{Bg} LBg,该蒙版可以通过与数据集中没有前景对象的图像进行差分轻松获得。我们还直接应用了一个损失,要求背景点不应移动或旋转,并将上述刚性、旋转和等距损失限制为仅在前景点上操作,以提高效率。这也确保这些损失永远不会在场景的前景部分和静态地面之间施加。
最后,由于我们正在优化 27 个不同的训练相机,每个相机都有不同的相机属性,如白平衡、曝光、传感器灵敏度和颜色校准,这些因素导致图像间颜色表示的差异。因此,我们通过简单地为每个相机的每个颜色通道分别优化一个比例和偏移参数来粗略地建模这些差异。我们仅在第一个时间步中优化这些参数,然后在其余时间步中将其固定。
使用动态 3D 高斯进行跟踪
在训练完动态 3D 高斯场景表示后,我们可以使用它来获得 3D 场景中任意点的稠密对应关系。为了确定 3D 空间中任意点 p p p 在各个时间步之间的对应关系,我们可以通过简单地采用该点在对其影响最大的高斯的坐标系中的位置来线性化运动空间(如果对所有高斯来说 f ( p ) < 0.5 f(p) < 0.5 f(p)<0.5,则使用静态背景坐标系)。现在,对于空间中的所有点,在所有时间步之间存在一个明确且可逆的一对一映射,从而实现稠密的对应关系。
我们可以使用相同的方法,将任意输入或新视图中的 2D 像素位置跟踪到任何其他时间步或视图中。为此,我们首先需要确定输入像素对应的 3D 点。我们可以通过使用高斯 [17] 的 Max [24] 渲染方程,但将每个高斯中心的颜色分量替换为深度来渲染任意视图的深度图,如图 1 所示。通过反投影可以找到像素的 3D 位置,确定最高影响的高斯,跟踪并投影到新的相机帧中。
实验
数据集准备
我们准备了一个名为 PanopticSports 的数据集。我们从 Panoptic Studio 数据集 [15] 的体育序列中提取了六个子序列。每个序列包含有趣的运动和对象,我们以这些名称命名它们:juggle 、box 、softball 、tennis 、football 和 basketball 。此外,我们为另外三个序列(handstand 、sway 和 lift)生成了可视化结果,但未将它们包含在评估结果中,因为它们没有可用的 3D 跟踪地面真值。对于每个序列,我们从高清摄像机集获取了 150 帧,每秒 30 帧。共有 31 个摄像机,其中 27 个用于训练,4 个用于测试(测试摄像机为 0、10、15 和 30)。摄像机在时间上是同步的,并且提供了准确的内参和外参。这些摄像机大致围绕捕获工作室圆顶中间的兴趣区域呈半球形放置。图 1 展示了一个示例。
我们使用提供的失真参数对每个摄像机的图像进行去失真,并将每张图像的大小调整为 640x360。为了初始化高斯,我们使用来自 10 个可用深度摄像机的点来创建第一个时间步的初始点云,这些深度图与当前时间步同步,并在两个维度上将深度图下采样 2 倍,并通过将这些点投影到最近的训练摄像机来获得初始颜色。未投影到任何训练摄像机的点将被丢弃。我们通过对每帧与数据集中没有前景对象的参考帧进行帧差分,简单地获得伪真实的前景-背景分割蒙版。
我们通过使用场景中可用的高质量面部和手部关键点注释 [33] 来准备 2D 和 3D 跟踪的地面真值轨迹。对于场景中的每个人(四个场景中有一个人,两个场景中有两个人),我们从每只手中随机选取一个面部关键点和一个手部关键点。我们通过将这些轨迹投影到图像中并查看它们来手动验证它们的准确性,并移除了三个不准确的轨迹。最终我们得到了总共 21 条地面真值 3D 轨迹。
对于 2D 跟踪,我们使用摄像机可见性标签来确定每条 3D 轨迹的第一个点是否在每个摄像机中可见,并将这些视频和投影点添加到我们的 2D 跟踪评估中。每个 3D 点在大约 18 个摄像机中可见,总共有 371 条 2D 地面真值轨迹。
评估指标
我们在所有 150 个时间步中,对 6 个序列的保留 4 个摄像机视角进行新视角合成评估。我们使用标准的 PSNR、SSIM 和 LPIPS 指标 [41, 46]。对于 2D 长期点跟踪,我们使用最近的 Point-Odyssey 基准中的指标 [47]:中位轨迹误差 (MTE)、位置准确性 (δ) 和存活率。对于 3D 长期点跟踪,由于没有先前的相关工作,我们决定将 [47] 中的 2D 指标适配到 3D 域,只是以 3 维空间中的厘米为单位代替 2D 中的归一化像素。例如,MTE 以厘米误差报告。 δ 在 1、2、4、8 和 16 厘米阈值下计算,存活率则是衡量在地面真值 50 厘米范围内的轨迹。
对比实验
对于视角合成、3D 跟踪和 2D 跟踪这三个任务,我们将动态 3D 高斯方法与我们基于的原始 3D Gaussian Splatting [17] 进行对比。我们以与我们方法相同的在线模式运行此方法,并且使用相同数量的迭代步骤,因此我们将其称为 3GS-O。我们还在 Particle-NeRF [1] 的数据集上进行了比较,该数据集包含 20 个训练摄像机和 10 个测试摄像机,包含几何和运动都非常简单的合成场景。在此基准上,我们与 Particle-NeRF [1]、Instant-NGP [26] 和 TiNeuVox [9] 进行了比较。该数据集的基准任务 [1] 定义为在每个时间步中允许方法执行一定数量的光线渲染和反向传播步骤。由于我们的方法不以相同的方式工作,因此我们无法使用这些标准进行精确比较。作为合理的比较标准,我们在每个时间步中为我们的方法运行训练的时间不超过 Particle-NeRF,例如每个时间步 200 毫秒。
关键词汇
- 动态 3D 场景重建(Dynamic 3D Scene Reconstruction)
- 稠密非刚性长期 6 自由度场景跟踪(Dense Non-Rigid Long-Term 6-DOF Scene Tracking)
- 动态新视角合成(Dynamic Novel View Synthesis)
- 局部刚性先验(Local Rigidity Prior)
- 局部旋转相似性先验(Local Rotational Similarity Prior)
- 长期局部等距先验(Long-Term Local Isometry Prior)
- 欧拉表示法(Eulerian Representation)
- 拉格朗日表示法(Lagrangian Representation)
- 完整的 6 自由度运动(Full 6-DOF Motion)
- 逐帧图像渲染跟踪(Tracking Derived Solely from Frame-by-Frame Rendering)
- 实时渲染应用(Real-Time Rendering Applications)
- 动态新视角合成(Dynamic Novel View Synthesis)
- 长期点跟踪(Long-Term Point Tracking)
- 动态重建(Dynamic Reconstruction)
- 4D 动态领域(4D Dynamic Domain)
- 单独表示拟合(Separate Representation per Timestep)
- 欧拉表示法(Eulerian Representation)
- 4D 时空网格(4D Spatiotemporal Grid)
- 标准时间步变形(Canonical Timestep Deformation)
- 模板引导方法(Template Guided Methods)
- 人类姿态骨架(Human-Pose Skeleton)
- 基于点的方法(Point-Based Methods)
- 拉格朗日表示(Lagrangian Representation)
- 长期稠密点跟踪(Long-Term Dense Point Tracking)
- 光流输入(Optical Flow)
- 深度摄像头(Depth Camera)