연세대 인공지능학회 YAI

[논문 리뷰] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 본문

컴퓨터비전 : CV/3D

[논문 리뷰] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

_YAI_ 2022. 5. 17. 01:20

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

**YAI 8기 김현진님이 비전 논문 심화팀에서 작성한 글입니다.

 

 

European Conference on Computer Vision (ECCV), 2020 (Best Paper Honorable Mention)

https://arxiv.org/pdf/2003.08934.pdf



 

3. Neural Radiance Field Scene Representation

 

 

이 논문에서는 연속적인 장면들을 5D 벡터 함수의 형태 (Radiance Field)로 나타낸다. Input은 위치 (x, y, z), 방향 (θ, ϕ)

이고, RadianceRadiance의 양을 조절하는 volume density output이다.

 

 

1.       Camera Ray 따라, point sampling해서 5D 좌표를 얻는다.

2.       해당 좌표들을 MLP 통과시켜, Color Volume Density output받는다.

3.       Volume Rendering 사용해서 해당 output 값들을 2D 이미지로 바꾼다.

4.       Rendering 함수는 미분 가능하기 때문에, 새롭게 만들어진 2D 이미지와 Ground Truth 이미지 사이의 잔차를 최소화시킨다. Stochastic Gradient Descent 방식으로 잔차가 최소화된다.

 

Multiview Consistent 이미지를 생성하기 위해, location (x, y ,z )만을 활용하여 density σ 예측한다. 여기에서, RGB color c location (x, y, z) viewing direction (θ, ϕ) 모두 활용하여 예측을 하게 된다.

 

 

MLP $F_{\theta}$ 3D 좌표인 x input하고,  8개의 fully-connected layer 통해 output σ 256차원 feature vector 생성해낸다. 이렇게 생성한 feature vector camera ray viewing direction (θ, ϕ) 합해지게 된다.  마지막으로, 합쳐진 feature vector ReLU 활성함수와 128 채널로 구성된 FC layer 통과하게 되고, RGB color c (r, g, b) 구하게 된다.

 

 

위와 같이 viewing direction 합치는 이유는, non-Lambertian Effect 구현하기 위함이다. (Lambertian Effect -> 모든 closed polygon 렌더링되었을 , 같은 겉보기 밝기를 갖는 현상)

 


 

4.  Volume Rendering with Radiance Fields

논문에서는 5D Neural Radiance Field 사용해서 scene 공간상의 포인트에 대한 volume density directional emitted radiance 표현한다. Scene 통과하는 ray color 렌더링하기 위해서 classical volume rendering (고전적 렌더링) 사용하게 된다.

 

Camera Ray:  rt=o+td

 

특정 시점 o에서 d 방향으로 t만큼 이동하는 Camera Ray 있을 , Color C(r) 해당 Camera Ray 포인트에 대한 기댓값이다.

 

 

위에서 T(t) $t_n$ 에서 t까지 Camera Ray 누적된 투과율을 의미한다. , 다른 입자와 충돌을 하지 않고, $t_n$

에서 t까지 이동할 있는 확률을 의미한다.

 

정리하자면, Color 렌더링하기 위해서, C(r) 예측해야 한다. C(r) 예측하기 위해서, [$t_n$, t_f$] 구간을 N으로 등분하여 uniform하게 sampling 하는 구분구적법을 활용하게 된다. 

(C(r) 예측하기 위해 discrete sample 사용하지만, MLP 연속적인 position 대해서 evaluation 하기 때문에, 구분구적법을 통한 continuous scene representation 가능한 것이다. )

 

구분구적법을 통하여 C(r) 예측하면 다음과 같다.

 

 

여기에서 δi=ti+1-ti

 

인접한 샘플 간의 거리를 의미한다.

 


 

5. Optimizing a Neural Radiance Field

 

하지만, 저자들은 앞서 설명한 color rendering State of the Art 퀄리티를 달성하기 위해서 충분하지 않다고 지적한다. 따라서, 논문은 복잡하고 고해상도의 scene 표현해내기 위해서 가지 방법을 제시하는데, Positional Encoding Hierarchical Volume Sampling이다.

 

Positional Encoding -> MLP High-frequency 함수를 표현하는 도와주는 과정

Hierarchical Sampling -> sampling 효율적으로 있도록 도와주는 과정

 

 

5.1 Positional Encoding

저자들은 네트워크  $F_{\theta}$ (x, y, z, θ, ϕ) 직접 input하면, color에서 나타나는 high-frequency variation 제대로 표현하지 못한다는 단점이 있다는 것을 발견했다. 이는 Deep Network들이 lower-frequency function 편향되게 학습이 된다는 최근의 연구 (Rahaman et.al) 에서도 밝혀진 사실이다.

 

