作者
:Feng Wang, Sinan Tan 等

来源
:ArXiv

论文题目
:Mixed Neural Voxels for Fast Multi-view Video Synthesis

论文链接
:https://arxiv.org/pdf/2212.00190.pdf

内容整理
:王秋文
目录
  • 引言
  • 算法
    • 静态体素表征
    • 动态体素表征
    • 变形场
    • 混合神经体素
  • 实验
    • 性能比较
    • 消融实验

引言

从多视角视频中进行动态场景的重建是一项重要而富有挑战性的任务,许多如互动性自由视点电影控制、子弹时间等电影效果、对体育赛事进行新视角回放以及 VR/AR 等应用都需要这项技术。基于 NeRF 的方法已经证明了为静态场景渲染照片逼真的新颖视图的可能性,许多方法将神经辐射场扩展到具有时间查询或显式变形场的动态场景中。这些方法侧重于相对简单的动态场景上的单目输入视频设置。为了模拟更复杂的真实世界动态场景,一个更实用的解决方案是使用多视图同步视频来提供密集的时空监督。
在本文中,作者关注多视图 3D 视频合成问题,并设计了一种名为 MixVoxels 的新算法来解决已有算法仍没有解决的两个问题:
  • 训练和渲染需要大量的时间和计算资源
  • 具有复杂运动的高动态场景仍然难以重建
具体来说,本文主要的贡献有:
  • 设计了一个简单而有效的动态体素表征,利用内积时间查询有效地对许多不同的时间步进行查询,提升了高动态对象的渲染质量
  • 设计了一种有效的变形场,将静态和动态区域分开,并形成一种混合的体素表征以加速训练和渲染
  • 通过定性和定量的实验评估本文的方法,得到的结果表明 MixVoxels 与隐式动态场景表示相比,具有 训练加速,并具有可比的或更好的渲染质量

算法

静态体素表征

神经辐射场已经实现了照片逼真度的新颖视点合成,而由于百万级的神经网络查询导致 NeRF 的训练需要大量的计算。为了加速 NeRF,许多研究探索了显式体积表示,这避免了查询神经网络过程导致的大量计算。具体而言,3D 场景被分割为 体素。密度和颜色特征存储在这些体素中,并表示为 和。和表示离散位置处体素的可学的密度和颜色特征。对于连续位置,可以通过插值最近的 8 个离散位置来计算表示。使用一个轻量级 MLP 网络 将颜色特征解析为 RGB 值,将 和视图方向 作为输入。形式上,密度 和颜色 表示为:

动态体素表征

对于动态场景,直接扩展指的是将时间维度显式添加到静态体素网格表示 中。然而,由于这一方法内存占用空间大且随时间线性增加,这种直接扩展方法是内存限制性的。对于 300 帧的视频,学习到的模型将占用 30 GB 的内存,并且由于 GPU 内存的限制,难以使用 GPU 进行训练。为了解决这个问题,我们提出了一种空间显式和时间隐式的表征以减少磁盘使用。具体来说,作者将动态场景表示为一个 4D 的可学体素 和 。与静态场景表示不同,所有时间步的密度和颜色都隐式编码为存储在每个体素中的紧凑特征。紧凑的特征将由时间感知投影处理,以获取每个时间步的密度和颜色。具体而言,对于任意位置 上的紧凑体密度特征 和颜色特征 ,作者部署了两个 MLP 和 增加特征维度以更好地解析时变密度和颜色。这里的 MLP 可以被视为解压缩器,将紧凑的低维体素网格特征解压为更易于处理的特征。与在每个体素中直接存储高维特征相比,时间隐式表示显著减少了内存占用,因为共享 MLP 仅略微增加了内存。
对于离散时间步长 ,使用可学习的时变潜在表示 来表示时间查询。不同于将时间查询与中间特征串联,作者建议计算学习到的时间查询与解压缩特征之间的内积作为所需的输出和。形式上,时空查询   的密度和颜色表示为:
事实上,同时查询多个时间步有助于重建高动态运动的细节,并减少了遍历所有时间步长的训练迭代。当在训练迭代中同时查询多个时间步骤时,基于内积的查询将提高训练速度。

变形场

图1 根据多条射线的隐式交互作用以确定动态体素部分的原理示意图
变形场的核心是基于多视视频中像素级的时间变化作为监督来估计体素级变变形。不同视频中的像素级的时间变化如图 1 中所示。形式上,给定光线,其中原点为 ,方向为 ,时间步长 处的对应像素颜色定义为 。然后,像素级时间方差 为:
其中是光线对应像素的平均颜色。为了识别动态像素,标准差根据阈值二值化为,以提供像素级动态监督,即,如果,则,否则。通过这种方式,如果 ,则判断光线是动态的。
像素级方差和体素级方差之间的关系如下:
  • 如果一个像素是静态的,那么对应于该像素的射线通过的所有体素都应该是静态的。
  • 如果一个像素是动态的,那么对应光线通过的体素中至少有一个是动态的。
