아이공의 AI 공부 도전기

[논문 Summary] D-NeRF (2021 CVPR) "D-NeRF: Neural Radiance Fields for Dynamic Scenes"

 

     

 

논문 정보

Citation : 2024.01.07 일요일 기준 770회

저자

Albert Pumarola, Enric Corona, Gerard Pons-Moll, Francesc Moreno-Noguer

 

논문 링크

Official

https://openaccess.thecvf.com/content/CVPR2021/papers/Pumarola_D-NeRF_Neural_Radiance_Fields_for_Dynamic_Scenes_CVPR_2021_paper.pdf

 

Arxiv

https://arxiv.org/abs/2011.13961

 

공식 Github

https://github.com/albertpumarola/D-NeRF

 

https://www.albertpumarola.com/research/D-NeRF/index.html

 

Albert Pumarola - D-NeRF

Acknowledgments This work is supported in part by a Google Daydream Research award and by the Spanish government with the project HuMoUR TIN2017-90086-R, the ERA-Net Chistera project IPALM PCI2019-103386 and María de Maeztu Seal of Excellence MDM-2016-065

www.albertpumarola.com

 

결과 youtube

https://youtu.be/lSgzmgi2JPw?si=P8msBit1Ewio7VuP

 

 

논문 Summary

Abstract

 

NeRF의 빼어난 능력에도 불구하고 NeRF는 static scene(정적인 장면: 고정된 물체)에 대해서만 작동함.

D-NeRF를 통해 dynamic domain으로의 확장가능한 방법을 선보임.

특히 여기서 time이라는 추가적인 input을 system에 넣고 훈련 단계를 2 단계로 분리

1) scene을 canonical space로 encode

2) 특정 시간대 canonical representation을 deformed scene으로 mapping

 

두 mapping 모두 FCN(fully connected network) 사용

 

결론 : D-NeRF를 통해 camera view, time, object movement를 제어할 수 있는 novel image render가 가능함을 보임.

 

1. Introduction

sparse image로부터 사실적인 장면으로의 3D rendering함에 있어 NeRF는 기존 방식을 뛰어넘는 결과를 선보임.

그리고 이 하위 후속 연구들이 NeRF를 확장시켰지만 모든 방법들은 움직이는 물체가 없는 static scene으로 가정한다.

 

본 논문은 dynamic scene에서 적용가능한 첫 end-to-end neural rendering system이다.

4D view systhesis 접근법이 있긴하지만 3가지 차이가 있다.

1) 단일 카메라만 필요

2) 사전 계산된 3D reconstruction이 필요없음

3) 접근법이 end-to-end로 훈련

 

 

아이디어는 3D location, camera view뿐 아니라 time t를 포함하는 입력인 연속적인 6D function을 사용하는 것이다.

 

순진하게 t를 mapping하는 것 (x,y,z,t)은 만족스러운 결과를 가져오지 못한다.

Dynamic-NeRF (D-NeRF)의 핵심적인 아이디어는 2개의 모듈로 분해하여 학습하는 것이다.

 

첫 번째는 time t에 대한 scene의 각 point와  canonical scene configuration 사이의 spatial mapping $(x,y,z,t) \rightarrow (\triangle x, \triangle y, \triangle z)$ 을 학습하는 것이다.

 

두 번째는 주어진 tuple $(x + \triangle x, y + \triangle y, z + \triangle z, \theta, \phi)$ 가 주어졌을 때 방출되는 각 방향과 volume density 에서의 scene radiance를 regress(회귀)하는 것. 

 

모두 conv layer 없이 FCN 사용.

 

D-NeRF는 a canonical scene과 scene flow로 분해해서 학습하는 것이 camera view와 time을 모두 제어하면서 고품질의 이미지를 rendering할 수 있음을 보인다.

 

2. Related work

 

Neural implicit representation for 3D geometry

 

Novel view synthesis 

 

3. Problem Formulation

 

monocular camera를 통해 촬영된 a dynamic scene에 대한 a sparse set한 이미지들이 주어졌을 때, 저자들의 목표를 scene를 함축적으로 encode하고 임의의 시간에 대해서 novel view를 합성하는 deep learning 모델 구축을 목표로 한다.

 

직관적인 해결책은 다음과 같은 방법이다.

mapping $\mathcal{M} : (x,d,t) \rightarrow (c, \sigma)$ : 6D space → 4D space

여기서 $x = (x,y,z), d=(\theta, \phi), c=(r,g,b)$

 

그러나 mapping $\mathcal{M}$은 $\Psi_x, \Psi_t$로 나누는 방법이 더 일관되고 좋은 결과를 획득한다.

$ \Psi_x $ : scene → canonical configuration

$ \Psi_t $ : time t에 대한 scene과 canonical 간의 mapping

 

더 정확히 기술

$ \Psi_t : (x,t) \rightarrow \triangle x$ 

