본문 바로가기

Paper Review

[Paper Review] NeRF : Representing Scenes as Neural Radiance Fields for View Synthesis

1. Introduction

- 3D View를 생성하는 Task 수행.

- 같은 물체를 다양한 시점에서 찍은 이미지가 있을 때, 이 중 일부를 학습에 사용하고 나머지로 평가하는 방식 사용.

- 더 높은 주파수도 표현 가능.(=경계선을 표현하는 능력이 증가함.)

 

=> Novel View Synthesis : 일부 사진을 가지고 완전 새로운 각도의 모습을 유추.

=> Image Rendering, Scene Representation 해결.


* NeRF 아키텍처 *

2. Neural Radiance Field Scene Representation

Sptial location, Viewing direction을 MLP를 통해 Color, Density 추출.

 

 - Input : 3D 물체를 이루는 Point의 좌표 + 우리가 이미지를 바라보는 각도(=카메라의 각도) (초기 카메라 세팅 시 값 구할 수 있음.)

 Fully Connected Neural Network학습을 통해

 - Output : 색상 값 + Density (=투명도의 역수)

 

2.1 MLP Structure

MLP Structure

 - (x,y,z) => 8개의 FC layer => Density 추측 (각도에 상관없이 동일해야함.)

 - Predicted Density + Viewing Direction => 1개의 FC layer => RGB 추출.


* NeRF 학습 방법 *

3. Volume Rendering with Radiance Fields

3.1 Ray

Ray

- Camera Ray r(t) = o(원점 카메라 초점 위치) + t(만큼) * d(이동 방향)

- 초점 위치는 고정 된 채로, 시선의 방향을 변경하며 Ray선 제작.

 

3.2 Clssical Volume Rendering

Volume Rendering

 =>(픽셀 값) = (한 Ray 위에 존재하는 Point들의 RGB값들의 3.3 Weighted Sum)

 

 1) Ray Casting : View 방향과 일치하는 방향으로 모든 픽셀에서 Ray 쏘기

 2) Sampling : 선상의 모든 점을 더하는 것을 불가능 , 적절한 간격으로 최종 색상을 결정할 데이터 선정

 3) Shading : 포인트에 대한 3D컬러와 Density 얻기

 4) Compositing : 결정된 Ray 위의 모든 샘플링 데이터 더해주기 => 2D 도출

 

- 합쳐진 Pixel RGB값은 실제 이미지의 Pixel RGB값과 MSE Loss를 거쳐 Back Propagation을 통해 학습 진행.

 

3.3 Weighted Sum (= Find Rendering Color)

- T(t) : t보다 앞에 있는 점들의 Density 합. (=투과율) (이 값이 크면 가려져 보이지 않아 – 부호가 붙음.)

- O(r(t)) : t지점의 Density.(중요한 값이기 때문에 가중치를 크게 둠.)

- c(r(t),d) : t지점의 RGB값, 실제 RGB값의 Weighted Sum

 

=>

1) Density가 클수록 Weight가 커야한다.

2) 그 지점을 가로막고 있는 점들의 Density가 작을수록 그 지점의 Weight는 커야한다.

 

3.4 Stratified Sampling Approach (층화표집)

- 기존 Deterministic quadrature 사용 시, 가상의 Camera Ray가 접촉하는 모든 점에서 Sampling한 t_i들을 가지고 적분을 수행하기 때문에 불필요한 Pixel도 적분 범위에 들어가 성능이 제한됨.

 

=>Stratified Sampling Approach 사용.- C(r)의 적분 구간으로 사용했던 [t_n, t_f]를 일정한 N개의 구간으로 나누고 각 구간에서 임의로 하나씩 뽑아 discrete한 적분의 구간으로 사용.

Stratified Sampling Approach
새롭게 정의된 Weighted Sum(=Find Color Rendering)

 - 1-exp() : Volume을 얼마나 3D Point에서 차지하고 있는가

 - T(1-exp()) => Contribution Weight = 어떤 색이 2D 이미지의 색깔에 얼마만큼 Contribution할 수 있는가

 

