34、NeRFactor: Neural Factorization of Shape and Reflectance Under an Unknown Illumination

NeRFactor是一种方法,它从多视角图像中分解物体的形状、反射率和照明,支持自由视点重照明和材料编辑。针对NeRF在重照明方面的不足,NeRFactor提出使用硬表面近似减少阴影计算成本,并通过MLP表示表面法线和光能见性,以平滑和准确地恢复这些属性。此外,它还学习BRDF的潜在空间,以处理反射率和环境照明。通过优化流程,NeRFactor能够从输入图像中重建高质量的3D场景表示。
摘要由CSDN通过智能技术生成

简介

主页:https://xiuming.info/projects/nerfactor/
在这里插入图片描述
给定一组在一个未知照明条件下从多个视角捕获的物体的姿态图像(左),神经辐射因数(NeRFactor)能够将场景分解为表面法线、光能见度、反照率和材料(中)的3D神经场,这使得自由视点重照明和材料编辑(右)等应用程序成为可能。

NeRF不能用于重照明两个缺陷

  1. NeRF模型的形状是一个体积场,因此,沿着相机光线计算整个半球照明的每个点的阴影和可见度是非常昂贵的
  2. 由NeRF估计的几何包含了额外的高频内容,虽然在视图合成结果中不明显,但将高频伪影引入了从NeRF几何计算的表面法线和光可见性中

NeRFactor解决方案

  1. 使用NeRF几何的“硬表面”近似,只在沿着每条射线的单个点执行阴影计算,对应于体积的预期终止深度
  2. 通过表示曲面上任何3D位置的表面法线和光可见性作为连续函数参数化的多层感知器(MLPs),并鼓励这些函数接近从预训练的NeRF导出的值,并在空间上光滑

贡献点

  1. 一种用于在未知照明条件下将物体的图像分解为形状、反射率和照明的方法,从而支持带有阴影和材料编辑的自由视点照明;
  2. 将nerf估计的体积密度提取到表面几何(与法线和光可见性),用作改善几何和恢复反射率时的初始化
  3. 一种基于实际BRDF训练潜在码模型的数据驱动BRDF先验算法

输入数据

输入是一组物体在未知环境照明条件下的多视角图像,以及这些图像的相机姿态

实现流程

在这里插入图片描述
NeRFactor利用NeRF的𝜎-volume作为一个初始化来预测每个表面位置𝒙surf的表面正常𝒏,光能见度𝑣,反照率𝒂和BRDF潜在代码𝒛BRDF,以及照明条件。𝒙表示3D位置,𝝎i光照方向,𝝎o观看方向,𝜙d,𝜃h,𝜃d Rusinkiewicz坐标。NeRFactor不需要对任何中间因素进行监督,而只依赖于先验和重建损失。请注意,NeRFactor是一个全mlp架构,只建模表面点(不像NeRF建模整个卷)。
在这里插入图片描述
NeRFactor共同解决了表面法线、光能见度、反照率和BRDFs(以及环境照明)的合理3D场,这些共同解释了观测到的视图。在这里,我们可视化在每个位置(即环境遮挡)所有入射方向上的光可见性的平均值。我们将𝑧BRDF可视化为RGB图像(相似的颜色表示相似的材料)。

Shape

将NeRF应用到输入图像中来计算初始几何形状,利用NeRF的估计几何形体,将其“蒸馏”成一个连续的曲面表示,用它来初始化NeRFactor的几何形体,使用优化的NeRF来计算沿任何相机射线的预期表面位置,物体表面上每个点的表面法线,以及物体表面上每个点从任何方向到达的光的可见性

Surface points

给定一个相机和一个经过训练的NeRF,根据NeRF的优化体积密度计算光线𝒓(𝑡)=𝒐+𝑡𝒅从该相机𝒐沿着𝒅方向预计将终止的位置𝜎:
在这里插入图片描述
没有维护完整的体积表示,而是将几何图形固定在从优化的NeRF中提炼出来的表面上,这样使得训练和推断期间可以更有效的重照明,可以仅在每个相机射线的期望终止位置计算出传出的辐射度,而不是沿着每个相机射线的每个点。

Surface normals

在任何3D位置计算解析曲面法线𝒏a(𝒙)作为NeRF的𝜎 volume的负归一化梯度,然而从经过训练的NeRF中得到的法线往往是有噪声的,因此在用于渲染时产生“凹凸不平”的工件
在这里插入图片描述
使用MLP 𝒇n重新参数化这些法线,它从表面上的任何位置𝒙 surf映射到“去噪”的表面法线𝒏:𝒇n:𝒙 surf↦→𝒏

