新智元报道
编辑:好困 Aeneas
近日,Meta 和 CMU 的研究人员提出了一种全新的6-DoF 视频表征方法,单张 RTX 3090 即可每秒 18 帧实现百万像素分辨率渲染,或将给 VR 带来革命性的高质量体验。
最近,由 Meta 和卡内基梅隆大学提出的6-DoF 视频表征模型——HyperReel,可能预示着一个全新的 VR「杀手级」应用即将诞生!
所谓「六自由度视频」(6-DoF),简单来说就是一个超高清的 4D 体验式回放。
其中,用户可以完全「置身于」动态场景里面,并且可以自由地移动。而当他们任意改变自己的头部位置(3 DoF)和方向(3 DoF)时,与之相应的视图也会随之生成。
论文地址:https://arxiv.org/abs/2301.02238
与之前的工作相比,HyperReel 最大的优势在于内存和计算效率,而这两点对于便携式 VR 头显来说都至关重要。
而且只需采用 vanilla PyTorch,HyperReel 就能在单张英伟达 RTX 3090 上,以每秒 18 帧的速度实现百万像素分辨率的渲染。
太长不看版:
1. 提出一种可在高分辨率下实现高保真度、高帧率的渲染的光线条件采样预测网络,以及一种紧凑且内存高效的动态体积表征;
2. 6-DoF 视频表征方法 HyperReel 结合了以上两个核心部分,可以在实时渲染百万像素分辨率的同时,实现速度、质量和内存之间的理想平衡;
3. HyperReel 在内存需求、渲染速度等多个方面均优于其他方法。
论文介绍
体积场景表征(volumetric scene representation)能够为静态场景提供逼真的视图合成,并构成了现有6-DoF 视频技术的基础。
然而,驱动这些表征的体积渲染程序,需要在质量、渲染速度和内存效率方面,进行仔细的权衡。
现有的方法有一个弊端——不能同时实现实时性能、小内存占用和高质量渲染,而在极具挑战性的真实场景中,这些都是极为重要的。
为了解决这些问题,研究人员提出了 HyperReel——一种基于 NeRF 技术(神经辐射场)的6-DoF 视频表征方法。
其中,HyperReel 的两个核心部分是:
1. 一个光线条件下的采样预测网络,能够在高分辨率下进行高保真、高帧率的渲染;
2. 一个紧凑且内存高效的动态体积表征。
与其他方法相比,HyperReel 的6-DoF 视频管线不仅在视觉质量上表现极佳,而且内存需求也很小。
同时,HyperReel 无需任何定制的 CUDA 代码,就能在百万像素分辨率下实现 18 帧/秒的渲染速度。
具体来说,HypeReel 通过结合样本预测网络和基于关键帧的体积表征法,从而实现了高渲染质量、速度和内存效率之间的平衡。
其中的样本预测网络,既能加速体积渲染,又能提高渲染质量,特别是对于具有挑战性的视图依赖性的场景。
而在基于关键帧的体积表征方面,研究人员采用的是 TensoRF 的扩展。
这种方法可以在内存消耗与单个静态帧 TensoRF 大致相同的同时,凑地表征了一个完整的视频序列。
实时演示
接下来,我们就实时演示一下,HypeReel 在 512x512 像素分辨率下动态和静态场景的渲染效果。
值得注意的是,研究人员在 Technicolor 和 Shiny 场景中使用了更小的模型,因此渲染的帧率大于 40 FPS。对于其余的数据集则使用完整模型,不过 HypeReel 仍然能够提供实时推理。
Technicolor
Shiny
Stanford
Immersive
DoNeRF
实现方法
为了实现 HeperReel,首先要考虑的问题,就是要优化静态视图合成的体积表征。
像 NeRF 这样的体积表征,就是对静态场景在 3D 空间中的每一个点的密度和外观,进行建模。
更具体地说,通过函数将位置x和方向沿着⼀条射线映射到颜色和密度σ(x)。
此处的可训练参数θ,可以是神经网络权重、N维数组条目,或两者的组合。
然后就可以渲染静态场景的新视图
其中表征从o到的透射率。
在实践中,可以通过沿给定射线获取多个样本点,然后使用数值求积来计算方程式1:
其中权重指定了每个样本点的颜色对输出的贡献。
体积渲染的网格示例
在静态场景的 HyperReel 中,给定一组图像和相机姿势,而训练目标就是重建与每条光线相关的测量颜色。
大多数场景是由实体物体组成的,这些物体的表面位于 3D 场景体积内的一个 2D 流形上。在这种情况下,只有一小部分样本点会影响每条光线的渲染颜色。
因此,为了加速体积渲染,研究人员希望只对非零的点,查询颜色和不透明度。
如下图所示,研究人员使用前馈网络来预测一组样本位置。具体来说,就是使用样本预测网络,将射线映射到样本点,以获取体积等式 2 中的渲染。
这里,研究人员使用 Plucker 的参数化来表征光线。
但是这其中有一个问题:给网络太多的灵活性,可能会对视图合成质量产生负面影响。例如,如果(x1, . . . , xn) 是完全任意的点,那么渲染可能看起来不是多视图⼀致的。
为了解决这个问题,研究人员选择用样本预测网络来预测一组几何基元 G1, ..., Gn 的参数,其中基元的参数可以根据输入射线的不同而变化。为了得到样本点,将射线与每个基元相交。
如图a所示,给定源自相机原点o并沿方向ω传播的输入光线后, 研究人员首先使用 Plucker 坐标,重新对光线进行参数化。
如图b所示,一个网络将此射线作为输入,输出一组几何基元{}(如轴对齐的平面和球体)和位移矢量{}的参数。
如图c所示,为了生成用于体积渲染的样本点{},研究人员计算了射线和几何基元之间的交点,并将位移矢量添加到结果中。预测几何基元的好处是使采样信号平滑,易于插值。
位移矢量为采样点提供了额外的灵活性,能够更好地捕捉到复杂的视线依赖的外观。
如图d所示,最终,研究人员通过公式 2 进行体积渲染,产生一个像素颜色,并根据相应的观察结果,对它进行了监督训练。
基于关键帧的动态体积
通过上述办法,就可以有效地对 3D 场景体积进行采样。
如何表征体积呢?在静态情况下,研究人员使用的是内存有效的张量辐射场(TensoRF)方法;在动态情况下,就将 TensoRF 扩展到基于关键帧的动态体积表征。
下图解释了从基于关键帧的表征中,提取动态的样本点表征的过程。
如图 1 所示,首先,研究人员使用从样本预测网络输出的速度{},将时间处的样本点{}平移到最近的关键帧中。
然后,如图 2 所示,研究人员查询了时空纹理的外积,产生了每个样本点的外观特征,然后通过公式 10 将其转换成颜色。
通过这样的过程,研究人员提取了每个样本的的不透明度。
结果对比
静态场景的比较
在此,研究人员将 HyperReel 与现有的静态视图合成方法(包括 NeRF、InstantNGP 和三种基于采样网络的方法)进行了比较。
-
DoNeRF 数据集
DoNeRF 数据集包含六个合成序列,图像分辨率为 800×800 像素。
如表 1 所示,HyperReel 的方法在质量上优于所有基线,并在很大程度上提高了其他采样网络方案的性能。
同时,HyperReel 是用 vanilla PyTorch 实现的,可在单张 RTX 3090 GPU 上以 6.5 FPS 的速度渲染 800×800 像素的图像(或者用 Tiny 模型实现 29 FPS 的渲染)。
此外,与 R2L 的 88 层、256 个隐藏单元的深度 MLP 相比,研究人员提出的 6 层、256 个隐藏单元的网络外加 TensoRF 体积骨干的推理速度更快
-
LLFF 数据集
LLFF 数据集包含 8 个具有 1008×756 像素图像的真实世界序列。
如表 1 所示,HyperReel 的方法优于 DoNeRF、AdaNeRF、TermiNeRF 和 InstantNGP,但取得的质量比 NeRF 略差。
由于错误的相机校准和输入视角的稀疏性,这个数据集对显式体积表征来说是一个巨大的挑战。
动态场景的比较
-
Technicolor 数据集
Technicolor 光场数据集包含了由时间同步的4×4 摄像机装置拍摄的各种室内环境的视频,其中每个视频流中的每张图片都是 2048×1088 像素。
研究人员将 HyperReel 和 Neural 3D Video 在全图像分辨率下对这个数据集的五个序列(Birthday, Fabien, Painter, Theater, Trains)进行比较,每个序列有 50 帧长。
如表 2 所示,HyperReel 的质量超过了 Neural 3D Video,同时每个序列的训练时间仅为 1.5 个小时(而不是 Neural 3D 的 1000 多个小时),并且渲染速度更快。
-
Neural 3D Video 数据集
Neural 3D Video 数据集包含 6 个室内多视图视频序列,由 20 台摄像机以 2704×2028 像素的分辨率拍摄。
如表 2 所示,HyperReel 在这个数据集上的表现超过了所有的基线方法,包括 NeR FPlayer 和 StreamRF 等最新工作。
特别是,HyperReel 在数量上超过了 NeRFPlayer,渲染速度是其 40 倍左右;在质量上超过了 StreamRF,尽管其采用 Plenoxels 为骨干的方法(使用定制的 CUDA 内核来加快推理速度)渲染速度更快。
此外,HyperReel 平均每帧消耗的内存比 StreamRF 和 NeRFPlayer 都要少得多。
-
谷歌 Immersive 数据集
谷歌 Immersive 数据集包含了各种室内和室外环境的光场视频。
如表 2 所示,HyperReel 在质量上比 NeRFPlayer 的要好 1 dB,同时渲染速度也更快。
有些遗憾的是,HyperReel 目前还没有达到 VR 所要求的渲染速度(理想情况下为 72FPS,立体声)。
不过,由于该方法是在 vanilla PyTorch 中实现的,因此可以通过比如自定义的 CUDA 内核等工作,来进一步优化性能。
作者介绍
论文一作 Benjamin Attal,目前在卡内基梅隆机器人研究所攻读博士学位。研究兴趣包括虚拟现实,以及计算成像和显示。
参考资料:
https://arxiv.org/abs/2301.02238