1 NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

1.1 使用神经辐射场表示场景 Neural Radiance Field Scene Representation

NeRF 函数是将一个连续的场景表示为一个输入为5维向量的函数,包括一个空间点的 3D 坐标位置 ,以及视角方向 。该神经网络可以写作:

其中, 是对应位置处的密度(可以理解为不透明度), 则是从视角下该点的颜色。

img1

具体流程为:

① 经过一个 8 层的全连接的感知机(ReLU),以 3D 坐标 为输入,得到对应的密度 以及一个256 维度的特征向量作为输出;

② 将这个特征向量以及相机视角 输入另一个全连接的感知机,并得到对应处的 RGB 颜色。

1.2 使用辐射场进行立体渲染 Volume Rendering with Radiance Fields

前面,使用 NeRF 得到了 3D 空间中从特定视角看过去时各点的颜色和密度。那么之后就可以模拟相机成像的过程,进行该视角下的图像的渲染了。简单理解为:最终得到的 2D 图像上任一像素,对应着从视角发出的过该像素点的射线上的所有连续空间点,而空间中点的密度,就可以理解为不透明度,即射线经过该点时被遮挡的概率。

如果将一个射线表示为 ,其中, 表示射线原点, 是相机视角(在这表示射线角度), 表示该射线与整个建模空间的远端和近端交点,分别用 表示。

于是,该射线对应的像素点在图像上成像的颜色可以表示为:

camera

容易理解 是射线从近端 处的密度的累计(即不透明度的累计)。那么 NeRF 模型的训练目标,就是得到神经网络 ,使得计算得到的 尽可能与真实颜色相近。

1.3 基于分段随机采样的离散近似立体渲染 Volume Rendering

虽然上面的渲染方法很简便,但实际情况下,受限于 NeRF 的实际表示能力,并不能得到射线上连续的点的密度和颜色。所以,需要对上面的积分式,进行离散近似。

作者采用将射线上需要积分的区域均分为 份,然后在每一个小区域中进行均匀随机采样。由此,第 个采样点可以表示为:

所以离散后,射线对应在图像上成像的像素的颜色可以表示为:

上式中, 表示相邻采样点之间的距离。

1.4 两种优化性能的办法

1.4.1 位置信息编码 Positional encoding

深度学习网络偏向于学习数据中的低频信息,所以通过对输入的位置进行编码,让其映射到高维空间,提升网络捕捉高频信息的能力。

在文中,作者使用如下的编码函数

其中 即为输入的某点 在各坐标轴方向上的值,即需要对 轴上的值分别进行上面的编码。 则表示映射到的高维空间的维度。文中,关乎于坐标位置 使用的 ,关于视角方向 使用的

1.4.2 分层范围采样 Hierarchical volume sampling

在NeRF的渲染过程中,每一条射线都需要采样许多的点,但实际上,大多数点都是空白区域或者是被遮挡的区域,它们对于最终像素点的颜色没有啥贡献。所以,作者提出了一种粗细结合(coarse to fine)的采样策略。使用一个 coarse 网格()均匀采样,粗略捕捉射线上的分布情况;再使用一个 fine 网格()附加前面 coarse 网格的信息,更加精细精准地采样,训练得到较好的网格。

所以,训练时的损失函数可以表示为(同时优化 coarse 和 fine 网格):

1.5 总结

① NeRF 提供了一种新的不需要重建网格、也不需要存储点云、体素等占用大量存储空间的数据的表示 3D 场景的形式,此外,其中利用的位置信息编码和分层采样的优化策略,也值得学习。

② NeRF 只是提供了一种表示 3D 场景的形式,但没有具体重建出该场景的模型,这意味着难以将场景中的某些物体进行提取、迁移和形变等操作,这极大的限制了该方法的应用场景。

③ NeRF 是一种比较通用的模型,适用于各种场景,但渲染速度和精度都有限制,对于每一个场景,都需要利用多个视角的图片,训练一个 NeRF 网格,这是难以用来处理动态场景的。


2 Neural Body: Implicit Neural Representations with Structured Latent Codes for Novel View Synthesis of Dynamic Humans

基于前面的 NeRF,作者在这篇文中提出了 Neural Body,可以利用稀疏视角的多个视频,生成自由视角的视频

在本文中,输入是一组多目视角的视频,所以每个视角的每帧图像可以表示为,其中, 是相机的索引(即视角的索引), 是帧的索引。

2.1 SMPL 模型

人体可以理解为是一个基础模型和在该模型基础上进行形变的综合,在形变的基础上进行PCA(Principal Component Analysis),得到刻画形状的低维参数——形状参数 shape)。同时,使用运动树表示人体的姿势,即运动树每个关节点和父节点的旋转关系,最终每个关节点的局部旋转量构成了模型的姿势参数 pose)。

SMPL 是一个基于点的外壳模型,它的输出是一个拥有6890个顶点的三维网格。

对于输入的多视角视频的每一帧 ,我们有来自不同视角的该帧的多张图像,并按照 Total capture: A 3d deformation model for tracking faces, hands, and bodies 中的方法得到它的 SMPL 参数(与相关),记作

img2

2.2 Structured latent codes

为SMPL模型的每个顶点定义一个 latent codes,那么整个模型的 latent codes 集

基于前面得到的每一帧的 SMPL 模型参数 ,即可以知道此帧下人体的姿态和 SMPL 模型顶点的位置,从而推导出绑定在这些顶点上的 latent codes 的空间位置。

采用这样的表示方式,可以建立一个潜变量模型,这个模型对于不同帧的关于密度和颜色的隐域,使用相同的 latent codes,从而整合时序信息。

文中的 latent codes 为16维的。

2.3 Code diffusion process

SMPL 模型的顶点是离散的,但需要的结果却是在 3D 空间中连续的。所以,可以采用三线性插值法对 SMPL 模型顶点周围进行插值。但是由于 Structured latent codes 太稀疏了,这里采用的 SparseConvNet 进行插值,并得到 latent codes volume。

输入的多视角视频中的人物的位置和方向可能是一直在变动的,但其姿态可能并没有改变(即视频中人物可能以相同的姿态处在空间中不同的地方,但 SMPL 模型的参数是一样的)。所以在实际利用 latent codes volume 求取一个空间中的点 的 latent codes,需要先将点的空间坐标转换为 SMPL 坐标系下的坐标。于是,对于点 的 latent codes 可以表示为:

2.4 密度和颜色预测 Density and color regression

基于上面的讨论,可以开始对空间中任意点的 density 和 color 进行预测了:

Density model 空间中点的密度只和该点的 latent codes 相关,故关于空间中点 的密度的预测可以表示为:

Color model 对于一帧图像 ,空间中点的颜色不仅仅和该点的 latent codes 相关,还受观察视角方向 以及一些不断变化的因素影响(比如反射光以及自身阴影等),这些因素可以用一个隐变量 表示(文中 拥有128个维度,具体参见Deepsdf: Learning continuous signed distance functions for shape representation)。所以,关于空间中点 的颜色的预测可以表示为:

这里的 分别表示用于密度预测和颜色预测的感知机网络, 则是根据预测点的空间位置 和观察视角 得到的位置编码。

2.5 渲染 Volume rendering

这里的渲染就和前面的 NeRF 完全相同。见1.3。

2.6 损失函数 Loss Function

训练目标即是最小化渲染出的图像与真实图像的误差,即

为网络参数, 为相机参数, 表示与真实图像的总体均分误差

2.7 总结

① 本文利用 SMPL 模型附着 latent codes ,并用 latent codes 代替 NeRF 中以位置 和视角 作为输入,实现时序信息的整合(人体姿态改变,SMPL模型随之形变,不同时刻的模型使用同一套 latent codes),并且这样就避免了每一帧画面都需要训练一个完整的 NeRF 网格,才可以实现对自由视角的人体模型的渲染。

② 基于 SMPL 模型,也使得 neural body 只可以用于人体模型,缺少了 NeRF 那样的普适性。

③ 文中提到了 Neural body 也可用于单目图像的人体三维重建,也对此做了展示,但在论文中并没有更为详细的说明,可能需要结合代码进行分析。

参考:

[1] Mildenhall等.”NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis”.COMMUNICATIONS OF THE ACM,65.1(2022):99-106.

[2] Sida等.”Neural Body: Implicit Neural Representations with Structured Latent Codes for Novel View Synthesis of Dynamic Humans”,(2021).

[3] 【NeRF论文笔记】用于视图合成的神经辐射场技术 - 知乎 (zhihu.com)

[4] NeRF:用深度学习完成3D渲染任务的蹿红 - 知乎 (zhihu.com)