在NeRFactor权重的联合优化过程中,鼓励输出此MLP

  1. 输出保持接近预训练的NeRF产生的法线
  2. 在3D空间中平滑变化
  3. 再现观察到的物体外观

根据1,2的损失函数为
在这里插入图片描述
𝝐 是 𝒙surf 的随机三维位移,采样自零均值高斯分布,标准差为0.01(由于场景尺度不同,真实场景的标准差为0.001)

** 𝜆1 和 𝜆2 分别为超参数设置为 0.1 和 0.05 **

使用了表面法线上类似的平滑损失来实现形状重建的目标,不限制 𝒙 在预期表面,通过提供“安全边际”,即使输入稍稍偏离表面,输出仍保持良好,从而提高了MLP的鲁棒性
在这里插入图片描述

Light visibility

通过NeRF的𝜎-volume从点到每个光源位置,计算从任何点到每个光源的能见度𝑣a

直接从NeRF的𝜎-volume导出的可见性估计噪声太大,不能直接使用,并导致渲染伪影
在这里插入图片描述

重新参数化可见性函数作为另一个MLP,从表面位置 𝒙 surf 和灯光方向 𝝎i 映射到灯光可见性 𝑣:𝑓v:(𝒙surf,𝝎i)↦→𝑣,同时优化了𝑓v的权重,以鼓励恢复的可见度场

  1. 接近从NeRF追踪到的可见度
  2. 空间平滑
  3. 再现观察到的外观

根据1,2的损失函数为
在这里插入图片描述
𝝐是𝒙surf的随机三维位移,采样自零均值高斯分布,标准差为0.01(由于场景尺度不同,真实场景的标准差为0.001)

𝜆3和𝜆4是分别设置为0.1和0.05的超参数

在相同𝝎i的空间位置上鼓励平滑,而不是相反

**避免在特定位置的能见度在不同的光位置上变得模糊,对预训练的NeRF导出的可见性进行去噪,并最小化重新渲染的损失
**
在这里插入图片描述
为了计算NeRF可见性,使用了一组给定预定义照明分辨率的512个光源位置的固定集合

𝑓v产生空间平滑和现实的光可见性估计

可视化所有光方向的平均可见性(即环境遮挡)

在模型完全优化前

独立地预训练了可见性和正常MLPs,只再现了从NeRF𝜎-volume的可见性和正常值,而没有任何平滑规整或重新渲染的损失,这样提供了一个合理的可视性地图的初始化,防止反照率或BRDF MLP错误地试图解释被建模为“绘制”反射率变化的阴影

Reflectance

完整的BRDF模型𝑹由漫反射分量(Lambertian)完全由反照率 𝒂 确定和镜面空间变化的 BRDF 𝒇r(定义在表面的任何位置𝒙surf,入射光方向𝝎i和出射方向𝝎o),从真实世界的反射率中学习
在这里插入图片描述
探索了利用分析BRDFs参数化𝒇r

NeRFactor没有假设一个分析的BRDF,而是从一个学习的反射率函数开始,该函数经过预训练,以重现广泛的经验观察到的真实世界的反射率函数,同时也学习了这些真实世界反射率函数的潜在空间

在真实世界的BRDFs上学习数据驱动的先验,鼓励优化过程来恢复合理的反射函数。

先验的使用至关重要,观察到的所有图像都是在一个(未知)光照下拍摄的,问题是高度不适定的,所以有必要使用先验来区分最可能的场景分解和所有可能的分解

Albedo

以表面 x surf作为 MLP𝒇a:𝒙surf↦→𝒂,参数化该表面任意位置的反照率𝒂,因为反照率没有直接的监督,模型只能观察到一种光照条件,依靠简单的空间平滑先验(和光可视性)来消除歧义,例如:白色的表面包含一个阴影”的情况和“黑白的表面”的情况。观察视图的重构损失也推动了𝒇a的优化
在这里插入图片描述
𝝐是𝒙surf的随机三维位移,采样自零均值高斯分布,标准差为0.01(由于场景尺度不同,真实场景的标准差为0.001)

𝜆5是设为0.05的超参数

𝒇a的输出被用作Lambertian反射率中的反照率,但不是在非漫反射组件中,我们假设高光反射颜色为白色

通过将网络的最终sigmoid输出缩放0.77,然后添加0.03的偏差,将反照率预测限制在[0.03,0.8]

Learning priors from real-world BRDFs

试图学习真实BRDF的潜在空间和配对的“解码器”,将学习空间𝒛BRDF中的每个潜在代码转换为完整的4D BRDF

论文为此采用生成潜伏优化(GLO)方法,模型的𝒇r组件使用MERL数据集进行预训练