图 1 显示了以上两种情况。利用上述两个关系,作者设计了变形场,其表示为,以表示体素水平的时间方差。具体来说,在 中从近平面到远平面均匀采样 个点,并建立以下方程以满足上述两个关系:
其中, 是对 的估计,则可以使用二值交叉熵损失训练变形场:
通过优化上述损失函数,可以获得学习的变形场 ,其训练效率很高,通常需要不到 30 秒。
最大化操作很好地表达了像素与其对应体素之间的关系。如果一个像素是静态的,那么上述两个公式将迫使相应光线通过的所有体素是静态的()。如果像素是动态的,则要求至少一个对应的体素(即体素方差的最大值)是动态的。尽管这一方法没有提供关于动态光线中哪些特定体素是动态的信息,但多个不同光线的隐式交互将迫使解决方案是物理合理的。如图 1 中所示,本算法关注至少通过一条射线的可观察体素。如果点 被至少一条静态光线穿过,则将被优化为 。如果一个点 仅被动态光线穿过,而未被其他动态体素遮挡,则 将被优化为正无穷。这是因为在没有遮挡的情况下,沿着动态光线的上述点 将被其他静态光线穿过。
在训练过程之后,特定 3D 位置 的时间变形为 ,可以通过在离散变形场通过插值轻松获得。如果大于超参数,则将场景中的体素识别为动态体素,如果其小于,则识别为静态体素。由此将得到一个动态 mask ,它将用于将射线中的采样点分割为静态点和动态点。

混合神经体素

图2 MixVoxels 算法示意图
借助于变形场可以将场景分为动态体素和静态体素。为了减少冗余计算,作者使用前述轻量级静态模型来计算静态体素的密度和颜色,而使用动态模型来计算动态体素的浓度和颜色。总体架构如图2所示。具体俩说,对于给定的光线 ,原点为,视图方向为,从近平面到远平面应用分层采样,得到个点。然后通过所提出的变形场推断这些点,将个点分为静态点和动态点。对于静态分支,将所有点传递给静态模型,检索每个点的颜色和密度,以呈现随时间变化的平均像素颜色,并使用体渲染公式进行渲染,通过l2-loss进行优化。
对于动态分支,使用动态模型,但只查询动态点以减少计算。具体来说,当射线通过至少一个动态点时,我们通过动态模型 计算这些动态点在时间步 的密度和颜色。对于射线中其他静态点的密度和色彩,从静态输出中复制它们,这相当于通过静态模型s查询这些静态点的体密度和色彩。需要注意的是,复制操作不会反向传播(使用分离操作),以避免动态监督影响静态分支。对于动态分支,将静态点和动态点合并到最终的混合表示形式:
其中,表示查询点的三维坐标, 表示停止梯度(stop-gradients)。使用体渲染公式得到某时刻下的像素渲染颜色后,同样使用l2-loss进行约束。静态区域和动态区域的损失相加即为模型的整体损失。

实验

性能比较

图3 算法训练和渲染效率比较
本文使用 Plenoptic Video Dataset 进行算法的验证。首先将MixVoxels的训练效率与 state-of-the-art 方法进行了比较,如图 3 中的表所示。对于具有 300 帧的多视图视频的动态场景,本算法将训练时间从1.3K 小时减少到 0.25 小时(加速 5000 倍),使复杂动态场景的训练更有效。与并行工作的流光辐射场和 NeRF-Player 相比,MixVoxels 仅需 15  分钟的训练即可获得更好的结果。对于渲染,MixVoxels 在 1K 分辨率下的渲染帧率为 16.7 fps,0.5K分辨率为 65.4 fps。在模型大小方面,需要大约 500MB 的内存,这比基于隐式神经的算法 DyNeRF 大。这是不可避免的,因为体素数量呈立方体增长。然而,与其他基于体素网格的方法相比,本文算法模型更紧凑,因为作者利用了 TensoRF 中提出的张量因子化,这将空间复杂性从降低到。
在渲染的质量方面,本文中模型的客观指标计算结果和主观感受结果分别如图 4 和图 5 所示。由结果发现本文中提出的算法可以得到相对较好的结果,与其他 state-of-the-art 的算法具有可比性。
图4 算法渲染质量比较的客观指标计算表
图5 算法渲染质量比较多主观感受示意图

消融实验

图6 对体素的划分机制进行消融实验的客观指标结果
图7 对体素的划分机制进行消融实验的主观比较结果
首先,对体素的划分进行消融实验,将本文中的算法与将所有体素都设置为动态体素相比较,通过图 6 和图 7 中的比较可以得知将全区域设置为动态体素会比本文的划分机制消耗更多的时间,同时使得重建的场景变得模糊。这一现象是因为大面积的静态区域会影响动态信息的捕获。网络被场景中大多数没有运动的静态体素所影响,倾向于学习低频信息。
图8 对时间的查询机制进行消融实验的结果
对不同时间步的查询方式进行消融实验,将本文中提出的基于内积的方法与将时间嵌入和MLP处理的体素特征直接级联起来以及在频域进行傅立叶头重建两种方法相比较,得到的结果如图 8 中的结果所示。基于级联的查询方法既占用空间又耗时。查询一个时间步需要通过整个 MLP 前向处理融合特征。由于 GPU 内存的限制,每次迭代只能使用级联方式查询 50 个时间步长,这会损害高动态区域的性能。傅里叶头处理特征以预测不同频率分量的大小,在效率上与本文提出的方法具有可比性,但其需要额外的离散傅里叶逆变换来恢复时域中的信息。总之,内部产品查询是最简单、最有效的时间查询方式。
图9 对每次迭代的时间查询个数(上)和 MLP 的隐藏层数(下)进行消融实验的结果
最后,对每次迭代的时间查询个数和 MLP 的隐藏层数进行消融实验。得到的结果如图 9 所示。随着时间查询个数的增加,移动的手和流动的咖啡的边缘变得更加清晰。查询更多的时间步可以提供更为密集的监督,并使模型在每次迭代中获取全局的时间信息,从而加快了收敛速度。本文中所提出的内积时间查询允许添加更多的时间查询个数,而计算量的增加可以忽略不计。在模型的隐藏层数方面,具有更多层数的模型同样可以使移动的手的边缘更清晰。通过直观推测认为这一现象是由于具有更大隐藏维度的网络具有更强的能力来解压缩存储在每个体素中的紧凑特征。
继续阅读
阅读原文