论文阅读:神经辐射场——NeRF
1 NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
1.1 使用神经辐射场表示场景 Neural Radiance Field Scene Representation
NeRF 函数是将一个连续的场景表示为一个输入为5维向量的函数,包括一个空间点的 3D 坐标位置
其中,
具体流程为:
① 经过一个 8 层的全连接的感知机(ReLU),以 3D 坐标
② 将这个特征向量以及相机视角
1.2 使用辐射场进行立体渲染 Volume Rendering with Radiance Fields
前面,使用 NeRF 得到了 3D 空间中从特定视角看过去时各点的颜色和密度。那么之后就可以模拟相机成像的过程,进行该视角下的图像的渲染了。简单理解为:最终得到的 2D 图像上任一像素,对应着从视角发出的过该像素点的射线上的所有连续空间点,而空间中点的密度,就可以理解为不透明度,即射线经过该点时被遮挡的概率。
如果将一个射线表示为
于是,该射线对应的像素点在图像上成像的颜色可以表示为:
容易理解
1.3 基于分段随机采样的离散近似立体渲染 Volume Rendering
虽然上面的渲染方法很简便,但实际情况下,受限于 NeRF 的实际表示能力,并不能得到射线上连续的点的密度和颜色。所以,需要对上面的积分式,进行离散近似。
作者采用将射线上需要积分的区域均分为
所以离散后,射线对应在图像上成像的像素的颜色可以表示为:
上式中,
1.4 两种优化性能的办法
1.4.1 位置信息编码 Positional encoding
深度学习网络偏向于学习数据中的低频信息,所以通过对输入的位置进行编码,让其映射到高维空间,提升网络捕捉高频信息的能力。
在文中,作者使用如下的编码函数
其中
1.4.2 分层范围采样 Hierarchical volume sampling
在NeRF的渲染过程中,每一条射线都需要采样许多的点,但实际上,大多数点都是空白区域或者是被遮挡的区域,它们对于最终像素点的颜色没有啥贡献。所以,作者提出了一种粗细结合(coarse to 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),得到刻画形状的低维参数——形状参数
SMPL 是一个基于点的外壳模型,它的输出是一个拥有6890个顶点的三维网格。
对于输入的多视角视频的每一帧
2.2 Structured latent codes
为SMPL模型的每个顶点定义一个 latent codes,那么整个模型的 latent codes 集
基于前面得到的每一帧的 SMPL 模型参数
采用这样的表示方式,可以建立一个潜变量模型,这个模型对于不同帧的关于密度和颜色的隐域,使用相同的 latent codes,从而整合时序信息。
文中的 latent codes 为16维的。
2.3 Code diffusion process
SMPL 模型的顶点是离散的,但需要的结果却是在 3D 空间中连续的。所以,可以采用三线性插值法对 SMPL 模型顶点周围进行插值。但是由于 Structured latent codes 太稀疏了,这里采用的 SparseConvNet 进行插值,并得到 latent codes volume。
输入的多视角视频中的人物的位置和方向可能是一直在变动的,但其姿态可能并没有改变(即视频中人物可能以相同的姿态处在空间中不同的地方,但 SMPL 模型的参数是一样的)。所以在实际利用 latent codes volume 求取一个空间中的点
2.4 密度和颜色预测 Density and color regression
基于上面的讨论,可以开始对空间中任意点的 density 和 color 进行预测了:
Density model 空间中点的密度只和该点的 latent codes 相关,故关于空间中点
Color model 对于一帧图像
这里的
2.5 渲染 Volume rendering
这里的渲染就和前面的 NeRF 完全相同。见1.3。
2.6 损失函数 Loss Function
训练目标即是最小化渲染出的图像与真实图像的误差,即
2.7 总结
① 本文利用 SMPL 模型附着 latent codes ,并用 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).