Paper/Neural rendering

FreeNeRF: Improving Few-shot Neural Rendering with Free Frequency Regularization

침닦는수건 2023. 7. 6. 18:11
반응형

내 맘대로 Introduction

Free라고 해서 뭐가 Free인가 했더니 Frequency의 Fre-e 였다. 요점은 frequency range를 제한하고 카메라에 가까운 위치, 즉, 카메라 코 앞 영역에서 density 값을 높게 추정하지 않도록 패널티를 주는 것이다. 결과적으로 학습 효율성이 엄청나게 증대되기 때문에 적은 이미지로도 학습이 가능한 NeRF가 된다고 한다. 또, 힘주어 강조하는 점은 구현 상으로 한 줄 추가하는 것 뿐이라는 사실이다. 

 

메모하며 읽기


(preliminaries 는 NeRF 수식 설명이므로 생략)
NeRF를 적은 수의 이미지로 학습시켜보면 overfitting이 쉽게 되어 실패하는 경우가 많은데, 그 원인을 찾아보면 high frequency encoding값들이었다. 

(다른 논문에서도 그렇지만 학습 초기에 low frequency에 집중하도록 하는게 좋다고 하는데 같은 맥락인 듯. 심지어 적은 수 이미지인데 high frequency가 그대로 있으면 학습이 더 안된다는 뜻)


실험적으로도 증명해보았는데, mipNeRF에서 frequency 별로 positional encoding 값에 마스크를 씌워서 학습시켰을 때, low frequency만 살아있을 때 오히려 학습이 잘되고 high frequency 영역을 살렸을 때 확 떨어졌다고 한다. 

따라서 적은 이미지로 학습시킬 때는 positional encoding에서 low frequency 파트 위주로 사용해야되다는 결론을 얻을 수 있고 high frequency 파트는 학습 후반부에나 쓰는 것이 좋다고 알 수 있다.

그래서 저자들은 frequency regularization이라는 이름으로 학습 iteration이 적을 때는 positional encoding의 후반부를 죽이고, iteration이 꺼짐에 따라 positional encoding 후반부가 조금씩 살아나도록 linear mask를 곱해주었다. 

구현 상으로 곱하기 1개니까 엄청 간단하긴 하다.




또 하나 적은 수의 이미지로 학습시킬 때 문제가 구름처럼 떠있는 floater가 많다는 것인데, 이것의 원인을 분석해보면 대부분 화각이 많이 안겹치는 것이다.

즉, 이미지에서 많이 안 보인 영역이어서 네트워크가 미지의 영역으로 보고 쓰레기값으로 채워두고 마는 것이다. 

occlusion penalty는 카메라에 가까운, 카메라 코 앞 영역은 화각이 안 겹칠 확률이 높으므로 이 영역에서 sampling된 point들은 높은 density를 못 갖도록 억제하는 기능을 한다.

초반 M개의 ray sampling point를 죽이고, 나머지를 살린다. 

반응형