4.Optimizing a Neural Radiance Field

- NeRF가 고주파의 복잡한 scene을 표현할 수 있게 도와준 요소.

1) Positional encoding : MLP가 고주파 데이터를 처리할 수 있게 도와줌.

2) Hierarchical sampling procedure : NeRF가 고주파 Scene을 효율적으로 Sample할 수 있게 만들어줌.

 

4.1 Positional Encoding

- 네트워크 F_Θ가 (x, y, z, θ, φ) 좌표를 바로 처리 시, 네트워크가 저주파를 처리하는 함수로 학습되기 떄문에 고주파 영역의 렌더링 성능이 떨어짐.

- 고주파 함수로 입력 데이터를 고차원 데이터로 Mapping.

 

=> 네트워크  FΘ = F’Θ ◦ γ로 재구성

F’Θ : Simply a regular MLP.

γ : R차원에서 R^(2L)차원으로 매핑하는 함수.

γ(·)

γ(·)는 입력 데이터 X=(x,y,z)의 각 원소 x,y,z와 X를 통과하는 Camera Ray의 Unit Vector d의 원소 x,y,z를 모두 적용하여 해당 값들을 [-1,1] 범위에서 normalize합니다.

 

* 참고 *

- Transformer의 Positonal encoding과 NeRF의 Positonal encoding차이

1) Transformer의 Positonal encoding은 입력값의 순서에 대한 define이 없는 네트워크에 입력값으로 들어갈 token에 순서라는 개념을 부여하기 위해 사용.

 

2) NeRF의 Positonal encoding은 연속적인 입력 데이터의 좌표들을 고차원 데이터로 mapping하여 MLP가 쉽게 고차원 성분, 즉 scene에 있는 테두리들을 조금 더 쉽게 근사할 수 있게 만들기 위해 사용.

 

4.2 Hierarchical Sampling Procedure

-  Camera Ray에서 N개의 포인트를 임의로 뽑은 후 Rendering은 비효율적.

->  '마지막 Rendering에서 예측되는 효과에 비례해 포인트를 Sampling하는 방식'으로 변경.

 

* 두 개의 Network 사용. *

1) Coarse Network

(1) Camera Ray에서 Stratified Sampling을 사용해 N_c개의 구간에서 값을 하나씩 뽑고, 해당 값을 가지고 C(r)을 계산합니다.

(이 때, Coarse Network 사용.)

Coarse Network 활용한 Weighted Sum(=Find Color Rendering) :  N_c구간으로 변경

(2) 구한 값에서 얻은 정보로 Volume Density가 상대적으로 높은 좌표를 위주로 값을 뽑습니다. 

 

 

2) Fine Network

(1) Camera Ray에서 Inverse Transform Sampling(Inverse CDF Method)을 사용해 N_f개의 위치에서 값을 하나씩 뽑습니다.

- Inverse CDF Method

① PDF 구한다.

w의 확률붙포에 대한 PDF.

② PDF 이용해 CDF 구한다. (누적합)

③ CDF의 y 값을 [0,1]에서 Uniform Samping하여 그 y에 해당하는 x를 구한다.

④ 이떄 x는 PDF를 따르는 새로운 Sampling을 구할 수 있다.

 

(2) N_c + N_f개의 데이터를 입력값으로 넣어 C_f(r) 최종적으로 계산한다.

Hierarchical sampling procedure

4.3 Implementation Details

1) scene의 RGB 이미지, camera poses, intrinsic parameters(카메라에 있는 이미지 센서의 크기 등 카메라의 고유한 성질), scene bounds의 dataset 사용한다. (COLMAP structure-from-motion package 활용하여 real data를 parameter로 추정.)

 

2)  매 epoch마다 Camera Ray 만나는 데이터셋의 pixel들을 일부 선별 후, Hierarchical Sampling을 수행해 N_c개의 값을 Coarse Network에 넣어 값을 얻고 N_c + N_f개의 값을 Fine Network에 넣어준다.

 