이를 해결하기 위해,  $F_{\theta}$ $F_{\theta} \circ \gamma $ 재구성해야 한다.

여기에서 γ R 에서 고차원 공간 R2L 매핑하는 함수이고,  FΘ' 일반적인 MLP이다.

 

논문은  γ(x)  L= 10으로 지정하였고, γ(d) L=4 지정해서 실험을 진행하였다.

 

 

 

5.2 Hierarchical Volume Sampling

4절에서는 Camera Ray 따라 N query point에서 Neural radiance field network evaluate했는데, 방식은 렌더링에서 불필요한 free space (빈공간) occluded regions (가려진 공간) 반복적으로 sampling하기 때문에 상당히 비효율적이다.

 

이러한 문제점을 해결하기 위해서, 저자들은 Hierarchical Sampling 제안한다.

Hierarchical Sampling 하나의 장면의 표현을 위해서 하나의 네트워크를 사용하는 것이 아닌, 개의 네트워크 (“coarse”, “fine”) 동시에 학습시키는 방식이다.

 

먼저, Stratified Sampling 통해 $N_C$ 개의 location sampling하고, 해당 location에서 “coarse” 네트워크를 평가한다 다음으로, coarse 네트워크의 output 받아서, volume 관계 있는 부분을 향해 편향된 파트에서 informed sampling 진행한다-> 이를 위해, Coarse Network alpha composited color Cc(r) sampled color ci

들의 weighted sum으로 표현한다. 수식은 다음과 같다.

 

 

Inversed Transform Sampling 활용하여 $N_f$개의 location sampling하고, Nc+ Nf 개의 sample fine 네트워크를 평가하게 된다. ( 과정은 Visible content 있는 영역에 sampling 많이 할당되도록 돕기 위함이다.)

 

** Inverse Transform Sampling?

역변환 샘플링!!!

특정 확률분포를 따르는 확률변수 X 대해서 난수를 추출하고 싶을 , F(x) 역함수 F-1

기본 난수를 대입해서 구하는 방법이다.

 

 

5.3 Implementation Details

1.  optimize iteration마다 camera ray batch 랜덤으로 sampling한다.

2.  Hierarchical Sampling과정을 수행한다. Coarse Network에서 $N_C$ 개의 sample 뽑고, Fine Network에서 $C_N + C_f$ 개의 sample 뽑게 된다.

3. Color 렌더링하기 위해, 4절에서 설명한 Volume Rendering 단계를 수행한다.

4. True Pixel Color Rendered Color사이의 Total Squared Error 계산한다. 최종 Loss  Coarse Rendering total squared error Fine Rendering total squared error 합이다.

 

 

참고로, 최종 rendering $\hat C_f(r)$ (Fine Network Rendering)에서 나오지만, fine network sample 할당하기 위해 coarse network로부터의 weight distribution 활용해야 한다. 따라서,  Cc(r) (coarse network rendering) loss 최소화시켜야 한다.

 

논문에서는 $N_C=64$,$N_f=128$ 좌표에서 sampling 4096개의 ray batch size 사용하였다. 추가적으로 Adam Optimizer weight decay과정을 진행했고, 100-300k iteration 걸쳐서 scene optimize 했다고 밝혔다.  

 

 

 

 

 

6.  Results

Synthetic Rendering of Objects

논문 이전에 나왔던 SRN, NV, LLFF보다 성능이 좋은 것을 확인할 있다. 또한, 위의 사진에서 확인할 있듯이, 더욱 고화질이며 선명하게 렌더링된 것을 확인할 있다.

 

 

Real Images of Complex Scenes

forward-facing image 비교했을 때에도, NeRF 성능이 다른 것에 비해 좋은 것을 확인할 있다. 비록, LLFF LPIPS 성능이 좋지만, 저자들은 NeRF Multiview consistency면에서 훨씬 우수하다고 강조한다.

 

Ablation Studies

Ablation Study -> 특정 component들을 없애면서 AI 시스템의 성능을 체크하는 연구방법

(**7-8열에서는 x positional encoding 활용된 frequency L 대한 조정이다. )

 

 

참고로, 25개의 image NeRF input 결과가 NV, SRN, LLFF 100개의 image input했을 때의 결과보다 좋다.

 

7.  Conclusion

장면을 5D Neural Radiance Field 형태로 나타내는 것이 기존의 연구에서 사용되어 왔던 deep convolutional network 학습시켜 discretized voxel representation 형태로 나타내는 것보다 좋은 rendering 산출해낸다.

 

 

추후 연구해야 하는 부분

-> Neural Radiance Field 효과적으로 optimize render하는 방법

-> Interpretability 대한 방향이 남아있다. Deep Neural Network weight들에서 scene encoding 때의 맞고 틀리고의 reasoning 어떻게 해야할지가 불분명하다.

 

Comments