摘要

   基于物理模型的可微分渲染用来解决多图像的三维场景完整恢复的逆向问题,最近显露成为一种有吸引力的新技术. 形状参数的逆向求解问题很有趣但也存在严峻的挑战:形状与可见性交织在一起,除非采用高代价的措施,其不连续性在计算导数时会引入严重的偏差.如三角网格等表示的模型,由于网格参数的连续优化不能引入拓扑变化,因此会遇到额外的困难.
   解决这些问题的常用方案三使用距离符号函数(SDF)表示形状,并在优化过程中逐渐调整其零水平集.早期的可微分渲染SDF函数没有完全考虑可见性梯度,需要使用掩码或轮廓监督或者离散为三角网格.
   本文我们将展示,如何扩展常用的球体追踪算法,使其额外输出一个重新参数化的模型从而提供计算精确形状参数导数的方法.在更高层次上,这类似于可微分网格渲染技术,尽管我们证明对于SDF表示的模型较于之前的工作可以特别高效的参数化.我们的实验证明并合成了对象的三维重建,仅使用每个像素的RGB损失,而不使用复杂的正则化和先验知识

1 绪论

   基于物理可微分渲染(PBDR)的方法由于能够解决以前难以解决的逆向问题,包括真实材料外观、阴影和互反射,因此备受关注. 他们区分了基于物理渲染的算法,如路径追踪,并使用生成的梯度最小化高维域上的非线性目标函数.
   这些方法的核心挑战是在模型轮廓处出现的不连续性,如果不考虑该问题,当使用PBDR方法优化场景几何体时,这些凸变会严重偏移导数,从而中断从图像进行三维重建等任务的应用.
   尽管渲染本质上是可微的,但在方程到算法的转换中很难保留此属性.例如,将自动微分(AD)直接应用到渲染算法通常不会产生可用的梯度.三角网格顶点和影响隐式函数的曲面零集的变量,这些参数需要进行特殊处理.
   除了数学上的梯度评估之外,第二个重要关注点就是场景下的3D表达形式.有许多表达可以选择但并非所有选项都同样适用于优化.三角网格已被证明在正向渲染中非常适用,但是逆向问题需要从更广泛的可能性去考虑,包括基于点云,隐式函数,体素面的表达形式. 符号距离函数(SDF)是另一种可能性;对他们的重新兴趣引发出特殊SDF重建技术,我们将在第二章回顾. 符号距离函数是测量到其所定义的零水平集曲面的有符号的距离. 使用SDF作为几何表示的一个关键优势是它们能够在优化过程中轻松表示拓扑变化.    虽然有大量的工作使用SDF进行逆渲染,但现有的技术无法直接区分SDF的主、次(阴影)或高阶效果(全局互反射)的渲染.我们通常期望逆问题的研究变得更有价值,因为模型评估和微分耦合步骤越来越能代表物理现实,这是非常有用的. 最新的研究能够适用于不连续图像的SDF函数重新参数化. 虽然最初是为三角网格开发的,但是这些方法独立于几何表示,因此也适用于SDF. 它们暴露出偏差与计算的折衷,并且为了实现高质量梯度需要追踪昂贵的附加射线.
   我们提出了一种特殊的重参数化技术,用于SDF的可微分优化以解决这些缺点.我们的方法在常用的SDF渲染球体追踪技术上进行了增强,在穿越空间时收集少量的附加信息.我们使用此信息廉价的实例化重新参数化,以解决渲染器执行的不连续积分的问题,从而可以通过标准的AD技术处理剩余的计算. 与之前的工作相比,我们的方法的一个重要区别是,我们的参数化不需要追踪辅助光线来对周围环境进行采样以搜索遮挡边界,因为在SDF表示的有符号距离值中自然可以获得等效信息.然而在这过程中必须考虑各种微妙细节,我们展示了如何仔细推导梯度和雅克比行列式,从而得到一种有效且稳健的方法,该方法比以前的工作更快、更准确.
   最后我们演示了运用我们的方法对基于梯度优化的复杂对象重建SDF,避免了特殊轮廓和复杂先验.图一展示了一个优化结果.本文中,我们不追求从真实世界数据进行最先进的重建;我们的重点主要是对可持续发展框架的有效导数评估.总之,我们的贡献如下:

1)我们提出了一种球体跟踪的改进技术,它动态构造重新参数化,从而年实现精确可微的SDF渲染.

2)我们演示了在不需要复杂先验或者轮廓损失的情况下使用我们的方法进行曲面重建.

3)我们对重新参数化和由此产生的积分域失真进行了严格推导.

4)我们在使用重参数化和应用单位球面上积分的散度定理之间建立了精确的联系.

代码开源在:
https://github.com/rgl-epfl/differentiable-sdf-rendering.

2 相关工作

符号距离函数

替代场景表示

可微光栅化

基于物理的可微渲染

3 背景

   基于物理模型的渲染是,整个空间中光路径$\varphi$对像素j的积分来计算该点强度

\[I_j(\pi) =\int_\varphi f_j(x,\pi)dx ----(1)\]

式中:

$x$为一条光路径,
$\pi$为含有场景参数(包括形状参数\纹理值等)的向量.
$f_i$ 图像形成函数,测量光路对像素$j$的贡献.在实际计算中,我们使用蒙特卡洛积分来计算这高维积分

在下文中,为简化符号,我们仅使用单个标量$\pi$来表示数量及其导数,但是在所有的导数都推广到反向模式微分情况下一次对多个参数求导

3.1可微分渲染

   在可微分渲染中,我们的目标是区分该积分的值,以便于在一组大的场景参数上来最小化基于图像的目标函数.(如使用梯度下降).具体来说,我们要评估如下导数:

\[\partial_\pi I_j(\pi)=\partial_\pi \int_\varphi f_j(x,\pi)dx----(2)\]

如果被积函数不包含任何依赖于$\pi$的不连续性(被积函数涉及到$\pi$的地方都连续),我们使用莱布尼兹公式将偏导符号移入积分中并应用蒙特卡洛积分来评估导数:

\[\partial_\pi I_j(\pi)= \int_\varphi \partial_\pi f_j(x,\pi)dx \approx \frac{1}{N} \overset{N} \sum \limits_{k=1} \frac{\partial_\pi f_j (x_k,\pi)}{p(x_k,\pi)}----(3)\]

其中:

$N$ 采样数量
$x_k$ 表示采样光路
$p$ 所使用采样策略下的概率密度函数(PDF)

   例如,上述估计器可以通过在支持自动微分和微分其输出的框架内评估单向路径跟踪器来实现.这里一个重要的设计决策是蒙特卡洛采样步骤本身以及PDF是否与场景参数相关.事实证明,对于大多数实际用例,最好将采样策略和PDF与微分分离,如等式3所示.这大大简化了有效的导数计算,这就是我们在本文剩余部分将要做的.由于导数被积函数和PDF之间的不匹配,分离采样策略可能会导致额外的方差,但考虑到渲染过程的简化,通常这样来处理.
   前面的评估器假设$f_j(x,\pi)$在由$\pi$决定的位置$x$处不包含任何不连续性,当$\pi$控制场景几何体的形状或位置时,情况就发生改变了.这种相关性会影响$f_j$中与可见性相关的不连续性的位置,这需要一个与雷诺传输定理描述相关的附加导数项.但是,雷诺传输定理不是处理参数相关不连续性的唯一方法.

3.2重参化非连续性

   另一种特别适合于单向路径跟踪的方法是对积分进行重新参数化.其思想是,这种重新参数化的被积函数应该没有参数相关的不连续性.基于此,可以再积分中移动导数运算符,并通过使用标准路径跟踪对光路进行采样来评估参数的导数. 如果我们正确地考虑了由于重新参数化引起的失真,这甚至可以产生无偏梯度估计器.
   单向渲染算法可以表示为球面积分的递归解,因此下文中,我们将求导$S^2$方向的单位球体积分而不是全路径空间积分.

