본문 바로가기

AI/Paper - Theory

[D-NeRF 논문 리뷰] - D-NeRF: Neural Radiance Fields for Dynamic Scenes

반응형

* 이 글은 D-NeRF에 대한 논문 리뷰이고, 핵심만 담아서 나중에 D-NeRF Code를 이해할 때 쉽게 접근할 수 있도록 정리한 글입니다.

* 코드와 함께 보시면 매우 매우 도움이 될 것이라고 생각이 들고, 코드 없이 읽으셔도 D-NeRF를 정복하실 수 있을 것입니다.

 

D-NeRF 논문: https://arxiv.org/abs/2011.13961

 

D-NeRF: Neural Radiance Fields for Dynamic Scenes

Neural rendering techniques combining machine learning with geometric reasoning have arisen as one of the most promising approaches for synthesizing novel views of a scene from a sparse set of images. Among these, stands out the Neural radiance fields (NeR

arxiv.org

D-NeRF kyujinpy: https://github.com/KyujinHan/NeRF_details_code_analysis

 

GitHub - KyujinHan/NeRF_details_code_analysis: NeRF code analysis

NeRF code analysis. Contribute to KyujinHan/NeRF_details_code_analysis development by creating an account on GitHub.

github.com

 

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

 

GitHub - albertpumarola/D-NeRF

Contribute to albertpumarola/D-NeRF development by creating an account on GitHub.

github.com

 


Contents

1. Simple Introduction

2. NeRF

3. Model network

    - Deformation network

    - Canonical network

4. Limitations


Simple Introduction

기존의 NeRF는 static dataset에 대해서 실험을 진행했다.

이때, dynaimc한 객체들, 움직이는 객체에 대해서 학습을 진행한다면 blur가 많이 생기는 단점이 있었다.

D-NeRF 결과

D-NeRF는 이러한 NeRF의 단점을 찾아서, t라는 frame 시간 변수를 함께 사용해서 기존의 5D input이 아닌 6D input으로 활용하여 모델 네트워크를 구성했다.

또한 NeRF와 다르게 새로운 network(Deformation network)를 추가하여서, 객체를 더욱 잘 표현할 수 있도록 하였다.  

 

이제 D-NeRF에 대해서 차근차근 알아보자!


Background Knowledge: NeRF

NeRF 논문리뷰: https://kyujinpy.tistory.com/16

 

NeRF: Representing Scenes asNeural Radiance Fields for View Synthesis - NeRF 논문 리뷰

* 이 글은 NeRF에 대한 논문 리뷰이지만, 핵심만 담아서 나중에 NeRF Code를 이해할 때 쉽게 접근할 수 있도록 정리한 글입니다. * 코드와 함께 보시면 매우 매우 도움이 될 것이라고 생각이 들고, 코

kyujinpy.tistory.com

 

내가 쓴 NeRF 논문 리뷰 글이다.

논문과 코드 기반으로, 논문만으로 이해하지 못하는 부분까지 매우 상세하게 적었기 때문에 D-NeRF를 공부하기 전에

반드시 NeRF를 공부하고 오자..!!

 

이 글에서는 NeRF의 개념을 알고 있다고 생각하고 논문리뷰를 진행할 생각입니다.


Model network

D-NeRF model framework

D-NeRF는 NeRF와 다르게 하나의 MLP model로 구성된게 아니라, 2개의 MLP network로 구성되어 있다.

바로 Deformation network와 Canonical network이다.

그리고 NeRF와 다르게 frame에 대한 시간 변수(t)도 함께 input으로 활용된다.

 

각각의 network를 자세히 알아보자!


1. Deformation network

D-NeRF visualization

Deformation network를 설명하기 전에, canonical space가 무엇인지 먼저 정의하고 가겠다.

Canonical space는 쉽게 말해서, representative pose를 가지는 frame(t=0)이라고 할 수 있다.

즉, 물체의 대표적인 모습을 보여주는 frame으로, 논문에서는 첫번째 프레임(t=0)으로 설정하였다.

 

Deformation network의 목적은 현재 들어온 임의의 시점 t에 대한 input frame이 representative pose(t=0)과 비교했을 때 좌표의 변화율이 어느정도인지 예측하는 것이다.

 

그래서 위에서 보는 모델 network 구조처럼, Deformation network는 input으로 (x,y,z,t)를 넣어서, (Δx,Δy,Δz)의 변화율을 얻는다.

 

위의 시각화 이미지를 보면, x+Δx라는 항목이 있다. 이것은 같은 색상이면 객체의 같은 지점을 나타내는 것이라고 보면 되는데, 거의 동일한 위치에 동일한 색상이 칠해져있다.

즉, 물체가 움직여도, Deformation network가 변화율을 잘 확인해서 움직임과 상관없이 객체의 동일한 point를 잘 매핑할 수 있다는 뜻으로 해석할 수 있다.


Deformaton network model code

 

+) code를 살펴보면, Deformation network에 들어가는 (x,y,z,t)는 전부 positional embedding을 적용한다.

(x,y,z)와 마찬가지로 t또한 L=10을 적용해서 dimenstion이 20으로 확장이 된다. (만약 자기자신을 포함하고 있다면 21)

 

그리고 기존의 NeRF 구조와 똑같은 구조를 가지고 있지만, 몇가지 다른 점은 중간의 density 출력 부분과 마지막 layer가 128이 아니라는 점 정도이다.


2. Canonical network

Deformatio network and Canonical network

Canonical network는 (x,y,z)를 canonical space(t=0) 위의 점으로 매핑 시킨 후 (rgb, density)를 추출하는 network이다.

NeRF 모델과 똑같은 구조로 되어있는데 다만 input의 변화가 약간 있다.

 

(x,y,z)를 t=0 좌표로 매핑 시키기 위해서 (x+Δx, y+Δy, z+Δz)를 수행해주고, 이 좌표와 camera parameters(θ, φ)를 함께 input 넣는다.

 

그리고 나온 output으로 (x,y,z)를 rendering 하게 된다.


Canonical network code

+) Canonical network의 code인데 기존 NeRF 코드와 100% 같다!


+) D-NeRF는 end-to-end 모델이라, Deformation network와 Canonical network를 같이 학습한다.

또한 NeRF에 있었던 coarse network와 fine network도 같이 적용한다.

즉, D-NeRF로 한번 결과값 뽑고(coarse network), 거기서 다시 sampling해서 D-NeRF(fine network)에 다시 넣어준다.


Limitations

https://github.com/Fyusion/LLFF

D-NeRF는 오직 blender dataset에 대한 결과만 보여주고 있다.

Blender dataset은 완벽한 camera parameters를 얻을 수 있는 3D 가상환경이다.

 

Real scene dataset의 가장 대표적인 예로, llff dataset이 있는데, llff dataset은 blender dataset보다 학습이 어렵다.

왜냐하면, 실제 video에서 가져온 데이터이기 때문에 한정된 각도와 view directions, 그리고 완벽하게 계산할 수 없는 camera parameters에 대한 부분이다.

 

그래서 D-NeRF과 forward facing scene dataset(real scene)에 대해서 어느정도 성능이 나올지 잘 모른다.

이러한 점을 토대로, D-NeRF의 단점을 보완한 여러 NeRF 모델이 나왔으니 한번 찾아보길 바란다.


궁금한 점이 있으시다면, 댓글남겨주세요!

제가 아는 범위 내에서 답변드리겠습니다 ㅎㅎ

감사합니다.

 

- 2022.12.25 Kyujinpy 작성.

반응형