view synthesis란?
- 찍은 시점이 다른 여러가지 이미지를 학습하여 여러 시점에서도 연속적으로 이미지를 볼 수 있도록 이미지의 모양을 합성하는 분야
- depth에 따라 물체가 움직이는 정도가 다르기 때문에 난이도가 높은 분야이다.
정적인 사진을 연속적인 5차원 함수로 표현
그 함수의 출력은 물체의 각 포인트와 카메라 시점에 의해 반사된 빛들이다.
함수의 output중 density는 빛이 그 point에서 얼마나 축적이 되었는지를 표현한다.(얼마나 투명하지 않은지를 나타내는 것 같다.)
Neural radiance field를 만들기 위해
1) 3차원의 샘플을 얻어내기 위해 여러 시점에서 카메라로 물체를 찍는다.
2) 사진의 찍은 지점과 각도를 input으로 하고 색과 밀도를 output으로 하는 모델을 학습한다.
3) 기존의 volume rendering기술을 이용해 이 색과 밀도를 2차원의 이미지에 축적한다.
모델의 충분한 성능을 내기 위해서 (1)positional encoding과 (2)hierarchical sampling procedure 사용
모델의 성능을 끌어 올리기 위해 두가지 방법을 사용
deep network는 진동수가 낮은 함수로 학습이 되려는 경향을 가짐-> 이로인해 NeRF가 급격한 변화나 복잡한 이미지에 대해서 학습을 잘 하지 못함
이를 해결하기 위하여 모델을 학습하기 전에 높은 진동수를 가지는 함수를 input에 mapping하는 작업을 거친다.
equation(4)와 같은 함수를 위치 벡터와 카메라 방향벡터에 각각 적용한다.
transformer의 경우 sequential한 토큰을 서로 잘 구별해주기 위하여 positional encoding을 사용하였지만, 이 논문의 경우 높은 진동수의 정보를 담고 있는 이미지를 잘 해석하기 위하여 postional encoding을 사용했다는 차이점이 있다.
지금까지 진행했던 렌더링의 문제는 물체가 없는 빈 공간과 물체가 존재하는 공간이 같이 렌더링 된다는 문제가 있었다. 이를 해결하기 위해 hierarchical volume의 방법을 사용
이를 위해서 하나의 네트워크를 2개의 네트워크로 분리(coarse&fine)
(1) coarse: coarse네트워크를 구하기 위해 ray에서 개의 샘플을 뽑는다. 그리고 coarse network를 equation(2),(3)을 사용해 계산한 후 실제 물체와 관련이 있는 부분을 뽑는다.
이때 를 다음과 같이 정규화화면, piecewise-constatnt PDF를 구할 수 있다. (나중에 더 알아봐야겠다!)
(2) fine: inverse transform sampling을 이용하여 를 샘플링하고 두 샘플을 이용해 네트워크를 평가한다.
이런 방식을 통해 물체가 실존하는 공간이 렌더링 되는 횟수가 더 많아진고 모델의 성능을 올릴 수 있다.
NeRF가 다른 모델에 비해 성능이 좋은 것을 확인할 수 있다.
참조