3) Volume Rendering Procedure을 수행해 Camera Ray로 바라본 지점의 색상을 Rendering한다.

 

4) Coarse Network Rendering 값,  Fine Network  Rendering 값, 실제 Rendering 값 활용해 Loss를 구한다.

Total Squared Loss활용하여 Loss 도출.

- R : 각 Batch에 있는 Camera Ray의 집합.

- C(r) : Ground Truth.

- C_c(r) : Coarse Network Rendering Value.

- C_f(r) : Fine Network  Rendering Value.

 

5) 여러 뷰에서 이 오류를 최소화하면 네트워크가 실제 기본 장면 콘텐츠를 포함하는 위치에 높은 Volume Density와 정확한 Color를 할당하여 장면의 모델을 예측할 수 있다.


5. Results

5.1 Datasets

(1) DeepVoxels(Diffuse Synthetic 360) : 구조가 단순하며 람베르트 반사 성질(어느 시점에서 빛을 발사해도 모든 방향으로 균일하게 반사되는 이상적인 성질)을 지닌 표면으로 구성된 4개의 객체로 만들었다. 각 객체를 촬영한 scene의 해상도는 512 x 512이며 반구형 궤적을 그리며 촬영하였다.

 

(2) Our Own Dataset(Realistic Synthetic 360) : 8개 객체를 가지고 제작하였으며 모두 논-램베르트 반사 성질(현실적인 반사 성질)을 지녔다. 6개 궤적은 반구형 궤적을 그리며 촬영했으나 2개는 구형 궤적을 그리며 촬영했고, 사진의 해상도는 800 x 800이다. (저자가 추가적으로 제작.)

 

5.2 Comparisons

- PSNR (최대 신호 대 잡음비) : 이미지의 화질 손실 정보 평가할 때 사용되는 수치. (높을수록 좋음.)

- SSIM (유사성 측정값) : 이미지의 품질을 측정할 때 사용. (높을수록 좋음.)

- LPIPS (이미지 패치 사이의 거리) : 값이 작으면 두 이미지는 유사한 것이고, 값이 크면 두 이미지는 다름. 

 

5.3 Discussion

- NeRF에서 사용되어지는 MLP Parameter는 5MB 용량 차지. (매우 적은 용량 요구함.)

 

5.4 Ablation Studies

Ablation Studies for Our Model

- PE : Positional Encoding

- VD : View Dependence

- H : Hierarchical Sampling

 

- 5,6번째 열 : 이미지 개수에 따라 성능이 상승하는 것을 볼 수 있고, 가장 적은 이미지 개수인 25작을 사용해도 기존의 NV, SRN, LLFF보다 더 좋은 성능을 보여준다.

 

- 7,8번째 열 : NeRF가 처리할 최대 주파수에 따른 성능 변화를 보여주는데, 오히려 L(위치 벡터X를 Positional Encoding할 떄 최대 주파수)을 10보다 늘리자 성능이 하락한다.

=> 저자는 '2^L가 Maximum Frequency Present를 능가하면, L을 늘렸을 때 얻는 이득이 제한된다.' 추측.(여기서 대략 1024일 것이라 예측.)

 

6. Conclusion

-  5D Neural Radiance Fields(3D Location 및 2D Viewing Direction 함수로 Volume Density 및 View 따라 방출되는 방사광을 출력하는 MLP)로 표현하는 것이 이산화 된 복셀 표현을 출력하기 위해 Deep Convolutional Networks를 훈련시키는 이전에 지배적인 접근 방식보다 더 나은 Rendering을 생성한다는 것을 보여준다.

- 보다 효율적인 샘플 Rendering을 만들기 위해 Hierarchical Sampling을 제안했지만 (훈련과 테스트 모두에 대해), Neural Radiance Fields를 효율적으로 Optimize하고 Rendering하는 기술을 조사하는 데 여전히 훨씬 더 많은 진전이 이루어지고 있다.

 

참조 : 2003.08934.pdf (arxiv.org)