본문 바로가기

AI/Paper - Theory

[NeRF++ 논문 리뷰] - NERF++: ANALYZING AND IMPROVING NEURAL RADIANCE FIELDS

반응형

*NeRF++ 논문 리뷰 글입니다! 질문 사항이 있다면 댓글로 남겨주시길 바랍니다.

*기본적으로 난이도가 있는 논문이기에, NeRF를 이해하지 못하셨다면 힘드실 것으로 예상됩니다.

 

NeRF++ paper: [2010.07492] NeRF++: Analyzing and Improving Neural Radiance Fields (arxiv.org)

 

NeRF++: Analyzing and Improving Neural Radiance Fields

Neural Radiance Fields (NeRF) achieve impressive view synthesis results for a variety of capture settings, including 360 capture of bounded scenes and forward-facing capture of bounded and unbounded scenes. NeRF fits multi-layer perceptrons (MLPs) represen

arxiv.org

NeRF++ github: GitHub - Kai-46/nerfplusplus: improves over nerf in 360 capture of unbounded scenes

 

GitHub - Kai-46/nerfplusplus: improves over nerf in 360 capture of unbounded scenes

improves over nerf in 360 capture of unbounded scenes - GitHub - Kai-46/nerfplusplus: improves over nerf in 360 capture of unbounded scenes

github.com


Contents

1. Simple Introduction

2. Background Knowledge: NeRF

3. Method

    - Shape-Radiance-Ambiguity

        - Factor1

        - Factor2

    - Inverted Sphere Paramaterization

4. Result


Simple Introduction

NeRF++ important concept

NeRF++는 이름만 들어도 당연히 NeRF의 발전된 모형인 것을 알겠다.

그러면 기존의 NeRF의 문제점은 무엇이었을까?

 

우리는 Real-scene dataset에 NeRF를 적용할려고 했을 때, NDC(normalized decive coordinate)라는 것을 이용하였고, llff dataset을 이용하였기 때문에 forward-facing dataset이였다.

 

근데, 360-view dataset, 즉 sphere한 형태의 dataset이 들어오게 되었을 때 NeRF에서 잘 작동되지 않는 문제점을 발견했다.

그래서 논문의 저자들은 그 원인을 분석하고, 그것을 보완한 NeRF++를 제시하였다.

 

한번 깊게 들어가보자.


Background knowledge: NeRF

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

 

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

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

kyujinpy.tistory.com

 

NeRF에 대한 지식을 반드시 갖추고 와야 합니다!

Ray, volume rendering, density, rgb calculation 등등에 대한 설명은 대부분 생략할 예정입니다.

 

이 식을 어느정도 이해할 수 있다면 충분히 이해가 가능할 것입니다!

*NeRF를 알고 있다는 가정하에 논문 리뷰가 진행됩니다!


Method

Detail

먼저 간단한 overview로 살펴보겠습니다.

논문에서는 이론적 분석과 parameterization을 통해서 이것을 해결할 수 있는 방법을 제시합니다.

 

기존의 NeRF에서 Shape-radiance ambiguity problem가 있다고 제시하였습니다.

이것은, explict or implict regularization이 없다면 학습 image에 대해서 independent하게 기하학적 모양을 만들어낼 수 있다는 것인데,

View-dependent을 가지는 경우 correct한 scene인 S*이 아니라 incorrect scene인 S에 맞도록 training이 될 수도 있다는 뜻이다.

 

그리고 Parameterization of unbounded scenes를 제시합니다.

이것은 기존의 Forward Facing scene에서 다루던 Normalized Device Coordinate(NDC)와 다른 방법인데, 밑에서 자세히 다뤄보도록 합시다!


1. Shape-Radiance-Ambigulty

논문의 저자들은 NeRF로 이 문제를 다룰 때, scene이 unit sphere를 대표한다고 생각합니다.

NeRF limitations

논문의 저자들은 기존의 NeRF과 input images에 대해서 잘 결과가 나오는 것 같지만, view-dependent를 가지는 surface point를 정확하게 생성해내기 때문에 한계점이 있다고 합니다.

 

그 이유는 NeRF가 기존에 ray define하는 방식에 있습니다.

NeRF는 each pixel이 모델에 training으로 들어가서, 단일 pixel에서 나오는 ray를 sphere와 교차시키고 intersection point에서 얻어지는 radiance value를 pixel의 color값으로 정의합니다.

이럴 경우, field rendering 작업에서 pixel의 값이 극도로 dense하게 몰려있지 않는 이상, 불완전한 interpolation을 초래한다.

그리고, 논문의 저자들은 위와 같은 result를 제공하면서, NeRF의 ambigulty를 시각화하였습니다.

그리고 이러한 ambigulty에 대한 problem의 요인을 2가지 정도 제시하였습니다.

 

1-1. Factor1

Factor1

첫번째 요인은 incorrect geometry에 있습니다.

기존의 NeRF에서 color가 만들어 질때, color는 d를 매우 많이 반영하여 image에 대한 σ를 reconstruction합니다.

그렇기 때문에, correct shape일 경우에는 smooth하게 image가 생성되지만, incorrect shape일 경우에는 MLP로 representation field를 만들기에는 한계가 있습니다.

