3D Vision

[논문 Review] Putting NeRF on a Diet: Semantically Consistent Few-Shot View Synthesis

vision-cho 2024. 8. 26. 10:13

공부 정리용 블로그입니다. 미숙한 실력으로 인해 표현이나 설명에서 많은 오류가 있을 수 있으니 참고 바랍니다 :)


기본 NeRF에 이어 다른 NeRF들도 궁금해져 이번에는 DietNeRF에 대해서 알아보았다. 실험 부분에서는 크게 다룰 것이 없어 생략하겠다.

 

Introduction

DietNeRF는 few-shot learning으로 적은 이미지로 해당 scene을 구현하는 것을 목표로 한다. 기존 NeRF는 다른 이미지로부터 prior knowledge를 얻을 수 없어 few-shot에 많은 어려움이 있다. DietNeRF는 기본 픽셀별 MSE loss에 추가로 semantic consistency loss를 도입한다. 해당 loss로 추가적인 radiance field supervise가 가능하게 된다.

 

Struggles

view synthesis는 해당 scene에 대한 이미지가 적을 때 굉장히 어렵다. 기본 NeRF는 prior를 사용하지 않기 때문에 특히나 그렇다. 

Overfitting

기본 NeRF는 입력 이미지를 최대한 mimick하는 방식으로 학습된다. 입력 이미지가 많으면, 각 이미지에 오버피팅되지 안하고 positional encoding을 통해 fine-details를 묘사할 수 있다.

MSE

각 픽셀에 대해서 MSE를 적용하고 이를 평균으로 만드는 과정에서  H (height) x W (width), 총 픽셀 수로 나눈 것으로 보인다.

 

실제 MSE

3D 객체를 렌더링한 후, MSE를 적용하려면 많은 비용이 든다. 이를 해결하고자, 여기에서는 실제로 렌더링을 하지 않는다. ray를 샘플링하고 해당 ray의 final color를 MSE 에 적용하는 방식으로 진행된다.

 

그러나 입력 이미지가 적으면, positional encoding은 오버피팅을 야기할 수 있다. 또한 near-fields artifacts가 발생한다.

 

Near-fields artifacts에 대해서 조금 더 자세히 보자. 관찰된 뷰의 수가 적거나, 관찰된 뷰가 장면의 특정 부분에 집중되어 있을 때 주로 발생하는 문제이다. 물체가 가까운 거리에서 카메라가 관찰하고 있다고 하면, 각도에 영향을 많이 받게 된다. 즉, 거리가 멀면 물체의 많은 부분을 한번에 볼 수 있지만 가까이서 보면 볼 수 있는 영역이 많이 제한된다. 그래서 각도가 조금 바뀌어도 서로 다른 view에서 겹치는 부분이 적어지게 된다. 가까운 거리에서 볼 때, 생길 수 있는 문제라는 의미에서 'near-field' 가 붙지 않았을까 생각한다.

 

학습 pose 주변에서 렌더링한 결과 (top)를 보면 그럴 싸하지만, 다른 pose에서의 결과 (bottom)을 보면 부정확한 geometry 로 인해 artifacts가 확인된다. 근처 카메라로부터의 supervision이 없으면 불투명도 (opacity)는 random initialization에 민감하다.

 

Regularization

high-frequency artifacts (= spurious opacity, rapidly varing color)는 NeRF를 regularization하면 해결할 수 있다. 기존 NeRF에서 hierarchical sampling을 제거하고 positional encoding을 줄인다. initial convergence을 위해 learning rate를 조절하기도 하는 등 manually 조절한다.

 

결과물은 나름 괜찮게 나온다. 그러나 GT와 비교했을 때, high-frequency, fine details를 많이 잃는다는 문제가 있다.

MSE loss로는 어떠한 prior를 얻지 못한다는 단점을 이제 극복해야 한다.

 

Methods

pretrained 이미지 인코더로부터 prior knowledge를 얻는다.

 

Semantic consistency loss

인간은 물체를 파악할 때 semantic cues를 이용한다. 서로 다른 pose에서의 이미지의 representataion을 비교할 것이다.

 

GT이미지와 렌더링된 이미지를 각각 인코딩한 후 코사인 유사도를 이용한다. (unit vector라 설정)

 

특정 interval K를 설정한 후, 해당 시점에서만 LSC를 추가한다. LSC가 geometry 설정에는 도움이 되지만, ViT의 representation이 저차원인 이유로, fine-grained details를 잘 표현하지 못한다. 이러한 점 때문에 모든 스텝에서 LSC를 이용하는 것이 아닌 간간히 LSC를 사용한다.  Style GAN2에서 사용된 방법으로 lazy regularization이라고 한다.

 

또한, 효율성을 위해 LSC에서는 이미지를 15~20%의 ray만을 이용하여 저해상도의 이미지를 렌더링한다. 그리고 pose를 continuous distribution에서 샘플링하여 aliasing artifacts를 해결하고자 한다. 저해상도에서 주로 발생하고, 경계가 울퉁불퉁하고 이미지가 깨지는 문제점이라고 보면 된다.

 

같은 scene에 대해서는 유사도가 높고, 다른 scene에 대해서는 유사도가 낮음을 통해 CLIP ViT 임베딩의 효과성을 입증한다.