本篇学习报告基于CVPR 2021的论文《Neural Lumigraph Rendering》。此论文由斯坦福大学和Raxium公司等单位的研究人员共同完成的。同年的大热话题技术NeRF(神经辐射场)能够创造高质量的三维模型,而Neural Lumigraph Renderin(神经光场渲染)从另一个思路出发,利用实时渲染管道将渲染速度提升两个数量级,并且它使得混合伪像分辨率得到了一定的提升。
SIREN(Sinusoidal Representation Network 正弦表示网络)是由斯坦福大学的学者提出的,用于在高阶复杂的周期激活网络中产生输入信号的正弦形式。正弦函数可微的特点有助于快速精确地实现2D和3D场景重建。目前在一些图像处理社区,已经被一些业余爱好者尝试。
Neural Lumigraph Renderin率先尝试通过使用基于SDF(有向距离场)的SIREN应用到2D多视图图像监控中。使用SIREN学习神经隐式曲面表示,然后导出为与现有实时图形管道兼容的格式。同时改进了损失函数,使得SIREN对监督图像的高质量编码不会因此发生降低,也防止在多视图中的过拟合。这个新的框架可以生成直接用于实时图形管道的输出,对比传统的MLP(非周期多层感知器),SIREN在等量的可学习参数内表示复杂度更高的信号。
传统的视图多视图合成算法利用2D输入视图计算稀疏点云和纹理网格,重新渲染场景后很难还原真实的图像质量。光场渲染尝试从一组视图出发构建新的视图,借助的是代理场景集合实现插值捕获的视图。基于曲面的表示方法也使得计算机图形管道可以用在这里提取和渲染网格表示。
场景的连续形状需要表示成SDF的零水平集
(1)
x是三维空间的某个位置,θ是基于SIREN的SDF表示的可学习参数。
发射函数(2)用于方向在全局坐标系中的定义,此函数规定了不允许重新照明,只能在固定照明条件下对场景外观进行照片级真实感重建,于是在渲染过程中,建模照明和着色问题将需要投入更多的注意。
(2)
神经渲染就是将三维神经场景表示映射到搭配多视图二维场景中。
由于三维曲面是沿每条光线最接近相机远点的零水平集,所以首先要追踪SDF找到这个集合。并定义视图矩阵V和映射矩阵P,这个过程类似于OpenGL的渲染方法。相对于映射位置输出像素的光线原点和光线方向。
使用球体追踪算法迭代更新每条射线。最终收敛成前景对象的零组光线,值得注意的是,对于的收敛,可以接受|S()|<0.005的误差。
在利用多视图2D图像监督3D表示的情况中,使用SIREN(正弦表示网络)作为神经表征还存在一定的困难,SIREN很容易将外观信号过拟合到训练视图。为了优化端到端的表示,需要使用四种不同的约束:
最小化真实图像前景像素的图像重建误差L1:
(3)
传入小部分前景像素的RGB值c之后发现,L1产生的图像质量相对来说更高。
使用光程函数约束正则化集合S:
(4)
其中随机点是从封装对象边界单位半径球体中均匀采样得到的。结果是集合的度量属性得到增强,这对于球体追踪算法来说是非常重要的。
强制映射模式在对象遮罩边界内的落点以此限制成像形状:
(5)
在非前景像素定义的软掩模损失中,软度参数α为(5)的值。其中BCE为二进制交叉熵,通过密集采样近似光线的最小值是。
对辐射场进行正则化:
(6)
基于SIREN容易过拟合的这个特点,很容易编码出照片级的真实感表面细节。SIREN的收敛速度远远超过基线架构,在时下的一块正常GPU中拟合单张图像几百次只需要几秒钟,同时保持图像不会过度失真。但是需要限制对辐射场施加一定的限制。使用函数(6)可以将角度行为线性化。
传统的体积捕获分为四个阶段:
1 通过多角度的摄像设备获取图像
2 使用encoder-decoder计算并连接视图的相关性
3 使用Ray marching算法计算三维空间中各个点的体素
4 经过训练最终合成一个可以实时操作的实体
这种类型的视图合成需要极高的训练量,很难做到实时响应的范畴。SIREN在2D监督下的外观表示显然表现得不错,但是在中高分辨率的图像中难以维持实时速率运行。
使用marching cubes算法提取高分辨率网格,偏移曲面iso的值为0。为导出外观,需要对优化的发射函数E进行重采样。由此可以合成多个摄像机姿势的映射纹理Ti和对应映射矩阵。在渲染过程中,使用OpenGL对网格进行栅格化,将顶点位置映射到每个像素。接着计算朝向当前渲染摄像机的光线和朝向各个映射纹理贴图视点的光线之间的角度。采用非结构化的光场渲染技术生成渲染图像。
(7)
当→0时,可以通过将被遮挡纹理的权重设置为0从而丢弃纹理样本。这种方法在实时渲染软阴影中会有所应用。
Neural Lumigraph Rending的相机阵列由16台GoPro Hero7动作相机和6台Back Bone H7Pro相机组成。并且经过改进,Back Bone相机拥有更窄的视野可以保持4k/30fps的纵向拍摄速度,GoPro相机拥有1080p/60fps的横向拍摄速度。这个相机阵列能保持60fps的最低运行速度。
实验主要比较了Colmap(传统多视图立体)、IDR(隐式可微渲染器)、NV(神经体积)、NeRF(神经辐射场)、NLR-ST(球体追踪渲染器)和NLR-RAS(实时光栅化神经光场渲染器)。NLRST和IDR都是基于球体追踪,但是在较小的模型中,使用了SIREN的NLR-ST显然有更出色的表现。NV渲染成本过于高了。只有Colmap和NLR-RAS的显示表示才能在60fps以上的帧速率下表现出真正的实时渲染性能。图4呈现的是更为直观的效果。
NLR给出了一个神经渲染框架,该框架将使用周期激活的表示网络体系结构与基于球体跟踪的神经渲染器相结合,并且改进了新的损失函数,能够保证实时渲染的同时实现较高的图像质量。但是由于着重点放在了辐射函数,导致只能在固定照明的条件下进行场景重建,NLR未来还需要加强动态照明或者阴影能力。同时NLR生成的图形不如比较的几个方法精确,只能保证在合格线之上。
原论文链接:CVPR 2021 Open Access Repository (thecvf.com)
参考文献:
[1] Kellnhofer P, Jebe L C, Jones A, et al. Neural lumigraph rendering[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 4287-4297.
[2] Davies T, Nowrouzezahrai D, Jacobson A. On the effectiveness of weight-encoded neural implicit 3D shapes[J]. arXiv preprint arXiv:2009.09808, 2020.
撰稿人:李维杰
审稿人:罗胜舟