主页:https://lingjie0206.github.io/papers/NeuS/
论文:https://arxiv.org/abs/2106.10689
代码:https://github.com/Totoro97/NeuS
We present a novel neural surface reconstruction method, called NeuS, for reconstructing objects and scenes with high fidelity from 2D image inputs. Existing neural surface reconstruction approaches, such as DVR [Niemeyer et al., 2020] and IDR [Yariv et al., 2020], require foreground mask as supervision, easily get trapped in local minima, and therefore struggle with the reconstruction of objects with severe self-occlusion or thin structures. Meanwhile, recent neural methods for novel view synthesis, such as NeRF [Mildenhall et al., 2020] and its variants, use volume rendering to produce a neural scene representation with robustness of optimization, even for highly complex objects. However, extracting high-quality surfaces from this learned implicit representation is difficult because there are not sufficient surface constraints in the representation. In NeuS, we propose to represent a surface as the zero-level set of a signed distance function (SDF) and develop a new volume rendering method to train a neural SDF representation. We observe that the conventional volume rendering method causes inherent geometric errors (i.e. bias) for surface reconstruction, and therefore propose a new formulation that is free of bias in the first order of approximation, thus leading to more accurate surface reconstruction even without the mask supervision. Experiments on the DTU dataset and the BlendedMVS dataset show that NeuS outperforms the state-of-the-arts in high-quality surface reconstruction, especially for objects and scenes with complex structures and self-occlusion.
译文:
我们提出了一种新颖的神经表面重建方法,称为NeuS,用于从2D图像输入以高保真度重建对象和场景。现有的神经表面重建方法,例如DVR [Niemeyer等人,2020] 和IDR [Yariv等人,2020],需要前景掩模作为监督,容易被困在局部最小值中,并且因此与具有严重自遮挡或薄结构的对象的重建作斗争。同时,用于新颖视图合成的最近的神经方法,例如NeRF [Mildenhall等人,2020] 及其变体,使用体积渲染来产生具有优化鲁棒性的神经场景表示,即使对于高度复杂的对象也是如此。但是,很难从这种学习的隐式表示中提取高质量的曲面,因为表示中没有足够的曲面约束。在NeuS中,我们建议将曲面表示为有符号距离函数 (SDF) 的零级集,并开发一种新的体绘制方法来训练神经SDF表示。我们观察到传统的体绘制方法会导致表面重建的固有几何误差 (即偏差),因此提出了一种新的公式,该公式在一阶近似中没有偏差,因此即使没有掩模监督,也可以实现更准确的表面重建。在DTU数据集和BlendedMVS数据集上的实验表明,NeuS在高质量的表面重建方面的性能优于现有技术,特别是对于具有复杂结构和自遮挡的对象和场景。
图1 : ( a) 表面渲染和体积渲染的图示。(b) 竹花机的玩具实例,其中花机顶部有咬合物。与最先进的方法相比,我们的方法可以处理闭塞并获得更好的重建质量。
给定一组3D对象的摆姿势图像 { I k } \{I_k\} {Ik},我们的目标是重建其表面 S S S。表面由神经隐式SDF的零级集表示。为了学习神经网络的权重,我们开发了一种新颖的体绘制方法,用于从隐式SDF渲染图像,并最小化渲染图像与输入图像之间的差异。这种体绘制方法可确保NeuS中的稳健优化,以重建复杂结构的对象。
要重建的对象的场景由两个函数表示:
这两个函数都由多层感知器 (MLP) 编码。对象物体的曲面 S S S由其SDF的零级集表示,即,
S = { x ∈ R 3 ∣ f ( x ) = 0 } . ( 1 ) S = \{x ∈ \mathbb{R^3} | f(x) = 0\} . (1) S={x∈R3∣f(x)=0}.(1)
为了应用体绘制方法来训练SDF网络,首先引入概率密度函数 ϕ s ( f ( x ) ) \phi_s (f(x)) ϕs(f(x)),称为 S − d e n s i t y S-density S−density,其中 f ( x ) , x ∈ R 3 f(x),\mathbb{x ∈ R^3} f(x),x∈R3是有符号距离3函数, ϕ s ( x ) = s e − s x / ( 1 + e − s x ) 2 \phi_s (x) = se^{− sx}/(1+e^{− sx})^2 ϕs(x)=se−sx/(1+e−sx)2,通常称为逻辑密度分布,是s型函数 ϕ s ( x ) = ( 1 + e − s x ) − 1 \phi_s (x) = (1+e^{− sx})^{-1} ϕs(x)=(1+e−sx)−1的导数,即 ϕ s ( x ) = Φ s ( x ) \phi_s(x) = \varPhi_s(x) ϕs(x)=Φs(x)。原则上, ϕ s ( x ) \phi_s (x) ϕs(x)可以是以0为中心的任何单峰 (即钟形) 密度分布; 这里我们选择逻辑密度分布是为了计算方便。
NeuS的主要思想是,借助S密度场 ϕ x ( f ( x ) ) \phi_x(f(x)) ϕx(f(x)),使用体绘制来训练仅使用2D输入图像作为监督的SDF网络。在基于此监督成功最小化损失函数后,网络编码的SDF的零级集有望代表精确重建的表面 S S S,其引起的 S − d e n s i t y ϕ s ( f ( x ) ) S-density\ \ \phi_s (f(x)) S−density ϕs(f(x))假定在表面附近的值很高。
为了了解神经SDF和RGB的参数,文章使用一种体绘制方案来根据建议的SDF表示渲染图像。给定一个像素,定义从该像素发出的ray: { p ( t ) = o + t v ∣ t ≥ 0 } \{p(t) = o + tv | t ≥ 0\} {p(t)=o+tv∣t≥0},o:摄像机的中心,v:ray的单位向量。我们沿着光线积累颜色:
C ( o , v ) = ∫ 0 + ∞ w ( t ) ⋅ c ( p ( t ) , v ) ⋅ d t , ( 2 ) C(o,v)=\int_{0}^{+\infty}{w(t)·c(p(t),v)·dt},(2) C(o,v)=∫0+∞w(t)⋅c(p(t),v)⋅dt,(2)
其中 C ( o , v ) C(o,v) C(o,v)是该像素的输出颜色, w ( t ) w(t) w(t) 是点 p ( t ) p(t) p(t)的权重, c ( p ( t ) , v ) c(p(t),v) c(p(t),v) 是点 p p p沿观看方向v的颜色。
无偏权重函数 w ( t ) w(t) w(t) 保证了相机光线与SDF的零级集的交集对像素颜色的贡献最大。遮挡感知属性可确保当光线顺序通过多个表面时,渲染过程将正确使用最靠近相机的表面的颜色来计算输出颜色。接下来,我们将首先介绍一种直接使用体绘制标准流水线定义权重函数w(t) 的单纯的方法,并在介绍我们新颖的 w ( t ) w(t) w(t) 构造之前解释为什么不适合重建。
为了使权重函数遮挡感知,自然解决方案基于标准体积渲染公式 ,该公式通过以下方式定义了权重函数
w ( t ) = T ( t ) σ ( t ) , ( 3 ) w(t) = T(t)\sigma(t),(3) w(t)=T(t)σ(t),(3)
其中 σ ( t ) \sigma(t) σ(t)是经典体绘制中的所谓体积密度, T ( t ) = e x p ( − ∫ 0 t σ ( u ) d u ) T(t) = exp(− \int_0^t \sigma(u)du) T(t)=exp(−∫0tσ(u)du) 这里表示沿射线的累积透射率。采用标准体积密度制剂 [29], σ ( t ) \sigma(t) σ(t)被设置为等于 S − d e n s i t y S-density S−density ” 值,即 σ ( t ) = ϕ s ( f ( p ( t ) ) ) \sigma(t) = \phi_s(f(p(t))) σ(t)=ϕs(f(p(t)))和函数w(t) 的计算公式.3.尽管所得的权重函数是遮挡感知的,但由于它在重建表面中引入了固有误差,因此存在偏差。
图2: 说明 (a) 朴素解的权重偏差,以及 (b) 在我们的解中定义的权重函数,该函数在SDF的一阶近似中是无偏的。
提出一种构造无偏权重函数的简单方法,该方法直接使用归一化的 S − d e n s i t y S-density S−density作为权重
w ( t ) = ϕ s ( f ( p ( t ) ) ) ∫ 0 + ∞ ϕ s ( f ( p ( u ) ) ) d u w(t) = \frac{\phi_s(f(p(t)))}{\int_0^{+\infty}\phi_s(f(p(u)))du} w(t)=∫0+∞ϕs(f(p(u)))duϕs(f(p(t)))
权重函数的这种构造是无偏的,但不是遮挡感知的。
为此,现在我们将基于上述直接构造,设计在SDF的一阶近似中既具有遮挡感知又无偏的权重函数w(t)。为了确保权重函数w(t) 的遮挡感知属性,我们仍将遵循体积渲染的基本框架作为Eqn。3.但是,与上述朴素解决方案中的常规处理不同,我们以新的方式从S密度定义了函数w(t)。我们首先定义一个不透明的密度函数 ρ(t),它是标准体绘制中体积密度 σ 的对应物。然后我们通过以下公式计算新的权重函数w(t)
w ( t ) = T ( t ) p ( t ) , w h e r r e T ( t ) = e x p ( − ∫ 0 t p ( u ) d u ) w(t) = T(t)p(t),wherre \ \ \ T(t) = exp(− \int_0^t p(u)du) w(t)=T(t)p(t),wherre T(t)=exp(−∫0tp(u)du)
根据几何关系, f ( p ( t ) ) = ∣ cos ( θ ) ∣ ⋅ ( t − t ∗ ) f(\mathbf p (t)) = |\cos (\theta)| \cdot\left(t-t^{*}\right) f(p(t))=∣cos(θ)∣⋅(t−t∗),其中 f ( p ( t ∗ ) ) = 0 f(\mathbf p (t^*))=0 f(p(t∗))=0是视角方向与物体表面法向量 n \mathbf n n 的夹角,这里可以看成常量。仍然使用上面的直接方法表示权重 w ( t ) w(t) w(t),有
w ( t ) = ϕ s ( f ( p ( t ) ) ) ∫ − ∞ + ∞ ϕ s ( f ( p ( u ) ) ) d u = ϕ s ( f ( p ( t ) ) ) ∫ − ∞ + ∞ ϕ s ( − ∣ cos ( θ ) ∣ ⋅ ( u − t ∗ ) ) d u = ϕ s ( f ( p ( t ) ) ) ∣ cos ( θ ) ∣ − 1 ∫ − ∞ + ∞ ϕ s ⋅ ( u − t ∗ ) d u = ∣ cos ( θ ) ∣ ϕ s ( f ( p ( t ) ) ) . w(t) = \frac{\phi_s(f(p(t)))}{\int_{-\infty}^{+\infty}\phi_s(f(p(u)))du}\\ =\frac{\phi_s(f(p(t)))}{\int_{-\infty}^{+\infty}\phi_s(-|\cos (\theta)|·(u-t^*))du}\\ = \frac{\phi_s(f(p(t)))}{|\cos (\theta)|^{-1}\int_{-\infty}^{+\infty}\phi_s·(u-t^*)du}\\ =|\cos (\theta)|\phi_s(f(p(t))). w(t)=∫−∞+∞ϕs(f(p(u)))duϕs(f(p(t)))=∫−∞+∞ϕs(−∣cos(θ)∣⋅(u−t∗))duϕs(f(p(t)))=∣cos(θ)∣−1∫−∞+∞ϕs⋅(u−t∗)duϕs(f(p(t)))=∣cos(θ)∣ϕs(f(p(t))).
体绘制框架内的权重函数由 w ( t ) = T ( t ) p ( t ) w(t) = T(t)p(t) w(t)=T(t)p(t) 给出,其中 T ( t ) = e x p ( − ∫ 0 t p ( u ) d u ) T(t) = exp(− \int_0^t p(u)du) T(t)=exp(−∫0tp(u)du)表示累积透射率。因此,要推导 p ( t ) p(t) p(t),我们有
T ( t ) p ( t ) = ∣ c o s ( θ ) ∣ ϕ x ( f ( p ( t ) ) ) . ( 7 ) T(t)p(t) = | cos(\theta)| \phi_x(f(\mathbf p (t))).(7) T(t)p(t)=∣cos(θ)∣ϕx(f(p(t))).(7)
由于 T ( t ) = e x p ( − ∫ 0 t p ( u ) d u ) T(t) = exp(− \int_0^t p(u)du) T(t)=exp(−∫0tp(u)du),很容易验证 T ( t ) p ( t ) = − d T d t ( t ) T(t)p(t) = − \frac{dT}{dt}(t) T(t)p(t)=−dtdT(t)。此外, ∣ cos ( θ ) ∣ ϕ s ( f ( p ( t ) ) ) = − d Φ s d t ( f ( p ( t ) ) ) |\cos (\theta)|\phi_s(f(p(t)))=− \frac{d\varPhi_s}{dt}(f(p(t))) ∣cos(θ)∣ϕs(f(p(t)))=−dtdΦs(f(p(t))).随之而来的 d T d t ( t ) = d Φ s d t ( f ( p ( t ) ) ) \frac{dT}{dt}(t)=\frac{d\varPhi_s}{dt}(f(p(t))) dtdT(t)=dtdΦs(f(p(t))),整合上式:
T ( t ) = Φ s ( f ( p ( t ) ) ) . ( 8 ) T(t)=\varPhi_s(f(p(t))).(8) T(t)=Φs(f(p(t))).(8)
取对数,然后区分两边:
∫ − ∞ t p ( u ) d u = − l n ( Φ s ( f ( p ( t ) ) ) ) ⇒ p ( t ) = − d Φ s d t ( f ( p ( t ) ) ) Φ s ( f ( p ( t ) ) ) . ( 9 ) \int_{-\infty}^tp(u)du = -ln(\varPhi_s(f(p(t))))\\ \Rightarrow p(t) = \frac{ −\frac{d\varPhi_s}{dt}(f(p(t)))}{\varPhi_s(f(p(t)))}.(9) ∫−∞tp(u)du=−ln(Φs(f(p(t))))⇒p(t)=Φs(f(p(t)))−dtdΦs(f(p(t))).(9)
上式是单个surface的情况,当光线在两个surface之间时会变成负,把它拓展到多surface的情况需要在这时将之设为0。
p ( t ) = m a x ( − d Φ s d t ( f ( p ( t ) ) ) Φ s ( f ( p ( t ) ) ) , 0 ) . ( 10 ) p(t) = max( \frac{ −\frac{d\varPhi_s}{dt}(f(p(t)))}{\varPhi_s(f(p(t)))},0).(10) p(t)=max(Φs(f(p(t)))−dtdΦs(f(p(t))),0).(10)
图3: 多表面相交情况下的重量分布图示
为了获得不透明度和权重函数的离散对应物,我们采用与NeRF [29] 中使用的近似方案,该方案对n个点进行采样 { p i = o + t i v ∣ i = 1 , . . . , n , t i < t i + 1 } \{pi = o + t_iv | i = 1,...,n,t_i
C ^ ( r ) = ∑ i = 1 N α i T i c i . ( 11 ) \hat{C}\left( r \right) =\sum_{i=1}^N{\alpha _iT_ic_i}.(11) C^(r)=i=1∑NαiTici.(11)
T i = ∏ j = 1 i − 1 ( 1 − α j ) T_i=\prod_{j=1}^{i-1}(1-\alpha_j) Ti=∏j=1i−1(1−αj)是离散的累积透射比, α = 1 − e x p ( − ∫ t i t i + 1 p ( t ) d t ) \alpha=1-exp(-\int_{t_i}^{t_{i+1}}p(t)dt) α=1−exp(−∫titi+1p(t)dt)是离散不透明度值;
α i = m a x ( Φ s ( f ( p ( t i ) ) ) − Φ s ( f ( p ( t t + 1 ) ) ) Φ s ( f ( p ( t ) ) ) , 0 ) . ( 13 ) \alpha_i = max(\frac{\varPhi_s(f(p(t_i)))-\varPhi_s(f(p(t_{t+1})))}{\varPhi_s(f(p(t)))},0).(13) αi=max(Φs(f(p(t)))Φs(f(p(ti)))−Φs(f(p(tt+1))),0).(13)
分为有mask和无mask两种情况。为了优化网络和标准差倒数s ss,随机采样一个batch的像素点和对应的光线 P = { C k , M k , o k , v k } P=\left\{C_{k}, M_{k}, \mathbf{o}{k}, \mathbf{v}{k}\right\} P={Ck,Mk,ok,vk}是像素点颜色, M k ∈ { 0 , 1 } M_k \in \{0,1\} Mk∈{0,1}指是否存在mask。batch大小设为m,一条光线上的采样点数设为n。
定义损失函数:
L = L c o l o r + λ L r e g + β L m a s k L=L_{color} +\lambda L_{reg} +\beta L_{mask} L=Lcolor+λLreg+βLmask
不同与NeRF同时优化 coarse 和 fine 网络,这里只维持一个网络,coarse阶段采样的概率是基于 S − d e n s i t y ϕ s ( f ( x ) ) S-density\ \phi_s(f(x)) S−density ϕs(f(x)) 和一个大的固定的标准差计算得到,而fine阶段采样的概率基于 ϕ s ( f ( x ) ) \phi_s(f(x)) ϕs(f(x))和学得的标准差。