文章链接:
https://arxiv.org/pdf/2310.11448
github链接:
https://zju3dv.github.io/4k4d/
本文旨在实现动态3D场景在4K分辨率下的高保真和实时视图合成。最近,一些动态视图合成方法在渲染质量方面表现出色。然而,在渲染高分辨率图像时,它们的速度仍然有限。为解决这个问题,本文提出了4K4D,一种支持硬件光栅化的4D点云表示,能够实现前所未有的渲染速度。本文的表示基于4D特征网格构建,因此点云被自然地正则化并可以进行稳健优化。此外,设计了一种新颖的混合外观模型,显著提升了渲染质量,同时保持了效率。此外,开发了一种可微分的深度剥离算法,以有效地从RGB视频中学习所提出的模型。实验表明,在使用RTX 4090 GPU的情况下,本文的表示在1080p分辨率下可以在DNA-Rendering数据集上以超过400 FPS的速度进行渲染,在4K分辨率下可以在ENeRF-Outdoor数据集上以80 FPS的速度进行渲染,比以往方法快30倍,并实现了最先进的渲染质量。
方法
给定捕捉动态3D场景的多视角视频,目标是重建目标场景并实时执行新视角合成。为此,研究者们使用空间雕刻算法提取场景的粗点云,并建立基于点云的神经场景表示,该表示可以从输入视频中稳健地学习,并支持硬件加速渲染。
下图2展示了所提模型的概述。首先描述如何基于点云和神经网络表示动态场景的几何和外观。然后,开发了一种可微分深度剥离算法,用于渲染表示,该算法由硬件光栅化器支持,从而显著提高了渲染速度。最后,讨论如何在输入RGB视频上优化所提模型。
使用点云建模动态场景
4D embedding
。给定目标场景的粗点云, 使用神经网络和特征网格来表示其动态几何和外观。具体而言, 本文的方法首先定义了六个特征平面:
和
。为了在帧
为任意点
分配一个特征向量f, 采用K-Planes的策略, 使用这六个平面来建模一个4D特征场
:
其中,
是输入点,
表示拼接运算符。更多实现细节请参考K-Planes。
几何模型。
基于粗点云, 动态场景几何通过学习每个点的三个条目来表示:位置
、半径
和密度
。使用这些点条目, 计算体渲染时与图像像素
对应的空间点
的体积密度。点的位置
被建模为一个可优化的向量。半径
和密度
通过将方程 (1) 中的特征向量
输入到
网络来预测。
外观模型。
如上面图 2c 所示, 使用图像混合技术和球谐函数 (SH) 模型来构建混合外观模型, 其中图像混合技术表示离散的视角依赖外观
模型表示连续的视角依赖外观
。对于帧
中的点
, 其在视角方向
下的颜色为:
其中,
表示点
处的
系数。
离散的视角依赖外观
基于输入图像推理。具体而言, 对于一个点
, 首先将其投影到输入图像中以检索相应的 RGB 颜色
。然后, 为了混合输入的 RGB 颜色, 根据点坐标和输入图像计算相应的混合权重
。请注意, 混合权重与视角方向无关。接下来, 为了实现视角依赖效果, 根据视角方向选择
个最近的输入视角。最后, 颜色
计算为
。由于
个输入视角是通过最近邻检索获得的, 因此 cibr 在视角方向上不可避免地是离散的。为了实现连续的视角依赖效果, 附加了由
模型表示的精细级别颜色
, 如上面图 2c 所示。
在实践中, 本文的方法通过将方程 (1) 中的点特征
传递到
网络来回归
系数
。为了在图像混合模型
中预测混合权重
, 首先将点
投影到输入图像上以检索图像特征
, 然后将其与点特征
拼接, 并将其输入到另一个
网络中以预测混合权重。图像特征
使用 2D CNN 网络提取。
讨论
。本文的外观模型是实现动态场景的低存储、高保真和实时视图合成的关键。有三种替代方法来表示动态外观,但它们的表现无法与本文的模型相提并论。
-
在每个点上定义显式 SH 系数,如在 3D 高斯分裂 中。当 SH 系数的维度较高且动态场景的点数量较大时,该模型的大小可能太大,无法在消费级 GPU 上训练。
-
基于 MLP 的 SH 模型。使用 MLP 来预测每个点的 SH 系数可以有效地减少模型大小。然而,本文的实验发现基于 MLP 的 SH 模型难以渲染高质量图像。
-
连续视角依赖的图像混合模型,如 ENeRF。使用图像混合模型表示外观比仅使用基于 MLP 的 SH 模型具有更好的渲染质量。然而,ENeRF 中的网络将视角方向作为输入,因此无法轻松预计算,从而限制了推理期间的渲染速度。
与这三种方法相比, 本文的外观模型结合了离散图像混合模型
和连续
模型
。图像混合模型
提升了渲染性能。此外, 由于其网络不将视角方向作为输入, 它支持预计算。
模型
实现了任何视角方向的视角依赖效果。在训练期间, 本文的模型使用网络表示场景外观, 因此其模型大小合理。在推理期间, 预计算网络输出以实现实时渲染。
可微分深度剥离
研究者们提出的动态场景表示可以使用深度剥离算法渲染成图像。得益于点云表示,能够利用硬件光栅化器显著加速深度剥离过程。此外,使这一渲染过程可微分也很容易,从而能够从输入的 RGB 视频中学习本文的模型。
研究者们开发了一个自定义着色器来实现包含
次渲染通道的深度剥离算法。考虑一个特定的图像像素 u。在第一次通道中, 本文的方法首先使用硬件光栅化器将点云渲染到图像上, 为像素 u 分配最近的点
。记点
的深度为
。随后, 在第
次渲染通道中, 所有深度值
小于上一通道记录深度
的点都被丢弃, 从而得到像素
的第
近的点
。丢弃较近的点在自定义着色器中实现, 因此它仍然支持硬件光栅化。在
次渲染通道之后, 像素
有一组排序的点
。
基于点
, 使用体渲染合成像素
的颜色。像素
的点
的密度是基于投影点和像素
在2D图像上的距离定义的。
其中,
是摄像机投影函数。
和
分别是点
的密度和半径。在训练过程中, 使用 PyTorch实现投影函数
, 因此方程 (3) 自然是可微的。在推理过程中, 利用硬件光栅化过程高效地获得距离
, 这通过 OpenGL 实现。
记点
的密度为
。像素
的体渲染颜色公式如下:
其中,
是点
的颜色, 如方程 (2) 所述。
训练
给定渲染的像素颜色
, 将其与真实像素颜色
进行比较, 以端到端的方式使用以下损失函数来优化模型:
其中,
是图像像素的集合。除了均方误差损失
外, 还应用感知损失
。
其中,
是感知函数(一个 VGG16 网络), I 和
分别是渲染和真实图像。感知损失计算从 VGG 模型提取的图像特征之间的差异。实验中表明, 它有效地提高了渲染图像的感知质量。
为了规范,本文提出的表示优化过程,还额外应用mask监督到目标场景的动态区域。仅渲染动态区域的点云以获得它们的mask,其中像素值由以下公式得到:
mask损失定义如下:
其中,
表示渲染mask的像素集合,而
是2D动态区域的地面真实mask。这有效地通过将其限制在视觉外壳中,规范了动态区域几何优化的过程。最终的损失函数定义如下:
其中,
和
是控制对应损失权重的超参数。
推理
训练完成后,采用几种加速技术来提升模型的渲染速度。首先,在推理之前预先计算点位置 p、半径 r、密度
、SH 系数 s 和颜色混合权重
,这些数据存储在主内存中。在渲染过程中,这些属性被异步地流式传输到显卡上,通过重叠光栅化和内存复制来实现最优的渲染速度。应用这一技术后,运行时计算仅包括深度剥离评估和球谐函数评估 (Eq.(2))。其次,将模型从32位浮点数转换为16位,以实现高效的内存访问,这提高了帧率约20,并且经验证没有可见的性能损失,如表6所示。第三,不可微分深度剥离算法的渲染通道数 K 从15减少到12,同样提高了20 FPS 的速度,而视觉质量无变化。
实现细节
优化
4K4D 使用 PyTorch 框架进行训练。使用 Adam 优化器, 学习率为
, 通常在序列长度为 200 帧的情况下, 模型会在约