作者:杨雯琦
S3-NeRF 通过利用不同点光源下捕获的单视图图像学习神经反射场(neural reflectance field)以重建场景的 3D 几何和材质信息。与依赖于视图间照片一致性(photo-consistency)的多视图场景重建(multi-view scene reconstruction)不同,S3-NeRF 主要利用图像中的 shading 和 shadow 信息来推断可见 / 不可见区域的场景几何。
目前图像 3D 重建工作通常采用恒定自然光照条件下从多个视点(multi-view)捕获目标场景的多视图立体重建方法(Multi-view Stereo)。然而,这些方法通常假设朗伯表面,并且难以恢复高频细节。
另一种场景重建方法是利用固定视点但不同点光源下捕获的图像。例如光度立体 (Photometric Stereo) 方法就采用这种设置并利用其 shading 信息来重建非朗伯物体的表面细节。然而,现有的单视图方法通常采用法线贴图(normal map)或深度图(depth map)来表征可见表面,这使得它们无法描述物体背面和被遮挡的区域,只能重建 2.5D 场景几何。此外,法线贴图无法处理深度不连续的情况。
在最近的一项研究中,来自香港大学、香港中文大学(深圳)、南洋理工大学、MIT-IBM Waston AI Lab 的研究者们提出了通过利用单视图多光源(single-view,multi-lights)图像,重建完整 3D 场景的工作。
- 论文链接:https://arxiv.org/abs/2210.08936
- 论文主页:https://ywq.github.io/s3nerf/
- 代码链接:https://github.com/ywq/s3nerf
与现有基于法线贴图或深度图的单视图方法不同,S3-NeRF 基于神经场景表征(neural scene representation),同时利用场景中的 shading 和 shadow 信息来重建整个 3D 场景(包括可见 / 不可见区域)。神经场景表征方法使用多层感知器 (MLP)对 连续 3D 空间进行建模,将 3D 点映射到如密度、颜色等的场景属性。尽管神经场景表征在多视图重建和新视图合成方面取得了重大进展,但其在单视图场景建模中的探索较少。与现有依赖多视图照片一致性的基于神经场景表征的方法不同,S3-NeRF 主要通过利用单视图下的 shading 和 shadow 信息来优化神经场。
我们发现简单的在 NeRF 中直接引入光源位置信息作为输入无法重建场景的几何和外观。为了更好地利用捕获的光度立体图像,我们使用反射场(reflectance field)对表面几何和 BRDF 进行显式建模,并采用基于物理的渲染来计算场景 3D 点的颜色,并通过立体渲染得到该光线(ray)对应的二维像素的颜色。同时,我们对场景的可见度(visibility)进行可微建模,通过追踪 3D 点到光源之间的光线,计算该点的可见度。然而,考虑一条光线上所有采样点的可见性计算成本较大,因此我们通过计算光线追踪得到的表面点的可见性来优化阴影建模。
基于神经反射场的场景表征
我们采用类似 UNISURF 的 occupancy field 来表征场景几何。UNISURF 通过 MLP 将 3D 点坐标及视线方向映射到该点的 occupancy 值和颜色,并通过立体渲染得到像素的颜色,
Nv为每条射线上采样点的数量。
为了有效利用光度立体图像中的 shading 信息,S3-NeRF 显式地对场景的 BRDF 进行了建模,并使用基于物理的渲染得到 3D 点的颜色。同时我们对场景 3D 点的光可见性进行建模以利用图像中丰富的阴影线索,并通过下式得到最后的像素值。
基于物理的渲染模型
我们的方法考虑了非朗伯表面和空间变化的 BRDF。点 x 在近场点光源(pl, Le)下从视线方向 d 观测得到的值可以表示为
其中,我们考虑到点光源的光线衰减问题,通过光源 - 点之间的距离计算入射该点处的光照强度。我们采用考虑漫反射和镜面反射的 BRDF 模型
通过球形高斯(Sphere Gaussian)基的加权组合来表示镜面反射率
阴影建模
阴影在场景几何重建中是至关重要的其中一个线索。图中的三个物体在正视图中具有相同的形状和外观,但其背面却是形状各异。通过不同光照下产生的阴影,我们可以观察到其阴影的形状各不相同,这些反应了正视图中不可见区域的几何信息。光线通过映射在背景中的阴影对物体的背面轮廓产生了一定的约束。
我们通过计算 3D 点 - 光源之间的 occupancy 值来反映该点的光可见度
其中,NL是该点 - 光源线段上采样的点的数量。
由于计算像素点沿光线采样的所有 Nv 点的可见度计算成本较大(O (NvNL)),现有的方法有的采用 MLP 直接回归点的可见度(O (Nv)),或是得到场景几何后预先提取表面点(O (NL))。S3-NeRF 则通过 root-finding 定位的表面点以在线方式计算该像素的光可见度,并通过下式表示像素值。
场景优化
我们的方法不需要对阴影进行监督,而是依靠图像的重建 loss 来进行优化。考虑到单视角下没有其他视角带来的额外约束,如果采用类似 UNISURF 逐渐缩小采样范围的采样策略,将会导致模型在采样间隔减小后开始退化。因此,我们采用联合立体渲染和表面渲染的策略,利用 root-finding 定位得到的表面点渲染颜色并计算 L1 loss。
实验结果
与神经辐射场方法的比较
我们首先与基于神经辐射场的两个 baseline 方法进行比较(由于任务不同,我们在其颜色 MLP 中引入光源信息)。可以看到它们无法重建场景几何,也无法准确生成新光照下的阴影。
与单视角形状估计方法的比较
在与现有单视图法线 / 深度估计的方法比较中可以看到,我们的方法在法线估计和深度估计上都取得了最好的结果,并且能够同时重建场景中可见与不可见的区域。
不同背景的场景重建
我们的方法适用于各种不同背景条件的场景。
新视图渲染、改变光照与材料编辑
基于神经反射场的场景建模,我们成功解耦了场景的几何 / 材质 / 光照等,因而可以应用于新视图渲染、改变场景光照、材料编辑等应用。
真实拍摄场景的重建
我们拍摄了三个真实场景来探索其实用性。我们将相机位置固定,利用手机的手电筒作为点光源(环境光源关闭),手持手电筒随机移动以捕捉不同光源下的图像。该设置无需光源校准,我们应用 SDPS‑Net 得到光源方向的粗略估计,并粗略估计相机 - 物体及光源 - 物体的相对距离来初始化光源位置。光源位置在训练过程中随场景的几何和 BRDF 联合优化。可以看到即便是较为随意的数据捕捉设置(没有对于光源的校准),我们的方法仍能较好的重建 3D 场景几何。
总结
- S3-NeRF 通过利用单视图多个点光源下拍摄的图像来优化神经反射场以重建 3D 场景几何和材质信息。
- 通过利用 shading 和 shadow 线索,S3-NeRF 能有效恢复场景中可见 / 不可见区域的几何形状,实现单目视角下完整场景几何 / BRDF 的重建。
- 各项实验表明我们的方法能够重建各种复杂几何 / 材质的场景,并能应对各种几何 / 材质的背景以及不同的光照数量 / 光源分布。