time t에 대해서 point x와 viewing direction d가 주어졌을 때 point 위치를 canonical configuration으로 변환

초기 t=0 canonical scene $ \Psi_t : (x,0) \rightarrow 0$ 

 

이렇게 함으로써 scene은 더 이상 time 간 독립적이지 않고 공통의 canonical space anchor에 대해 상호연결된다.

 

$ \Psi_x : (x+ \triangle x ,d) \rightarrow (x, \sigma)$ 

viewing direction d에서의 방출된 color와 volume density는 canonical configuration과 동일

4. Method

 

 

D-NeRF는 2가지 주요 NN 모듈로 구성됨.

첫번째 모듈 : Canonical Network

- $\Psi_x (x,d) \rightarrow (c, \sigma)$

- MLP로 훈련을 통해 색과 밀도 계산

 

두번째 모듈 : Deformation Network

- $\Psi_t (x,t) \rightarrow \triangle x$

- 또 다른 MLP을 통해 시간 t에서의 장면과 표준 구성 장면 사이 transformation을 정의하는 a deformation field 예측 (즉, 변화량 계산) 

 

4.1 Model Architecture  

Canonical Network (기존 NeRF와 동일)

 

(간단 요약 : 기존 NeRF 관점으로 모든 이미지에 대응하는 점들의 정보를 활용하여 장면을 재설정할 수 있는 방안이다. 이를 통해 색과 밀도를 도출함.)

 

Canonical network : $\Psi_x$

각 점의 3D coordinate가 주어졌을 때 256 차원의 feature vector에 encode.

이후 camera viewing direction d에 concat하고 FCN(MLP)에 넣어 canonical space에서의 color c와 volume density $\sigma$ 도출

 

Deformation Network

 

Deformation network : $\Psi_t$

특정 time에서의 장면과 canonical space에서의 장면 사이 deformation field를 추정하여 최적화

특정 시점 t에서의 3D point x를 통해 displacement(변위) $\triangle x$ 도출하여 canonical space $x + \triangle x $ 출력되도록 학습.

모든 실험에서 generality loss 없이 canonical scene을  time t=0에서의 장면이 되도록 설정. 

직접적으로 cooridnate나 angle 주는 것은 결과가 좋지 못하기 때문에 positional encoder 사용

$\gamma(p) =< (sin(2^l \pi p), cos (2^l \pi p) ) >^L_0$

 

x에 대해서는 L=10 / d와 t에 대해서는 L=4

 

4.2 Volume Rendering

 

 

기존 NeRF eq (1) : 위 식과 많은 대응을 보여준다.

심지어 stractified sampling strategy까지 동일.

 

차이점은 t라는 시점에 대한 부분.

 

아래 식은 위 식들의 numerical approximation equation 변화

 

4.3 Learning the Model

 

canonical과 deformation network의 parameter는 동시에 학습 진행됨.

Loss는 아래와 같음

 

 

 

5. Implementation Details

canonical network와 deformation network 모두 ReLU를 쓰는 간단한 MLP로 구성

canonical network는 마지막에 sigmoid

 

모든 실험에서 canonical configuration t=0일 대의 scene state 설정

 

 

수렴성 향상을 위해 낮은 쪽에서 높은 쪽으로의 time stamp를 따르도록 input image 정렬

 

400 $\times$ 400 이미지, 800k iteration, $N_s$의 batch size4096 ray, 각 ray마다 64 sample

Adam optim 5e-4, beta1=0.9, beta2=0.999, exponential decay 5e-5

 

a Nvidia GTX 1080 for 2 days

 

6. Experiments

6.1. Dissecting the Model

 

각 열은 RGB, Mesh, Depth, displacement field 시각화한 결과를 나타낸다.

특히 4열에 해당하는 부분은 displacement field 가 정확하게 추정됨을 가르키면서 색이 일관됨을 보인다.

 

shadow/shading관련

fig 5는 각기 다른 재질로 된 3개의 공에 대한 장면이다.

(plastic –green–, translucent glass –blue– and metal –red–).

 

canonical configuration을 잘 변형함에 따라 shading effect 역시 합성할 수 있음을 보임. 

 

6.2. Quantitative Comparison

 

 

NeRF (5D input: $(x,y,z,\theta, \phi)$)와 T-NeRF (6D input: $(x,y,z,\theta, \phi, t)$ + canonical configuration 없음.)와 비교를 진행한다.

 

MAE, PSNR, SSIM, LPIPS 평가 지표 사용

 

 

NeRF는 dynamic scene에 대한 모델이 불가능 (흐리게 수렴)

T-NeRF는 dynamic가 되지만, high frequency detail에 대해서는 어려움

 

6.3. Additional Results

 

 

 

Reference

 

도움이 되는 YouTube 1.

https://youtu.be/y-4vLEo7hns?si=3eq3Jf2UjFVgpmTy

 

 

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading