Paper/Neural rendering

Light Field Neural Rendering

침닦는수건 2023. 6. 30. 15:46
반응형

내 맘대로 Introduction

일반 NeRF로 왼쪽 그림처럼 반투명, 투명, 반사 재질의 물체를 다루면 성능이 떨어진다. NeRF는 사실 상 Lambertian surface 물체에서 확실하게 동작하는 편이고 non-Lambertian surface 물체에서는 딥러닝의 힘으로 그럭저럭 될 뿐이다.

이 논문에서는 4D light field 개념을 추가해서 non-Lambertian effect를 다룰 수 있도록 해서 반투명, 투명, 반사 재질 물체를 기존 NeRF보다 우수하게 다루는 것을 목적으로 한다.

기존 NeRF도 이미지를 무지막지하게 많이 쓰면 어느정도 커버할 수 있기에 이미지 사용을 최소화하면서 학습하는 방법도 제안하는데 epipolar contraint를 사용한다. geometric contraint를 걸어줌으로써 이미지를 보다 적게 써도 형상을 잘 다룰 수 있게 한다.

 

메모하며 읽기

핵심은 앞에서 언급했듯이 1) 4D light field 개념을 추가한 것 2) epipolar contraint로 이미지를 최소화하는 것이다. 
light field가 뭔지 몰라서 검색해봤다. 다시 내 말로 정리하면, 공간에 흐르고 있는 빛의 방향 별 빛의 양을 기술하는 vector field라고 한다. 빛은 직진하니까 ray 단위로 보았을 때 그 ray를 따라 흐르고 있는 빛의 양을 기술하는 개념이다.

이 컨셉을 논문에 적용해서 다시 이해해보면 기존 NeRF와 같이 똑같이 ray 단위로 색깔 찾는 것이 맞으니 "구조적으로는 똑같은데" 생각하기를 "공간에 흐르고 있는 빛"을 먼저 파악하고 그 빛을 조합해서 색깔을 예측하도록 하면 성능이 올라가지 않을까? 인 것 같다. 


ray 단위로 튕기고 투과하고 이런 걸 계산하는 것이 아니라, 일단 공간에 빛의 흐름을 먼저 파악하는데 집중하는 것이다. 공간의 빛을 전부 알고 있다고 가정하면 문제가 쉬워진다는 개념같다. 

구조적으로 달라진 것은 하나도 없는 것 같다! 해석하기 나름인 듯! epipolar contraints가 더 핵심인 것 같기도 하다.
light field는 기본적으로 5D 값이지만 물체가 concave part가 없고, convex hull part가 없을 때 그리고 다루는 공간이 단조로울 때를 한정으로 4D light field로 표현할 수 있다. 그 방식이 위와 같이 3가지가 있다.


그 중 이 논문에서는 세번째 (ligth slab)와 두번째(two sphere)를 사용한다.

light slab은 세번째 그림처럼 두개의 평면을 정의하고 평면 상 2차원 정보를 알면 ligth ray의 방향을 정의할 수 있으므로 2차원 정보 (u, v), (s, t)로 표현한다는 것이다.

two sphere는 bounding sphere가 있을 때 light ray가 뚫고 들어온 점의 theta, phi, 뚫고 나가는 theta, phi로 방향을 정의할 수 있으므로 (theta1, phi1), (theta2, phi2)로 표현한다는 것이다. 
model은 epipolar constraint를 쓴다고 했다. 

target image에서 ray를 뽑고 ray를 따라 point, x를 여러개 만든다.

이 x 들은 각각 다른 시점의 reference 이미지 상으로 projection 되는데 이 x들은 epipolar line 위에 있을테니 epipolar point라고 불린다. 

이 epipolar point들에 대응되는 feature들을 reference 이미지 별로 모아서 하나의 feature로 압축해주는 것이 Epipolar feature aggregation이다. 

reference 이미지 별로 aggregation 된 feature를 한 번 더 aggregation하는 것이 view feature aggregation이다.

전체 구조는 위와 같고, aggregation 대상들이 sequence와 set이기 때문에 transformer가 효과적 구조이므로 사용했다고 한다.

그냥 attention 짱짱이라서 쓴 것 같기도.

첫번째 aggregation, reference image 별로 epipolar point들을 합치는 모듈은 총 5개의 입력을 받는다. 

1) 각 j 시점에서 epipolar point로 만든 light field ray
2) epipolar point의 좌표
3) camera embedding
4) visual feature (입력 이미지를 얇은 CNN에 태워서 뽑은)
5) epipolar point의 color

1)과 2)는 각각 다른 frequency를 이용하여 positional encoding된 후 사용된다. 

5개의 입력으로 y라는 feature를 만들고 수식(2)와 같이 weight를 생성해서 weighted sum하는 식으로 aggregation한다.
두번째 aggregation은 더 간단하다. 앞서 나온 aggregation 결과를 전부 다 모아서 같은 방식으로 aggregation을 한 번 더 해주면 된다.

loss는 view synthesis답게 color loss가 핵심이고 학습을 돕기 위해 auxiliary loss를 추가했다. 

앞서 aggregation시 사용된 weight대로 color를 합친 값이 target image 상 color와 같도록 했다. 

color loss가 2개인 셈이다.




 

반응형