따라서 이런 correct shape에 대한 information을 높은 수준으로 required합니다.

 

1-2. Factor2

Factor2

두번째 요인은 NeRF의 MLP 구조에 있습니다.

기존의 NeRF 구조는 implicit regularization 역할을 하는 view-direction d가 있고, color가 생성될 때 d에서 가져오는 임의의 surface x에 대해서 encoding 작업을 합니다.

NeRF's MLP

NeRF's MLP구조를 보면, x와 d가 asymmetrically한 구조로 들어가는데, 이는 d를 반영하는 network가 적기 때문에 d를 encoding하는 MLP의 parameter 개수는 적고, non-linear activation도 적게 적용됩니다.

이는 view-dependent effects 영향을 초래하기 때문에 문제가 있다.

 

또한 positional encoding 방식도 x는 L=10이지만, d는  L=4으로 적용됩니다.

최종적으로, 고정된 x에 대해서 output으로 나오는 c에 대해서 d가 설명되기에는 한계가 있습니다.


same data split as Riegler & Koltun (2020)
Comparison

논문의 저자는 x와 d에 각각 L=10을 적용하고 한번에 들어가는 symmetrically한 구조의 Vanilla MLPNeRF MLP간의 비교를 수행하였습니다.

Vanilla MLP에서 x와 d를 한번에 넣어서 학습한 이유는 기존의 NeRF MLP에 있었던 implict regularization제거하고 학습하기 위함입니다.

 

위의 결과를 비교했을 때, 논문의 저자들은 NeRF's MLP의 구조에서 나오는 color가 correct solution으로 회복될 수 있는 반사율의 암시적 정규화(implicit regularization reflectance)를 가진다고 합니다.


+) 제가 위의 그림을 논문의 저자의 말을 되새기면서 생각한 결과 아래와 같이 해석하였습니다.

+) NeRF's MLP의 asymmetric한 구조에서 중간에 view_direction을 넣어줌으로 인해서, MLP가 color를 설명할 때 implicit regularization reflectance가 생긴 것이고 (Vanilla MLP에 비해서 표현이 잘 되었지만), 결과적으로 NeRF의 rendering은 view dependent와 매우 밀접한 연관이 있다. (저의 생각)


2. Inverted Sphere Parameterization

NDC failure

기존의 NDC를 이용하면, view points에 대한 reconstruction을 하는데 제한이 생긴다.

특히 space의 outside에 해당하는 부분의 표현력이 매우 제한되고 density가 유한하고 매우 넓은 범위 안에서 mappling 된다는 점에서 real scene에 대한 표현력이 감소한다.

그렇기 때문에, 360 view scene에 대해서는 NDC를 활용하면 주변 background를 잘 표현하지 못하고, background의 배경을 설명하기 위해 depth range가 극도로 커지게 되어서, volume rendering할 때 문제점이 된다.

 

Parameterization

따라서 위의 문제를 다루기 위해서 sphere의 outside 부분에 대한 re-parameterization method를 제안하였다.

 

논문에서는 real scene의 범위를 두 군데로 분할하였는데 inner sphere와 outside sphere로 구분하였다.

Inner sphere는 foreground scene을 표현하고, outside sphere는 background scene을 표현한다.

 

Inner sphere의 경우에는 re-parameterization을 적용하지 않고 (x,y,z)만 이용하는데,

outside sphere의 경우에 inverted sphere parameterization을 적용하게 된다.

 

따라서, NeRF++의 구조는 MLP가 2개가 있는 것이다.

Inner sphere의 MLP와 outside sphere의 MLP가 있고, Inner sphere에서 얻은 density와 color 정보를 이용해서 (x`, y`, z`, 1/r)을 만들어 낸 후, outside sphere의 input으로 활용한다.


+) 여기서 1/r은 inverse of density, disparity를 의미하기 때문에 background 대한 RGB를 잘 표현할 수 있게 되는 것이다.

+) Inverse sphere parameterization 방법을 제안함으로써 모든 region에 대해서 foreground와 background의 한번에 rgb를 계산하는 것이 아니기 때문에 어느정도 view-dependent에 대한 problem이 줄어들게 되었고, background과 foreground에 대한 density도 따로 계산하기 때문에 view direction(d)가 기존의 NeRF보다 correct shape에 대한 정보를 MLP에 더 제공할 수 있게 되지 않았을까 생각해본다. (저의 생각)


+) Inverted sphere parameterization을 계산하는 수식이다.

+) 삼각형의 성질과 unit sphere이기 때문에 radius가 1인 점을 활용해서 r를 구할 수 있다.


+) Inner와 outside의 sphere로 각각 rendering을 진행하기 때문에 volume rendering 식이 위와 같이 확장이 된다.

+) 여기서 Inner sphere의 t는 (0, t`) 안으로 설정하고, outside sphere의 t는 (t`, ∞)으로 설정한다.


Result

NeRF++의 Foreground prediction과 Background prediction을 진행한 결과이다. 확실하게 영역이 잘 구분되어서 rendering 된다는 것을 확인할 수 있다.

기존의 NeRF보다도 360-view real scene dataset에 대해서 좋은 성능을 보인다는 것을 알 수 있다.


- 2023.01.04 Kyujinpy 작성. 

 

 

 

반응형