点击下方卡片,关注“3D视觉之心”公众号
>>点击进入→3D视觉之心技术交流群
写在前面&笔者的个人理解
近年来,利用扩散和自回归建模生成2D视觉内容已经取得了显著成功,并已在实际应用中进行广泛使用。除了 2D 生成之外,3D 内容生成也至关重要,可应用于视频游戏、视觉效果和可穿戴混合现实设备。然而,由于 3D 建模的复杂性和 3D 数据的局限性,3D 内容生成仍然远远不能令人满意,并且正在引起学术界和工业界越来越多的关注。
之前大多数的研究工作主要聚焦于使用合成的对象数据实现3D和4D内容的生成。合成的对象数据通常是网格,从而允许研究人员从任何的视角来渲染图像和其他的3D信息。然而,对象生成对领域专家的益处远远大于大众。相比之下,场景级的生成可以帮助每个人用更加丰富的内容来增强他们的图像以及视频。因此,最近的研究探索了单一模型中的一般 3D 生成,并取得了令人印象深刻的生成性能。尽管如此,这些研究工作仅关注静态 3D 生成,而没有解决动态的问题。
考虑到 4D 生成面临的首要挑战是缺乏通用 4D 数据。在这项工作中,我们提出了 CamVid-30K数据集,其中包含大约 30K 个 4D 数据样本。4D 数据需要多视图空间信息和时间动态,因此我们转向视频数据来获取必要的 4D 数据。
此外,我们也提出了一个统一的框架 GenXD,用于在单个模型中处理 3D 和 4D 生成,能够从不同视角和时戳生成任意数量的条件图像,其生成的部分内容如下图所示。
此外,我们对各种现实世界和合成数据集进行了广泛的实验和评估,证明了与之前的 3D 和 4D 生成方法相比,我们提出的GenXD算法模型具有更好的有效性和多功能性。
论文链接:https://arxiv.org/pdf/2411.02319
GenXD网络结构&技术细节梳理
生成模型
由于大多数的场景级3D和4D数据通过视频获得,因此这些数据缺少明确的表示。所以,我们采用一种生成与空间相机姿势和时间戳步长对齐的图像的方法。具体而言,我们将扩散模型纳入到我们的框架当中,引入额外的多视图时域层,包括多视图时序ResBlocks和多视图时序Transformer,以解耦和融合3D和时序信息,下面是我们提出的GenXD的整体网络结构图。
Mask Latent Conditioned Diffusion Model
GenXD利用LDM来同时生成不同相机视点和时间的图像。LDM首次使用VAE将图像/视频编码为latent code,记作,然后利用高斯噪声扩散latent code得到。然后利用去噪模型来估计噪声并逆转扩散过程,其条件如下:
GenXD 生成具有相机姿势和参考图像的多视图图像和视频,因此它需要相机和图像条件。相机条件对于每幅图像都是独立的,无论是 条件性的还是有针对性的。因此,很容易将其附加到每个潜在图像中。在这里,我们选择Plucker射线作为相机条件
Plucker 射线是一种密集嵌入编码,不仅编码了像素信息,还编码了相机位姿和内在信息,相比于全局相机而言更具有优势。参考图像条件更为复杂。GenXD 旨在通过单视图和多视图输入进行 3D 和 4D 生成。单视图生成要求较低,而多视图生成结果更一致。因此,将单视图和多视图生成结合起来将带来更好的实际应用。
然而,之前的相关研究工作通过将潜在条件连接到目标潜在条件,并通过交叉注意力合并CLIP模型的图像嵌入来生成图像。连接方式的改变需要更改模型的通道,无法处理任意输入视图。CLIP嵌入可以支持多种条件。然而,这两种方式都无法对多种条件的位置信息进行建模,也无法对输入视图之间的信息进行建模。鉴于这种局限性,我们利用掩码作为潜在条件来处理图像条件。如上图所示,我们使用VAE编码器之后,对目标帧应用前向扩散过程,使用条件保持原样。然后通过去噪模型估计两帧上的噪声,并通过后向过程进行去除。
掩码潜在条件有三个主要优点。首先,模型可以支持任何输入视图而无需修改参数。其次,对于序列生成(多视图图像或视频),我们不需要限制条件帧的位置,因为条件帧在序列中保持其位置。相反,许多工作要求条件图像在序列中的固定位置(通常是第一帧)。第三,如果没有来自其他模型的条件嵌入,可以删除用于集成条件嵌入的交叉注意层,这将大大减少模型参数的数量。为此,我们在GenXD算法模型中利用掩码潜在条件方法。
MultiView-Temporal Modules
由于GenXD旨在在单个模型中生成 3D 和 4D 样本,因此我们需要将多视图信息与时间信息区分开来。我们在不同的层中对这两种类型的信息进行建模:多视图层和时间层。对于 3D 生成,不考虑时间信息,而 4D 生成则需要多视图和时间信息。因此,在我们提出的GenXD算法框架当中,我们提出了一种用于4D生成的融合策略。具体而言,我们为 4D 生成引入了一种可学习的融合权重。对于 3D 生成而言,设置为0。使用融合策略,GenXD算法模型可以在多视图层中为 3D 数据保留多视图信息,同时从 4D 数据中学习时间信息。
融合可以有效地解开多视图和时间信息。然而,没有任何提示,运动的控制性较差。视频生成模型使用 FPS 或运动 ID 来控制运动的幅度,而不考虑相机的运动。得益于 CamVid-30K 数据集中的运动强度,我们可以有效地表示物体的运动。由于运动强度是一个常数,我们将其与扩散时间步长相结合并将其添加到时间 Resblock 层。借助多视图时间模块,GenXD 可以有效地进行 3D 和 4D 生成。
3D表达生成
GenXD 可以使用一个或多个条件图像生成具有不同视点和时间步长的图像。但是,为了呈现任意的 3D 一致视图,我们需要将生成的样本提升为 3D 表示。以前的工作通常通过从生成模型中提取知识来优化 3D 表示。由于 GenXD 可以生成高质量且一致的结果,我们直接使用生成的图像来优化 3D 表示。具体来说,我们利用 3D Gaussian Splatting 和 Zip-NeRF 进行 3D 生成,利用 4D Gaussian Splatting (4D-GS) 进行 4D 生成。
CAMVID-30K数据集介绍
由于缺乏大规模 4D 场景数据限制了动态 3D 任务的发展,包括但不限于 4D 生成、动态相机姿势估计和可控视频生成。为了解决这个问题,我们在本文中引入了一个高质量的 4D 数据集。首先,我们使用基于结构运动 (SfM) 的方法估计相机姿势,然后使用所提出的运动强度过滤掉没有物体运动的数据,整个流程如下图所示。
相机位姿估计
相机姿态估计基于SfM,它从一系列图像中的投影重建 3D 结构。SfM 涉及三个主要步骤:(1) 特征检测和提取,(2) 特征匹配和几何验证,(3) 3D 重建和相机姿态估计。在第二步中,匹配的特征必须位于场景的静态部分。否则,在特征匹配期间,物体移动将被解释为相机移动,这会损害相机姿态估计的准确性。为了获得准确的相机姿势,必须分割所有移动像素。在这种情况下,假阳性错误比假阴性更容易接受。为了实现这一点,我们使用实例分割模型来贪婪地分割所有可能移动的像素。在分割出可能移动的像素后,我们使用 Particle-SfM估计相机姿态,以获得相机信息和稀疏点云。
目标运动估计
虽然实例分割可以准确地将物体与背景分开,但它无法确定物体本身是否在移动,而静态物体会对运动学习产生负面影响。因此,我们引入了运动强度来识别真正的物体运动,并过滤掉只有静态物体的视频。
由于摄像机运动和物体运动都存在于视频中,因此基于 2D 的运动估计方法无法准确表示真实的物体运动。有两种方法可以捕捉真实的物体运动:通过测量 3D 空间中的运动或通过将视频中的运动投影到同一台摄像机。这两种方法都需要与摄像机姿势比例对齐的深度图。稀疏深度图可以通过投影 3D 点云到相机视角来获得
由于在 3D 重建过程中仅匹配静态部分的特征,因此我们只能获得静态区域的稀疏点云。然而,动态部分的深度信息对于估计运动至关重要。为了解决这个问题,我们利用预先训练的相对单目深度估计模型来预测每帧的相对深度,然后我们应用比例因子和移位来使其与 SfM 稀疏深度对齐
有了对齐的深度,我们可以将帧中的动态对象投影到 3D 空间中,从而提供一种直接测量对象运动的方法。如上图 (b) 所示,如果对象(例如,穿绿色衬衫的人)正在移动,则投影的 3D 点云中将发生位移。但是,由于 SfM 的运行范围很广,因此直接在 3D 空间中测量运动可能会导致幅度问题。因此,我们将动态对象投影到相邻视图中并估计对象运动场。
具体来说,我们首先需要在 2D 视频中找到匹配点。我们不使用光流等密集表示,而是为每个对象实例采样关键点,并在 2D 视频中使用视频对象分割和关键点跟踪来建立匹配关系。然后将每个关键点投影到相邻帧中。首先将第帧中的关键点反向投影到世界空间,以获得 3D 关键点。
有了每个物体的运动场,我们可以通过平均运动场的绝对幅度来估计物体的全局运动。对于每个视频,运动强度由所有物体中的最大运动值表示。如下图所示,当相机移动而物体保持静止时(第二个示例),与有物体运动的视频相比,运动强度明显较小。使用运动强度,我们进一步过滤掉缺乏明显物体运动的数据。
实验结果&评价指标
4D生成实验结果
我们将 GenXD 与开源相机条件视频生成方法进行了比较,我们使用Stable Video Diffusion作为baseline模型,并利用摄像机轨迹和第一帧条件生成视频,相关的实验结果如下表所示。
以第一视图为条件,GenXD 在两个指标上均明显优于 CameraCtrl 和 MotionCtrl。此外,以 3 个视图(第一帧、中间帧和最后一帧)为条件,GenXD 的表现远远优于之前的作品。这些结果证明了 GenXD 在 4D 生成上的强大泛化能力。
此外,为了直观的展现出GenXD算法模型的性能,我们将相关的生成结果展示在下图中。我们比较了三种方法的定性结果。在这个例子中,MotionCtrl 无法生成明显的物体运动,而 CameraCtrl 生成的视频既不是 3D 的也不是时间一致的。相反,我们的单视图条件模型可以生成流畅且一致的 4D 视频。通过 3 个条件视图,GenXD 可以生成非常逼真的结果。
3D生成实验结果
对于少视图 3D 重建设置,我们在分布内和分布外数据集上评估 GenXD。我们从 Re10K 中选择了 10 个场景,在 LLFF 中选择了所有 8 个场景,每个场景中的 3 个视图用于训练。使用渲染测试视图上的 PSNR、SSIM 和 LPIPS 指标评估性能。作为生成模型,GenXD 可以从稀疏输入视图中生成附加视图,并提高任何重建方法的性能。在这个实验中,我们利用了两种基线方法:Zip-NeRF 和 3D-GS。这两个基线是多视图重建的方法,因此我们调整超参数以实现更好的少视图重建。如下表所示,Zip-NeRF 和 3D-GS 都可以使用 GenXD 生成的图像进行改进,并且 Zip-NeRF 基线的改进更为显著。具体来说,Re10K(分布内)和 LLFF(分布外)上的 PSNR 分别提高了 4.82 和 5.13。
更加直观的展示结果如下图所示,使用生成的视图,重建场景中的浮动物和模糊减少了。
结论
在本文中,我们提出了GenXD算法模型来处理一般的 3D 和 4D 内容生成。GenXD 可以利用多视图时间模块来解开相机和物体的移动,并且能够通过掩码潜在条件来支持任意数量的输入条件视图。提出的GenXD算法模型可以处理多种应用,并且可以通过一个模型在所有设置中实现相当或更好的性能。
本文仅做学术分享,论文汇总于『3D视觉之心知识星球』,欢迎加入交流!
扫码添加小助理进群
3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。