HF-NeuS: Improved Surface Reconstruction Using High-Frequency Details
文章的作者与我还有些关系。2022年10月-11月疫情封控期间我读的这篇文章,当时有许多感想。由于封控导致精神失常,那段时间没有认真做科研,也没有更新网站,以此机会重读一遍,补上博客。后半部分的高频分量部分没有能够系统性的搞懂,这次重读,希望能够读懂。
作者
Yiqun Wang KAUST
Ivan Skorokhodov KAUST
Peter Wonka KAUST
KAUST,沙特的一个大学,广收天下科研人员,资金充沛。
链接
发表时间:
[v1] Wed, 15 Jun 2022 23:46:48 UTC (19,086 KB) [v2] Thu, 22 Sep 2022 14:47:38 UTC (34,181 KB)
介绍
这篇文章引用了不少NeRF相关的文章。虽然我是希望做NeuS相关的改进工作,但是NeRF的论文读的并不多,需要多读几篇文章。
方差s在NeuS里面是全局设定好的,但是在这篇文章里面,作者将这个s设置为依据不同空间位置进行变换的,尤其对于有问题的区域做特别的适应和变换。
相关工作
多视角三维重建
神经隐式表面
文章花了很大一部分篇幅来叙述神经隐式表面在这段时间内发生了什么。
首先是DVR,接下来是IDR,随后是NeRF。实际上,在IDR发表的过程中,NeRF已经做出来工作,并发表到Arxiv上面,IDR是知道的,还在文中引用了Arxiv上NeRF的工作。也就是说,NeRF先于IDR完成。NeRF是2020ECCV(放榜时间应该晚于NIPS的5月截稿),IDR是2020NIPS(5月截稿)。
NeRF++对NeRF的工作做了改进,但是一直挂在Arxiv上面。
Unisurf发表于2021年的ICCV(截稿时间在2021年的二月、三月左右), NeuS, VolSDF是2021年的NIPS文章(2021年5月截稿)。三篇工作勉强算作是同期的,UNISURF工作稍微靠前一些。
Improving neural implicit surfaces geometry with patch warping(简称为NeuralPatch)发表于2022年的CVPR(截稿2021年的11、12月左右),本文HF-NeuS是2022年的NIPS(截稿2022年的5月左右)。
文章的作者说,由于NeuralPatch是一个基于表面法向量的改进文章,所以不予同期测评。这种说法是否可以接受呢?还要等接下来回顾NeuralPatch之后再看。
高频细节重建
关于隐式置换场,implicit replacement field,下面这篇论文是主要的贡献。
[16] M. Li and H. Zhang. D2im-net: Learning detail disentangled implicit fields from single images. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 1024610255, 2021.
学习基函数和置换函数,base sdf and implicit displacement fields.
[34] W. Yifan, L. Rahmann, and O. Sorkine-hornung. Geometry-consistent neural shape representation with implicit displacement fields. In International Conference on Learning Representations, 2022. ICLR的工作?
方法
将透射率建模为SDF的函数
文章里面用了一个比较宽泛的假设,在射线由接近相机到远离相机的方向上,SDF函数是会从正的一直变为负数;并且透射率函数也会从正1逐渐衰减到0。当然,他这里的透射率是以体密度积分的概念上理解的透射率,是一个逐步衰减的过程,表示的光能够从给定距离的空间位置点上,成功透过来的概率,与我所说的透明物体造成的光路遮挡,使得光的强度变低不完全是同一件事情。我所讲的透射率是基于物体表面而言的,只有表面存在这种透射率,在我的假设中,空气的透光率基本是100%的。而基于体渲染、NeuS的文章,一般是空气中任何地方都存在透射率,这种透射率会随着物体表面的出现迅速衰减为0,这种衰减是由于他们所做的实心物体表面假设所致。
This inverse property results in the Ψ function being a monotonic increasing function from 0 to 1.
说回HF-NeuS这篇文章中的假设,我的评价是,如果持续以这种方式建模的话,会出现比较大的问题,这种问题已经在后续的论文$\alpha Surf$里面体现出来了。
如果SDF是终究要变成负数,而且只有单表面的话,这种考虑倒是可以的,但是一般来说,SDF是会有许多次增加、下降的时候。如果后续全面沿用这个假设,会出大问题的。问题的原因就在于,SDF并不是一个单调递减的函数;而且透射率也不是一个简单的全面单调递减,如果出现透明物体,透射率会先由空气的高透射率下降到玻璃的低透射率,再升高到空气的高透射率,随后穿过非透明物体,透射率再次减低至0。
Therefore, we have our design criteria for Ψ: Ψ should be a monotonic increasing function from 0 to 1, with the steepest slope at 0.
这个也是局限于射线与平面相交的时候,你说\Phi是一个0-1之间的单调递增函数,这里的自变量是符号距离函数;梯度最陡峭产生于物体表面,这个结论讨论于之前Phi对t的求导极大值,由于\Phi对sdf的导数乘以一个常数(梯度与方向的点乘)就是\Phi对t的导数,二者之间只差一个常数,所以梯度的陡峭程度是相同的。
Sigmoid在不同s下的图像如图所示。
s控制的是接近0点的变化速率,如果s值越大,代表接近0点的变化速率越大,导数的峰值也越高。 \(f(x) = \frac{1}{1+\exp(-sx)}\\ f'(x)=s*f(x)*(1-f(x))\\ std(f'(x)) = s\)
没有三维监督的隐式置换场
文章引入另一个置换函数(displacement function),该函数的设计是沿着基函数的表面法向量设计的。原因是MLP难以在一次学习中既学习高频分量,又学习低频分量。
文章提出要学习不同尺度的频率信息,并且由粗到细的逐步提升频率分量。
文章的第6页,公式9前面的一段话,这一段话的表述应该是存在问题的。我去读了HF-NeuS参考的论文,Geometry-Consistent Neural Shape Representation with Implicit Displacement Fields,按照我的理解来重新改写这段话。
HF-NeuS第6页的原文如下:
Suppose $f$ is the combined implicit function that represents the surface we want to obtain. The function $f_b$ is the base implicit funcction that represents the base surface. Following [34] (Geometry-Consistent Neural Shape Representation with Implicit Displacement Fields), the displacement implicit function $f_{d’}$ is used to map the point $x_b$ on the base surface to the surface point $x$ along the normal $n_b$ and vice versa $f_d$ is used to map the point $x$ on the base surface to the surface point $x_b$ along the normal $n_b$, thus $f_{d’}(x_b) = f_{d}(x)$. Because of the nature of implicit functions, the relationship between the two functions can be expressed as follows. , \(f_{b}(x_b) = f(x_b+f_{d'}(x_b)n_b)=0 \tag{9}\)
我认为应该改为:
the displacement implicit function $f_{d’}$ is used to map the point $x_b$ on the base surface to the surface point $x$ along the normal $n_b$ and vise versa. $f_d$ is used to map the point x on the surface to the surface point $x_b$ along the normal $n_b$, thus $f_{d’}(x_b)=f_{d}(x)$
这样就和后面的公式对上号了。
好吧,为了看懂这一个公式,花了3月24日一天的时间读论文 Geometry-Consistent Neural Shape Representation with Implicit Displacement Fields 来寻找答案,也算是大有收获了吧。
核心内容简介
论文的主要目标
论文的核心目标是改进从多视角图像重建3D形状的方法。传统的方法在重建复杂形状时,往往会丢失细节,导致重建出来的形状过于平滑。而这篇论文提出了一种新的方法(HF-NeuS),能够更好地重建出复杂的高频细节,比如物体表面的纹理、小孔、边缘等。
关键概念:SDF(Signed Distance Function)
论文中提到了一个重要的概念:SDF(Signed Distance Function,符号距离函数)。简单来说,SDF是一种数学方法,用来描述一个点到最近的表面的距离。如果一个点在物体内部,SDF的值是负的;如果在物体外部,SDF的值是正的;如果刚好在表面上,SDF的值是0。通过SDF,我们可以用数学公式来表示一个复杂的3D形状。
论文的主要贡献
论文提出了三个主要的改进点:
-
透明度与SDF的关系
论文重新分析了SDF与透明度(transparency)之间的关系,并提出了一种新的方法来将SDF转化为透明度。这种方法比之前的方法更简单,也更容易实现。 -
高频细节的建模
为了更好地重建高频细节,论文提出将SDF分解为两部分:基础函数(base function)和位移函数(displacement function)。基础函数负责描述形状的大致结构,而位移函数则用来添加细节。通过这种方式,网络可以更容易地学习到复杂的几何形状。 -
自适应优化策略
论文还提出了一种自适应的优化策略。简单来说,这种方法会自动调整优化的重点,让网络更关注那些重建效果不好的地方,从而提高整体的重建质量。
实验结果
论文通过实验验证了新方法的有效性。在多个数据集上,HF-NeuS都取得了比现有方法更好的结果。比如在DTU数据集上,HF-NeuS的平均Chamfer距离(一种衡量重建质量的指标)比之前最好的方法(NeuS和VolSDF)更低,这说明它能够更准确地重建出物体的表面。
总结
这篇论文的核心是通过改进SDF的建模方式和优化策略,让神经渲染能够更好地重建出复杂的3D形状。虽然它涉及到了很多复杂的数学和计算机图形学知识,但它的核心思想是通过分解问题和自适应优化来提高重建质量。
论文详细介绍
论文标题和作者
标题: HF-NeuS: Improved Surface Reconstruction Using High-Frequency Details
作者: Yiqun Wang, Ivan Skorokhodov, Peter Wonka
单位: KAUST(沙特阿卜杜拉国王科技大学)
会议: NeurIPS 2022(第36届神经信息处理系统会议)
研究背景
这篇论文的核心目标是解决神经表面重建(Neural Surface Reconstruction)中的高频细节问题。简单来说,就是如何从一组二维图像重建出高质量的三维形状,尤其是那些具有复杂细节(如纹理、边缘、小孔等)的形状。
背景知识
在计算机视觉和图形学中,3D重建是一个经典问题。传统方法(如基于体素或点云的方法)通常依赖于离散化表示,但这些方法在处理复杂形状时往往效果不佳。近年来,随着神经渲染技术的发展,NeRF(Neural Radiance Fields)及其变体成为热门研究方向。这些方法通过神经网络隐式地表示3D场景,能够从多视角图像合成高质量的3D图像。
然而,现有方法在重建高频细节时存在困难,导致重建的形状往往过于平滑,丢失了细节。例如,NeRF虽然在图像合成上表现出色,但在提取高质量表面时效果不佳。因此,如何改进神经表面重建,使其能够更好地处理高频细节,成为了一个重要的研究方向。
研究方法
论文提出了一种新的方法——HF-NeuS(High-Frequency Neural Surface Reconstruction),通过以下三个核心改进来提升表面重建的质量:
1. 透明度建模(Transparency Modeling)
论文首先分析了符号距离函数(SDF)与体积渲染中的透明度、权重函数之间的关系。在体积渲染中,透明度(Transparency)和密度(Density)是两个关键概念。透明度表示光线穿过物体时的衰减程度,而密度则表示物体的“厚度”。
论文提出了一种新的透明度建模方法,将透明度直接定义为SDF的函数: \(T(t) = \frac{1}{1 + e^{-sf(r(t))}}\) 其中,$ s $是一个控制透明度变化速率的参数,$ f(r(t)) $是SDF。这种建模方式比之前的方法更简单,且避免了数值计算中的问题。
2. 隐式位移场(Implicit Displacement Field)
为了更好地重建高频细节,论文提出将SDF分解为基础函数(Base Function)和位移函数(Displacement Function)。基础函数负责捕捉低频的形状结构,而位移函数则用于添加高频细节。
具体来说,假设 $ f_b $ 是基础SDF,$ f_d $ 是位移SDF,那么最终的SDF可以表示为: \(f(x) = f_b(x - f_d(x) \cdot n)\) 其中,$ n $是基础SDF的梯度方向。通过这种方式,网络可以逐步学习从低频到高频的细节。
3. 自适应透明度函数(Adaptive Transparency Function)
在优化过程中,论文提出了一种自适应的透明度函数建模方法。这种方法会根据SDF的梯度动态调整参数 $ s $,使得优化过程更加关注表面附近的区域(这些区域的SDF值变化较快)。具体公式如下: \(T(t) = \left(1 + e^{-s \cdot \exp\left(\sum_{i=1}^K \omega_i \|\nabla f_i\|^{-1}\right) f(r(t))}\right)^{-1}\) 其中,$ \omega_i $是归一化的权重,$ K $是采样点数量。
实验结果
论文在多个数据集上验证了HF-NeuS的效果,包括DTU数据集、NeRF-Synthetic数据集和BlendedMVS数据集。这些数据集包含了多种具有高频细节的场景,如Lego模型、机器人模型等。
量化结果
在DTU数据集上,HF-NeuS的平均Chamfer距离为0.77,显著优于NeuS(0.87)和VolSDF(0.86)。在NeRF-Synthetic数据集上,HF-NeuS的平均Chamfer距离为0.38,同样优于其他方法。这些结果表明,HF-NeuS在重建高频细节方面具有显著优势。
可视化结果
论文还展示了重建的可视化结果。例如,在Lego模型中,HF-NeuS能够清晰地重建出每个积木块的细节,甚至包括一些其他方法未能重建的小孔。在机器人模型中,HF-NeuS能够更准确地重建出面部轮廓和尖角。
局限性
尽管HF-NeuS在高频细节重建方面取得了显著进展,但论文也指出了其局限性:
- 在某些复杂场景中,如船的绳网结构,HF-NeuS可能会出现过拟合现象。
- 对于光照变化较大或纹理不明显的场景,HF-NeuS的重建效果可能不如预期。
- 引入隐式位移场(IDF)会增加计算开销。
总结
HF-NeuS通过改进透明度建模、引入隐式位移场和自适应优化策略,显著提升了神经表面重建的质量,尤其是在高频细节的重建上。这种方法为多视角3D重建领域带来了新的突破,未来可以进一步探索在不同光照条件下的重建效果,或者将其应用于更复杂的场景。
3. 方法
作为输入,我们考虑一组$N$张图像$I={I_1, I_2, \dots, I_N}$及其对应的内参和外参相机参数$\Pi={\pi_1, \pi_2, \dots, \pi_N}$。HF-NeuS旨在将3D表面$S$重建为隐式函数的表示。具体来说,我们将表面编码为符号距离场(SDF)。我们将在以下三个部分详细解释我们的方法:
- 首先,我们展示如何将符号距离函数嵌入到体积渲染的公式中,并讨论如何建模距离与透明度之间的关系。
- 然后,我们提出使用一个额外的位移符号距离函数来为基符号距离函数添加高频细节。
- 最后,我们观察到将符号距离映射到透明度的函数由一个参数$s$控制,该参数决定了函数的斜率。我们提出一种方案,根据距离场的梯度范数以空间变化的方式设置这个参数$s$,而不是在单次训练迭代中保持其在整个体积中的恒定。
3.1 将透明度建模为变换后的SDF
我们首先回顾体积渲染的积分公式,并推导透明度与权重函数(密度与透明度的乘积)之间的关系。基于这一分析,我们讨论适合将符号距离映射到透明度的函数的标准,并提出一类满足理论要求的函数。
给定一条射线$r(t)=o+td$,体积渲染方程用于计算对应于射线$r$的像素的辐射度$C$。体积渲染方程是沿射线的积分,涉及体积中每个点的以下量:体积密度$\sigma$和(方向性)颜色$c$。此外,体积具有紧凑的支持,并且体积的边界由$t_n$和$t_f$编码。
\[C(r) = \int_{t_n}^{t_f} T(t) \sigma(r(t)) c(r(t), d) dt \quad (1)\]透明度$T(t)$由体积密度推导而来,如下所示。函数$T(t)$表示从$t_n$到$t$沿射线的累积透过率:
\[T(t) = \exp\left(-\int_{t_n}^{t} \sigma(r(s)) ds\right), \quad (2)\]$T(t)$是一个单调递减函数,起始值为$T(t_n)=1$。乘积$T(t)\sigma(r(t))$可以被视为体积渲染方程中的权重函数$w(t)$,如公式(1)所示。
为了引入符号距离函数$f$,我们需要定义一个函数$\Psi$,将符号距离函数变换为可用于渲染方程中密度相关项的函数。一种方法是直接建模密度函数$\sigma(r(t))=\Psi(f(r(t)))$,如VolSDF所提出的。采用这种方法,需要一种采样方法,以满足采样误差小于误差阈值的条件,通过逐渐减小尺度参数来实现。另一种方法是建模权重函数$w(t)=\Psi(f(r(t)))$,如NeuS中提出的。NeuS论文通过复杂的推导得到了密度函数$\sigma$的表达式。
我们通过关注透明度而不是权重函数,重新思考这个问题,并简化推导过程,如下所示:
\[\frac{dT(t)}{dt} = -T(t)\sigma(r(t)) \quad (3)\]一个有趣的观察是,透明度函数$T’(t)$的导数是权重函数的负值。权重函数具有在表面上有最大值的特性。我们对权重函数求导并将其设为0以找到极值(最大值),如下所示:
\[\frac{d(T(t)\sigma(r(t)))}{dt} = -\frac{d^2(T(t))}{dt^2} = -\frac{dT'(t)}{dt} = 0 \quad (4)\]假设平面表面和单条射线-平面交点,我们可以看到权重函数$w(t)$的极值点$t_s$也将是透明度函数$T’(t)$的导数的极值点。点$t_s$被期望是射线与表面的交点。因此,我们考虑直接定义透明度函数为$T(t)=\Psi(f(r(t)))$。如果透明度函数被设计为使其导数$T’(t)$在表面上达到最小值,则权重函数将在表面上有最大值。因此,可以在满足其导数在表面上有最小值的条件下直接建模透明度函数。这比NeuS中提出的建模权重函数$w(t)$的概念更简单。我们计算$\Psi(f(r(t)))$的导数,如下所示:
\[\frac{d(\Psi(f(r(t))))}{dt} = \Psi'(f(r(t))) \frac{df}{dr} \frac{dr}{dt} = \Psi'(f(r(t))) \nabla f(r(t)) \cdot d \quad (5)\]其中,$\nabla f(r(t)) \cdot d$是表面法线与射线方向的乘积,在平面表面和单条射线-平面交点的情况下是一个常数。符号距离函数在表面上为零。因此,$\Psi’$在$f=0$处有极值。这也意味着$\Psi$在形状表面上有最陡的斜率。另一方面,符号距离函数在物体外部为正,在进入物体内部时为负。我们通常假设$t=t_n$在外部,因此符号距离从正开始,并沿射线衰减为负值,这是一个单调递减函数。根据透明度$T(t)=\Psi(f(r(t)))$的特性,透明度在$t=t_n$处从1开始,并在物体内部单调递减至0。这种反向性质导致$\Psi$函数是从0到1的单调递增函数。因此,我们为$\Psi$设计了以下标准:$\Psi$应是从0到1的单调递增函数,并且在0处有最陡的斜率。
一个直观的想法是使用sigmoid函数,并将函数归一化为在区间[0, 1]内输出。我们简单地使用NeuS中提出的逻辑sigmoid函数进行公平比较。然而,我们的想法更一般,可以使用其他sigmoid函数。我们设计的透明度函数如下:
\[T(t) = \Psi_s(f(r(t))) = \frac{1}{1 + e^{-s f(r(t))}} \quad (6)\]其中,$\Psi_s$是带有参数$s$控制函数斜率的逻辑sigmoid函数。注意,参数$s$也是函数$\Psi’_s$的标准差。我们将在稍后讨论自适应版本的框架时使用这一事实。
给定可微分的透明度函数$T(t)$,可以很容易地按照公式(3)计算体积密度$\sigma$:
\[\sigma(r(t)) = -\frac{T'(t)}{T(t)} \quad (7)\]对于离散化,我们将公式(5)和公式(6)代入公式(7),并利用逻辑sigmoid函数的导数的性质$\Psi’_s = s \Psi_s (1 - \Psi_s)$。我们可以得到离散化计算的$\sigma$公式:
\[\sigma(r(t_i)) = s (\Psi_s(f(r(t_i))) - 1) \nabla f(r(t_i)) \cdot d \quad (8)\]然后,可以使用$\alpha$-合成近似体积渲染积分,其中$\alpha_i = 1 - \exp(-\sigma_i (t_{i+1} - t_i))$。对于多次表面交点,我们遵循NeuS中的相同策略,其中$\alpha_i = \text{clamp}(\alpha_i, 0, 1)$。与NeuS相比,我们得到了离散化计算的更简单的$\sigma$公式,减少了NeuS中由于除法引起的数值问题。此外,我们的方法不需要涉及两个不同的采样点,即截断点和中点,这使得满足无偏权重函数更容易。由于不需要为这两组不同的点集分别计算SDF和颜色,因此与NeuS相比,颜色和几何形状更加一致。与VolSDF相比,由于透明度函数是显式的,我们的方法可以使用逆分布采样,通过逆CDF满足近似质量。因此,不需要VolSDF中复杂的采样方案。视觉比较如图3所示。
3.2 无3D监督的隐式位移场
为了实现多尺度拟合框架,我们提出将符号距离函数建模为基础距离函数和位移函数的组合。隐式位移函数是额外的隐式函数。这样设计的原因是单个隐式函数难以同时学习低频和高频信息。隐式位移函数可以补充基础隐式函数,使其更容易学习高频信息。
与从点云学习隐式函数的任务相比,从多视角图像重建3D形状更难以学习高频内容。我们提出使用神经网络在多个尺度上学习频率,并以从粗到细的方式逐步增加频率内容。
假设$f$是表示我们想要得到的表面的组合隐式函数。函数$f_b$是表示基础表面的基础隐式函数。按照,位移隐式函数$f_d’$用于将基础表面上的点$x_b$沿法线$n_b$映射到表面点$x$,反之亦然$f_d$用于将表面上的点$x$沿法线$n_b$映射到基础表面上的点$x_b$,因此$f_d’(x_b) = f_d(x)$。由于隐式函数的性质,两个函数之间的关系可以表示如下:
\[f_b(x_b) = f(x_b + f_d'(x_b) n_b) = 0 \quad (9)\]其中,$x_b = \frac{\nabla f_b(x_b)}{|\nabla f_b(x_b)|}$是基础表面上点$x_b$的法线。为了计算组合隐式函数的表达式,我们将公式$x_b = x - f_d’(x_b) n_b$代入公式(9),得到组合隐式函数的表达式:
\[f(x) = f_b(x - f_d(x) n_b) \quad (10)\]因此,我们可以使用基础隐式函数和位移隐式函数来表示组合隐式函数。然而,出现了两个挑战。首先,公式(10)只有在点$x$位于表面上时才成立。其次,当只知道位置$x$时,很难估计点$x_b$处的法线。我们依赖于两个假设来解决这个问题。一个假设是这种变形可以应用于所有等值面,即$f_b(x_b) = f(x_b + f_d’(x_b) n_b) = c$。这样,该方程被假设为对体积中的所有点都有效,而不仅仅是表面上的点。另一个假设是$x_b$和$x$不会相距太远,因此可以用点$x$处的法线$n$替换$n_b$,在公式(10)中。我们通过位移约束$4 \Psi’_s(f_b)$控制隐式位移函数的幅度。
为了精确控制频率,我们分别使用位置编码对基础隐式函数和位移隐式函数进行编码。我们想指出与的一些不同之处。我们使用位置编码而不是Siren,以便可以通过从粗到细的策略显式控制频率,而不是简单地使用两个具有不同频率级别的Siren网络。在没有3D监督的情况下,这很有用。更多细节请参阅补充材料。位置编码将输入位置$x$分解为多个选定的频率带:
\[\gamma(x) = [\gamma_0(x), \gamma_1(x), \dots, \gamma_{L-1}(x)] \quad (11)\]其中,每个分量由不同频率的正弦和余弦函数组成:
\[\gamma_j(x) = \left[\sin\left(2^j \pi x\right), \cos\left(2^j \pi x\right)\right] \quad (12)\]直接学习高频位置编码会使网络容易受到噪声的影响,因为错误学习的高频会阻碍低频的学习。如果提供3D监督,这个问题不太明显,然而,图像的高频信息很容易以噪声的形式引入表面生成中。我们使用Park等人提出的从粗到细的策略来逐步增加位置编码的频率:
\[\gamma_j(x, \alpha) = \omega_j(\alpha) \gamma_j(x) = \left(1 - \cos(\text{clamp}(\alpha^{L-j}, 0, 1) \pi)\right) \gamma_j(x) \quad (13)\]其中,$\alpha \in [0, 1]$是控制涉及的频率信息的参数。在每次迭代中,$\alpha$增加$\frac{1}{n_{\max}}$,直到达到1,其中$n_{\max}$是最大迭代次数。
我们使用两种位置编码$\gamma(x, \alpha_b)$和$\gamma(x, \alpha_d)$,具有不同的参数$\alpha_b$和$\alpha_d$。为了简单起见,我们设置$\alpha_b = 0.5 \alpha_d$,并只控制$\alpha_d$。我们还使用两个MLP函数$MLP_b$和$MLP_d$来拟合基础和位移函数:
\[f(x) = MLP_b(\gamma(x, \alpha_b) - 4 \Psi'_s(f_b) MLP_d(\gamma(x, \alpha_d)) n) \quad (14)\]其中,$n = \frac{\nabla f_b(x)}{|\nabla f_b(x)|}$可以通过$MLP_b$的梯度计算,$\Psi’_s(f_b) = \Psi’_s(MLP_b(\gamma(x, \alpha_b)))$。位移约束的$s$在训练期间应该被限制。我们将在补充材料中展示如何控制自适应$s$。
我们将这个隐式函数代入公式(6)以计算透明度,从而可以通过体积渲染方程计算图像的辐射度$\hat{C}_s$。
为了训练网络,我们使用损失函数$L = L_{\text{rad}} + L_{\text{reg}}$,包括辐射度损失和符号距离函数的Eikonal正则化损失。对于正则化损失,我们约束基础隐式函数和详细隐式函数:
\[L = \frac{1}{M} \sum_{s} \|\hat{C}_s - C_s\|_1 + \frac{1}{N} \sum_{k} \left((\|\nabla f_b(x_k)\|_2 - 1)^2 + (\|\nabla f(x_k)\|_2 - 1)^2\right) \quad (15)\]3.3 建模自适应透明度函数
在前面的小节中,透明度函数被参数化为由尺度$s$控制的sigmoid函数。这个参数控制sigmoid函数的斜率,也是其导数的标准差。我们也可以这样说,它控制函数的平滑度。当$s$较大时,随着位置远离表面,sigmoid函数的值会急剧下降。相反,当$s$较小时,值会平滑下降。然而,每个迭代中选择一个单一的参数$s$会在体积的所有空间位置给出相同的行为。
由于需要重建两个符号距离函数,尤其是在叠加高频后,很容易破坏Eikonal约束,即在某些位置使SDF的梯度范数偏离1。即使有正则化损失,也无法避免这个问题。
我们提出使用符号距离场的梯度范数以空间变化的方式加权参数$s$,当沿射线方向的梯度范数大于1时增加$s$。其直觉是,梯度范数较大的隐式函数发生更剧烈的变化,这表明这是一个需要改进的区域。在这些区域中增大$s$,通过放大其误差使距离函数更加精确,特别是在表面附近。为了自适应地修改尺度$s$,我们提出以下公式:
\[T(t) = \left(1 + e^{-s \exp\left(\sum_{i=1}^{K} \omega_i \|\nabla f_i\|^{-1}\right) f(r(t))}\right)^{-1} \quad (16)\]其中,$\nabla f$是符号距离函数的梯度,$K$是采样点的数量,$\omega_i$是归一化的$\Psi’s(f_i)$作为权重,且$\sum{i=1}^{K} \omega_i = 1$。
虽然这种方法可以用于控制透明度函数,但它也可以用于标准NeRF中提出的分层采样阶段。通过局部增大$s$,会在符号距离值变化更快速的表面附近生成更多样本。这种机制也有助于优化过程专注于体积中的这些区域。
评论