最近,由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在这个数据集上的表现超过了所有的基线方法,包括NeRFPlayer和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,目前在卡内基梅隆机器人研究所攻读博士学位。研究兴趣包括虚拟现实,以及计算成像和显示。