[논문리뷰 | CV] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis(2020) Summary

9e0na·2023년 8월 10일
1

[논문리뷰]

목록 보기
20/41
post-thumbnail

Title

  • NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis


Abstract

  • 5d input (x,y,z,θ,ϕ) 을 9 layer- MLP에 넣어서 output으로 rendering 이미지를 합성하는 것 (위의 gif처럼 가상의 3D 장면을 2D이미지로 변환하는 것을 rendering이라고 한다.)
  • Positional encoding 을 사용하여 High frequency정보를 주어 고화질 이미지를 생성
  • Hierarchical volume sampling을 사용하여 biased distribution을 해결
  • 2D image를 사용하여 3D rendering 이미지를 생성한다는 아이디어가 Good

1. Introduction

  • NeRF는 어떤 물체를 찍은 여러장의 사진을 입력 받아, 새로운 view에서 바라본 객체의 모습을 알아내는 view synthesis에 대한 새로운 방식에 대한 논문임.
    -> N개의 시점에서 찍은 2D image를 받으면, N개의 시점으로 보여주는게 아닌 continuous하게 임의의 시점에서 2D image를 만들어내는 것이 핵심임!

  • 주어진 view를 학습하여 novel view를 생성할 수 있는 모델을 학습함.

2. Realated Work

  • skip합니다.

3. Neural Radiance Field Scene Representation

  • NeRF는 input으로 3D 위치정보인 (x,y,z)와 물체를 바라보는 방향(Viewing direction)을 받고, 색상값인 (r,g,b)와 σ\sigma (density)를 예측할 수 있는 Fully Connected Nerual Network를 학


3.1. MLP Structure

  • 총 9개의 FC / ReLU Activation Function
  • 먼저 input으로 처음부터 5차원을 다 넣어주는 것이 아닌, (x,y,z)만 먼저 통과시킴.
  • 그후, 8개의 FC만 통과한 뒤, Volume density를 뽑고, Viewing direction를 합쳐서 하나의 FC를 통과시킴. 그후, RGB가 나옴.

4. Volume Randering with Radiance Fields

4.1. Ray

  • 원점 카메라 초점 위치로부터 어떤 방향으로 t만큼 이동한 점들의 집합을 Ray라고 정의

  • 이렇게 정해진 픽셀 값은 한 Ray 위에 존재하는 point들의 RGB값들의 Weighted Sum이 됨.

4.2. Classical Volume Rendering

  • 3차원의 영역을 특정한 view point에서 바라봤을 때, 2D 이미지로 렌더링 하고 어떤 컬러를 갖는지 계산하는 방법


직관적으로 보면 위와 같음.

  1. Ray casting
  2. Sampling
  3. Shading
  4. Compositing

4.3. Weighted Sum

  1. Density가 클수록 Weight가 커야함.

  2. 그 지점을 가로막고 있는 점들의 Density의 합이 작을수록 그 지점의 Weight가 커야함.


5. Optimizing a Neural Radiance Field

5.1. Positional Encoding


5.2. Hierachical volume sampling

  • 좋은 샘플들을 얻기 위해 이 방법을 사용하며, 집중하고 싶은 부분을 최대한 많이 샘플링하는 방법임.
  • 이 방법은 2 step으로 이루어짐. (Coarse Network, Fine Network)

5.2.1 Coarse Network


5.2.2. Fine Network

요약하면

  1. Network를 2개 씀

  2. Course Network에서는 Rough하게 Nc개의 포인트를 뽑아 Color contribution을 계산함.

  3. Fine Network에서는 앞에서 얻어낸 것들을 가지고 조금 더 Color contribution에 기여하는 포인트 Nf개를 뽑아서 실제의 Volume density와 color을 얻어냄.


6. Training NeRF

  1. View point selection

  2. Ray Composition

  3. Select 5D iput samples along the ray

  4. Query into MLP

  5. Get predicted color + density

  6. Render color using colume ray casting

  7. Compute rendering loss(Simply squared error between rendered and true pixel colors)


7. Conclusion

  • NeRF는 5차원 데이터를 입력 받아 객체의 새로운 시점에서의 모습을 알아내는 방법을 제안함.
    -> 딥러닝 알고리즘을 사용해 입력 데이터로 radiance와 density를 추출하는 함수 만들기
  • NeRF를 수행하는 과정은 미분 가능하고, 경사하강법으로 MLP를 최적화시켜 새로운 관점에서 관측될 이미지를 더 정확히 관측할 수 있음.
    -> positional encoding을 사용하여 데이터를 변환하고, MLP가 더 높은 주파수를 표현할 수 있게 만듬
  • 복잡한 객체와 장면을 효과적으로 표현하며, 용량이 적은 3D 모델의 장면을 생성할 수 있음.
  • 5차원 입력 데이터를 고차원 데이터로 매핑하는 positional encoding을 통해 고주파 장면을 성공적으로 표현하고, 미분 가능한 렌더링 방식을 제안하여 성능이 우수함.

📚 References

profile
데이터사이언티스트가 되기 위해 [a-zA-Z]까지 정리하는 거나입니다 😊

0개의 댓글