\[\partial_\pi I(\pi) = \partial_\pi \int_{S^2}f(\omega,\pi)d\omega----(4)\]

该公式暂时忽略了互反射影响,但也满足大多数推导,最后我们会把结果与一般情况联系起来.与之前的工作相似,我们不会处理由于全镜面相互作用导致的不连续性这种极具挑战的情况.(例如,通过水面观察到的几何结构)
   给定这个球积分,我们可以使用变量$\tau$的变化来重新描述这个问题:
$S^2 \rightarrow S^2$ 将单位球体映射到自身,重新参数化的$\tau$就被选择使用,能够让生成的被积函数相对于场景参数没有不连续性,这样就可以把偏导算子移进积分:

\[\partial_\pi I(\pi) = \partial_\pi \int_{S^2} f(\omega,\pi)d\omega\] \[=\partial_\pi \int_{S^2}f(\tau(\omega,\pi),\pi)||D\tau_{\omega,\pi}(s) \times D\tau_{\omega,\pi}(t)||d\omega\] \[=\int_{S^2}\partial_\pi [f(\tau(\omega,\pi),\pi)||D\tau_{\omega,\pi}(s) \times D\tau_{\omega,\pi}(t)||]d\omega ----(5)\]

其中:

$s,t$ 是单位球体在$\omega$处的正交切向量
$D\tau_{\omega,\pi}$ 是$\tau$关于向量$\omega$的微分
变换后的切向量的叉积范数考虑了积分域中的失真,类似于环境空间中变量变化的雅可比行列式

   构建重新参数化: 使用此方法的核心技巧就是构建一个合适的重新参数化$\tau$.Bangaru等人将其要求公式化为: 对于原始被积函数的不连续集上的任意方向$\omega_b$下的$\tau$都满足$\partial_\pi\tau(\omega_b,\pi)=\partial_\pi\omega_b$. 换言之,微分重参数应该导致微分运动,该运动与单位球体上的不连续运动完美匹配.注意,$\partial_\pi\tau(\omega_b,\pi)$和$\partial_\pi\omega_b$都是位于单位球体的切线空间中的向量.除此之外,还需要$\partial_\pi\tau(\omega_b,\pi)$其本身是连续的,以使重新参数化有效.另外,积分域必须没有边界(例如单位球),或者被积函数在接近域边界时变为零.
   图2说明了单位球面上积分的重参数化.我们将原始被积函数、向量场$\partial_\pi \tau(\omega,\pi)$以及原始和重参化被积函数的导数可视化.原始被积函数的梯度不包含任何与运动对象轮廓上的遮挡变化相关的项.我们将$\tau$构造成当前参数值$\pi$的恒等式 $\tau(\omega,\pi)=\omega$,这样导数$\partial_\pi \tau(\omega,\pi)$就满足上述要求了.这种方法在不修改原始辐射度估计器的情况下产生正确的导数积分.
   对于三角形网格,可以通过首先构造辅助再参数化来获得合适的再参数化,从而在三角形边界处获得正确的运动. 接着这种重参化方法再与球面域中的滤波器核进行卷积,以消除重参化本身的不连续性.由于这种扰动只影响重新参数化,因此可以使用它来构造原始积分的无偏梯度估计器
   对于积分域失真.公式5中的区域元素$||D\tau_{\omega,\pi}(s) \times D\tau_{\omega,\pi}(t)||$考虑了由于重参化导致的积分域失真.如果我们要重参化3D环境空间,我们只需要使用雅克比行列式映射就可以了.但是在工作流的重参化的工作上是不对的.相反,我们需要使用切向量的叉积的范数,通过重新参数化做微分映射.
   这种使用变换切线向量叉积的重参数化积分公式比以前的工作中描述的更加明确. 在附录A中,我们将此公式作为单位球面上的重参数化公式与Bangaru的散度公式联系起来.我们证明了我们可以计算映射的叉积项或散度,两者在微分时将给出相同的结果,并正确考虑了在工作流上重参化积分.
  

4 方法