MERL数据集假设各向同性材料,使用Rusinkiewicz坐标(𝜙d,𝜃h,𝜃d)(3自由度)而不是𝝎i和𝝎o(4自由度)参数化𝒇r的入方向和出方向

用𝒈表示这个坐标转换:(𝒏,𝝎i,𝝎o)↦→(𝜙d,𝜃h,𝜃d),其中𝒏是该点的曲面法线

训练一个函数𝒇’ r(𝒇r的重新参数化),该函数从潜在代码𝒛BRDF(表示BRDF身份)和一组Rusinkiewicz坐标(𝜙d,𝜃h,𝜃d)的连接映射到消色差反射𝒓
在这里插入图片描述
为了训练网络,优化了MLP的权重以及潜在代码集𝒛BRDF,以重现一组真实世界的brdf,简单的均方误差计算对高动态范围(HDR)反射率值的对数训练𝒇’ r

反射率模型的颜色成分假设由反射率预测网络处理,通过将MERL数据集的RGB反射率值转换为消色差的反射率值,从而丢弃所有的颜色信息

潜在的BRDF识别码𝒛BRDF被参数化为无约束的三维向量,并被初始化为零均值各向同性高斯分布,标准差为0.01

在训练过程中,𝒛BRDF没有受到稀疏性或规范的惩罚

在这个预训练之后,这个BRDF MLP的权重在整个模型的联合优化过程中被冻结,从零训练一个BRDF身份MLP:𝒇z:𝒙surf↦→𝒛BRDF,对每个𝒙surf只预测𝒛BRDF

由此,在真实BRDFs的可信空间中预测所有表面点的空间变化的BRDFs,优化了BRDF标识MLP,以最小化重渲染损失以及与反照率相同的空间平滑性
在这里插入图片描述
𝜆6是设置为0.01的超参数

dim(𝒛BRDF)表示BRDF潜在代码的维数(在我们的实现中是3,因为在MERL数据集中只有100种材料)

最终的BRDF是Lambertian分量和学习到的非漫反射之和(为简便起见,删除𝒙surf下标):
在这里插入图片描述
镜面高光颜色假定为白色

Illumination

论文采用了一种简单而直接的光照表示:一幅HDR光照探测器图像,采用经纬度格式。与球形谐波或球形高斯混合相比,这种表示允许模型表示详细的高频照明,因此支持硬投射阴影。同时,它包含大量参数,每个像素/参数可以独立于所有其他像素/参数变化。这里通过使用光可见性MLP来改善,它允许快速评估一个表面点对光探针所有像素的可见性。根据经验,对照明环境使用16 × 32分辨率,因为不期望在超过该分辨率的光探针图像中恢复更高频率的内容

对光线探针𝑳的像素在水平和垂直方向上都施加了一个简单的ℓ2梯度惩罚
在这里插入图片描述
∗表示卷积运算符,𝜆7是一个超参数,设置为5 × 10−6(假设有512个像素具有HDR值)

Rendering

给定表面法线、所有光线方向的可见性、反照率和每个点𝒙surf的BRDF,以及估计的光照环境,最终基于物理的、不可学习的渲染器渲染图像,然后与观测图像进行比较

该渲染图像中的误差反向传播到(但不包括)预训练的NeRF的𝜎-volume,从而驱动表面法线、光能见度、反照率、BRDFs和照明的联合估计

在这里插入图片描述
𝑳o (𝒙, 𝝎o)是从 𝝎o到x的出射亮度

𝑳i(𝒙,𝝎i)是入射的亮度,被可见性𝑓v(𝒙,𝝎i)掩盖,沿着𝝎i直接从一个光探针像素到达𝒙(因为我们只考虑单反弹直接照明)

Δ𝝎i是对应于在的照明样品的solid Angle

总损失
在这里插入图片描述

Implementation Details

训练过程可分为三步走

  1. 使用输入的姿势图像优化NeRF(每个场景一次),并在MERL数据集上训练BRDF MLP(所有场景只训练一次)。这两个MLP在最终的联合优化过程中都是冻结的,因为NeRF只提供了形状初始化,而BRDF MLP为优化探索提供了真实世界BRDF的潜在空间。未来的形状细化发生在NeRFactor的正常和可见性MLPs中,而实际的材料预测发生在NeRFactor的反照率和BRDF身份MLPs中
  2. 使用这个训练有素的NeRF来初始化几何形状,通过优化普通和可见性mlp来简单地重现NeRF值,而没有任何额外的平滑损失或正则化
  3. 联合优化反照率MLP、BRDF身份MLP、光探针像素,以及预训练的正常MLP和可见性MLP,微调正常和可见性MLPs以及反射率和照明允许NeRF的初始几何误差得到改善,以最大限度地减少重新渲染的损失

效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值