NeuS는 surface reconstruction을 Neural network로 수행하는, implicit representation 모델입니다. NeRF가 volume density로 렌더링하기 때문에, surface recon에서는 약한 모습을 보입니다. 렌더링 방정식에 SDF를 결합하여 scene reconstruction에서 3D geometry 정보를 잘 담아내었습니다.
Preliminary
Surface rendering, Volume rendering 한계

1️⃣ NeuS 이전 연구였던 IDR에선 edge에서나, 울퉁불퉁한 depth 변화에서 surface recon을 제대로 수행하지 못하는 모습을 보입니다.
2️⃣ NeRF는 volume rendering으로 ray에 존재하는 여러 points를 샘플링하여, 각 지점의 color에 대한 α-composition을 수행합니다. 이때 위의 Fig를 보면, near surface(노랑)에 대해서는 일관적이지 않은 색들을 가지고, far surface에 대해서만 정확한 recon을 수행하는 것을 확인할 수 있습니다.
SDF

SDF(Signed Distance Field)는 각 포인트에서 주어진 물체의 표면까지의 최단거리를 표현한 필드입니다. 그림 (c)에서는 표면을 0으로, inside(object)는 음의 값으로, outside는 양의 값을 갖습니다.
Eikonal equation
f(x)={d(x,∂Ω)−d(x,∂Ω)if x∈Ωif x∈Ωc
SDF는 위와 같이 정의됩니다. 이때 d(x,∂Ω)는 boundary ∂Ω와의 distance를 표현한 식입니다. 이때, Euclidean space에서 SDF의 gradient는 eikonal equation ∣∣∇fSDF∣∣=1을 만족합니다.
Methods
Rendering Procedure
Scene representation
S={x∈R3∣f(x)=0}
- S: surface
- x: spatial position (input)
surface에서 SDF인 f(x)가 0의 값을 갖도록 합니다.

ϕs(x)=se−sx/(1+e−sx)2
- ϕs(x): logistic density distribution
S-density(pdf)를 logistic 밀도 분포로 정의합니다. 우리가 아는 center가 0에 위치한 종 모양의 unimodality라고 언급합니다. 또한, surface 근처일 수록 높은 값을 갖게 됩니다.
S-density는 Sigmoid function의 deriavative와 동일한 값을 가집니다.
ϕs(x)의 std는 1/s로, trainable parameter입니다. 학습이 수렴하면 해당 값이 0에 가깝게 됩니다.
Rendering
C(o,v)=∫0∞w(t)c(p(t),v)dt
- p(t)=o+tv: ray from pixel
- o: camera center
- v: viewing direction
위는 NeRF에서도 사용하는 렌더링 방정식입니다. pixel에 대한 output color와 weight와의 가중치 합으로 구해집니다. 이때 weight function을 정의하는 데에 필요 조건이 존재합니다.
Requirements on weight function
(1) Unbiased
camera ray p(t)에 대해 weight function w(t)는 surface 교차 point(f(p(t∗))=0)에서 locally 최댓값을 가져야 합니다.
(2) Occlusion-aware
depth value t0, t1에 대해 f(t0)=f(t1),w(t0)>0,w(t1)>0과 t0<t1일 때 w(t0)>w(t1)인 점이 있어야 한다는 조건을 만족해야 합니다.
즉, 두 지점이 같은 SDF 값을 가지면 view point에 가까운 포인트가 output color에 더 많은 영향을 주어야 합니다.
Naive solution (before, NeRF)
w(t)=T(t)σ(t)
- T=exp(−∫0tσ(u)du)
기존에는 volume density와 Transmittance 축적 값으로 weight function을 사용했습니다. (2) occlusion-aware 조건은 만족하지만, surface point에 도달하기 전에 local maximum을 갖기 때문에 (1) unbiased 조건을 만족하지 못합니다.
NeuS solution (after, NeuS)
w(t)=∫0∞ϕs(f(p(u)))duϕs(f(p(t)))
w(t)=T(t)ρ(t)
- T=exp(−∫0tρ(u)du)
SDF를 first-order 근사하여 (1), (2) 조건을 모두 만족하는 weight function을 디자인했습니다. volume density 대신, opaque density function ρ(t)를 사용하였습니다.
opaque density 유도
1️⃣ single plane instersection의 경우에서, SDF는 f(p(t))=−∣cos(θ)∣⋅(t−t∗)로 정의됩니다. surface인 f(p(t∗))에서는 0의 값을 가집니다. 표면이 plane으로 가정되어, ∣cos(θ)∣는 상수 값을 가집니다.
- θ: view dir과 surface normal 사이의 각도
w(t)=t∗→∞lim∫0∞ϕs(f(p(u)))duϕs(f(p(t)))=t∗→∞lim∫0∞ϕs(−∣cos(θ)∣(u−t∗))duϕs(f(p(t)))=t∗→∞lim∫−t∗∞ϕs(−∣cos(θ)∣u∗)du∗ϕs(f(p(t)))=t∗→∞lim∣cos(θ)∣−1∫−∣cos(θ)∣t∗∞ϕs(u^)du^ϕs(f(p(t)))=∣cos(θ)∣ϕs(f(p(t)))
2️⃣ 앞에서 정의한(NeuS solution) weight function으로 수식을 정리하면 다음과 같습니다. SDF를 수식에 대입 후 변수 정리를 하다보면, 적분에서 bound가 +무한대와 -무한대로 향하므로, PDF의 넓이 값의 극한인 1로 수렴합니다. 해당 적분 식이 사라지면서, ∣cos(θ)∣ϕs(f(p(t)))이 유도됩니다.
3️⃣ 이때 w(t)=T(t)ρ(t)를 이용하여 T(t)ρ(t)=∣cos(θ)∣ϕs(f(p(t)))로 둘 수 있고, T=exp(−∫0tρ(u)du)를 이용하여 T(t)ρ(t)=p(t)exp(−∫0tρ(t)dt)=−dtdT(t)로 정리할 수 있습니다. (chain rule을 역으로 이용한 것입니다.)
4️⃣ 마지막으로 ∣cos(θ)∣ϕs(f(p(t)))=−dtdΦs(f(p(t)))인 점을 활용하여 dtdT(t)=dtdΦs(f(p(t)))→T(t)=Φs(f(p(t)))로 정리할 수 있습니다.
opaque density 정의
∫0tρ(u)du→ρ(t)=−lnΦs(f(p(t)))=Φs(f(p(t)))−dtdΦs(f(p(t)))
T에 대해 opaque를 적분 식으로 표현하고, 해당 방정식의 양변을 미분하여 opaque를 정의하였습니다.
multiple 교차평면에서 −dtdΦs(f(p(t))) 부분이 음수가 되므로, 최소 값을 0으로 clip하였습니다. (general case)
Discretization
ray에서 discrete하게 샘플링해야 하므로, 렌더링 수식은 아래와 같이 정의됩니다.
C^=i=1∑nTiαici
이때 α는 1−exp(−∫titi+1p(t)dt)로 정의됩니다. T=∏j=1i−1(1−αj) 는 NeRF와 동일하게 정의됩니다.
Visualization

- 위의 ray를 따라 두 개의 object가 위치합니다.
- ray와 각 object의 위치 관계가 중요합니다.
- SDF를 표현하면, surface는 0의 값을, inside와 outside는 다른 부호 값을 갖게 됩니다.
- weight function은 표면에서 가장 큰 값을 가집니다.(local maximum)
- 이때, ray와 가까운 object의 표면은 거리가 먼 ray보다 더 큰 value를 갖게 됩니다.
Training
L=Lcolor+αLreg+βLmask
최종 loss는 위와 같습니다. 각 term별로 살펴보겠습니다.
Color loss
Lcolor=m1k∑R(C^k,Ck)
IDR과 동일하게, outlier에 강하고 training이 안정적인 L1 loss를 사용했습니다.
Reg loss
Lreg=nm1k,i∑(∣∣∇f(p^k,i)∣∣2−1)2
SDF를 규제하기 위해서 Eikonal term을 사용했습니다. eikonal equation ∣∣∇fSDF∣∣=1을 통해 eikonal loss인 Lreg=nm1k,i∑(∣∣∇f(p^k,i)∣∣2−1)2가 유도됩니다.
Mask loss (optional)
Lmask=BCE(Mk,O^k)
mask가 있는 경우에, O^k=i=1∑nTk,iαk,i와 mask 간의 BCE로 최적화하였습니다.
Hierarchical sampling
NeuS에서는 coarse와 fine network를 동시에 최적화하기 때문에, 하나의 network만 사용합니다. coarse sampling에서의 확률이 S-density ϕs(f(x))에서 fixed std로 계산되고, fine samplingd에서의 확률이 learned std s에서 계산되기 때문입니다.
Results
Qualitative

- 마스크가 있다는 가정으로 실험한 결과입니다.
- NeRF에서 추출된 mesh들에는 노이즈가 많이 발생합니다.
- volume density는 3D geometry 정보를 충분하게 포함하지 못합니다.
- NeuS가 NeuS 이전 연구들 대비 좋은 퀄리티를 보였습니다.
Quantitative

- 대부분에서 SOTA를 기록합니다. (논문 시점)
Reference
[1] NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction, Peng Wang, https://arxiv.org/pdf/2106.10689
[2] logistic distribution, https://en.wikipedia.org/wiki/Logistic_distribution
[3] Signed Distance Fields, https://prideout.net/blog/distance_fields/
[4] SDF (wikipedia), https://en.wikipedia.org/wiki/Signed_distance_function