더 이상 tistory 블로그를 운영하지 않습니다. glanceyes.github.io에서 새롭게 시작합니다.

새소식

AI/CV

GRAF: Generative Radiance Fields for 3D-Aware Image Synthesis

  • -
이 글은 아직 완성이 되지 않았으며, 곧 마무리할 예정이므로 양해 바랍니다.

 

이번 리뷰에서는 NeRF와 GAN의 특징을 결합시킨 GRAF(Generative Radiance Fields for 3D-Aware Image Synthesis) 논문에 관해 살펴보고자 한다. 2020년 NeRF가 2D image로부터 새로운 viewing direction에서 바라 본 이미지를 생성할 수 있는 novel view synthesis에서 괄목할 만한 결과를 보였고, 이후 여러 연구자들에 의해 NeRF에서 파생된 다양한 모델들이 제안되었다. GRAF도 그중 하나에 속하며, NeRF에서 단순히 MLP를 사용하여 radiance field를 학습하는 방법에서 더 발전시켜 adversarial network를 통해 generator가 좀 더 visual fidelity가 높은 이미지를 생성하면서도 shape와 appearance를 control 하여 다양한 이미지를 생성할 수 있는 모델이다. 개인적으로 이 GRAF 모델을 한 줄로 요약하면 'NeRF + HoloGAN의 발전형'이라고 생각하는데, 그래서 이를 공부하기 전에 preliminary로서 먼저 NeRF와 HoloGAN 모델에 관한 내용을 알고 있는 것이 권장된다. 이전에 이 모델에 관해 자세히 서술한 적이 있으므로 아래 link의 글을 참고해보는 걸 추천한다.

 

 

NeRF: 2D 이미지를 3D 이미지로 Reconstruction하여 Novel View Synthesis이 가능한 Neural Radiance Fields

들어가기 전에 어떤 대상의 2D 이미지를 가지고 3D 이미지로 reconsturction하여 새로운 각도에서 본 이미지를 얻는 novel view synthesis를 수행하기 위한 방법이 꾸준히 연구되어 왔다. 그중에서 volumetric

glanceyes.com

 

 

 

HoloGAN: Natural 이미지로부터 3D representation에 관해 unsupervised learning 할 수 있는 생성 모델

이제까지의 GAN(Generative Adversarial Model)은 2D 이미지로부터 3D representation을 학습하여 같은 content의 새로운 이미지를 생성하기 위해 학습 시 데이터 각각의 이미지마다 촬영한 각도(pose) 등 부가적인

glanceyes.com

 

 

 

Contribution

 

 

 

Background

 

논문 연구 당시 이전의 GAN 모델들은 high-resolution 이미지들을 생성하는 데 있어서 인상적인 결과를 보였으나, 그러한 state-of-the-art 모델들은 3D shape와 viewpoint를 포함하여 기저에 존재하는 생성 요소(generative factor)들을 적절히 disentangle 하는 데 어려움을 겪어 왔다. 즉, 우리가 같은 content에 관해 viewpoint만 변경했을 때 나오는 이미지를 생성하려고 했는데, 모델이 학습한 latent space에서 content의 shape와 viewpoint가 서로 얽혀 있어서 어떤 한 요소만을 제대로 control 하기 어려워 content shape도 같이 변경된 이미지가 출력될 수 있다. 그러나 인간은 머릿속에서 content의 shape와 viewpoint를 별개로 구분하여 같은 content를 지니면서 새로운 viewpoint에서 바라본 이미지를 어렵지 않게 생성할 수 있는 능력을 지니고 있는데, 이제까지 2D GAN에서는 그러한 능력이 부족했다는 것이다.

 

[출처] Figure 1, GRAF: Generative Radiance Fields for 3D-Aware Image Synthesis, Katja Schwarz

 

그래서 일반적으로 3D-aware image synthesis를 수행하기 위한 방법으로서 scene의 3D representation을 학습하여 이를 differentiable rendering을 통해 어떤 새로운 view point의 2D 이미지로 explicit 하게 mapping 시킬 수 있으며, 이 경우 2D GAN보다는 scene content와 viewpoint에 관해 좀 더 잘 control 할 수 있게 된다. 그러면 이러한 접근법에서 그 content의 3D representation을 어떻게 잘 학습하냐가 관건일 텐데, 그러한 예시로 전체 3D object를 나타내는 voxel-grid를 사용하거나, 아니면 intermediate 3D feature처럼 좀 단순화된 벡터 형태를 3D representation으로 학습하는 방법들이 존재한다. 그러나 전자와 같은 voxel-based representation은 많은 메모리를 필요로 하는 이유로 low resolution으로 제한되거나 visible artefact를 생성할 가능성이 있고, 후자처럼 intermediate 3D feature를 사용하면 추상적인 feature를 RGB로 decoding 해야 하므로 그러한 3D feature를 2D image로 mapping 하는 과정도 학습해야 한다. 그러나 2D image로의 mapping(소위 말해 2D로 projection 하는 과정)도 학습되는 과정 안에서 요소들이 entangled 되면서 저해상도에서는 좋을지 몰라도 결과적으로 고해상도의 이미지를 생성하는 데 있어서 일관적이지 않은 결과를 보이게 된다. 후자와 같은 접근법을 사용한 대표적인 모델이 이전에 리뷰했던 HoloGAN인데, 이 GRAF 논문에서는 HoloGAN에서 사용되었던 방법의 한계를 지적하고 있다. HoloGAN에 관한 자세한 설명은 앞에 link로 첨부했던 글을 참고하는 걸 추천한다.

 

이 논문에서는 그러한 딜레마를 해결하기 위해 NeRF에서 사용한 radiance field를 차용하여 이를 응용한 conditional radiance field를 사용했다. 구체적으로 GRAF의 contribution을 서술하면 크게 두 가지로 요약할 수 있다.

 

1. Radiance field를 사용하여 unposed image로부터 고해상도의 3D-aware image를 생성할 수 있는 generative model이다. 또한 그러한 생성 과정에서 object의 shape와 appearance를 수정할 수 있다.

2. Patch-based discriminator를 통해 전체 이미지가 아닌 이미지의 일부분을 다양한 스케일로 샘플링해서 generator가 생성한 이미지 patch를 분별하는 방법을 사용한다. 이러한 결정이 high-resolution의 generative radiance field를 효율적으로 학습하는 데 도움이 된다.

 

 

 

Related Work

 

Image Synthesis

 

이전까지의 GAN 모델들은 실제 사진으로 찍힌 것처럼 보이는 이미지를 생성하는 데 있어서는 괄목할 만한 결과를 보였지만 이러한 모델들은 가장 중요한 점을 간과했는데, 바로 모든 2D image는 3D world을 projection 한 결과라는 점이다. 이는 HoloGAN 논문의 저자도 강조하여 지적한 부분이다. 그래서 GRAF 논문의 저자도 이러한 점을 고려하여 3D representation 자체를 생성하고 이를 2D image로 변환하는 과정을 모델링했다. 대신 GRAF에서는 3D representation를 NeRF에서처럼 radiance field로 학습하는 방식으로 구현했고, 2D 이미지에서 어떻게 보일지를 구하는 과정도 projection이 아니라 NeRF에서처럼 volumetric rendering을 사용했다.

 

 

3D-Aware Image Synthesis

 

모델 학습 기반의 novel view synthesis는 NeRF를 비롯한 여러 논문에서 심도 있게 다뤄왔지만, 이러한 방법들은 오직 '동일한' object에 관해 새로운 viewpoint에서 바라 본 이미지를 생성하는 데 그쳤다. 몇 가지 연구들에서는 이를 해결하고자 하나의 network가 '서로 다른' object에 관한 novel view synthesis를 생성할 수 있는 방법을 제시했으나, condition으로 주어지지 않은 random sample에 관한 full probabilistic generative model를 만들지는 못했다. 반면에, 저자는 GRAF에서 unposed image로부터 3D-aware radiance field를 학습하는 generative model을 통해 새로운 object에 관해서도 다양한 각도에서 바라 본 이미지를 생성할 수 있다고 말한다.

몇몇 방법들은 3D supervision을 필요로 하거나 학습 데이터에 관한 3D information을 input으로 주는 것을 가정하고 있다. 특히, Texture Fields는 새로운 texture를 만드는 데 있어서 특별한 3D shape로 제약되도록 요구되는데, 이는 결과적으로 3D shape를 input으로 주는 것을 필요로 한다. 그러나 GRAF에서는 다른 input을 필요로 하지 않고 오직 2D image 하나로부터 shape와 texture(appearance)를 학습할 수 있는 generative model이라고 말한다. 이를 사용한 대표적인 두 가지 방법이 PlatonicGAN과 HoloGAN이다. 그러나 전자는 voxel-based representation을 학습해서 메모리를 많이 요구할 뿐만이 아니라 고해상도에서는 image synthesis가 어려운데, GRAF에서는 continuous representation을 사용하여 임의의 해상도에서도 이미지를 rendering 할 수 있다고 말한다. 또한 후자는 저차원의 3D feature를 사용하여 이를 2D로 projection 하는 과정을 학습하지만, GRAF 논문 저자가 실험적으로 보이기로는 이렇게 projection 자체를 학습하는 게 특히 고해상도의 이미지를 생성하는 과정에서 latent factor들이 entangled 되게 만들 수 있다고 한다. GRAF에서는 radiance field를 바탕으로 differentiable volume rendering technique(NeRF에서 사용한 volumetric rendering 방법)을 통해 projection 과정을 학습할 필요를 없앴다.

 

 

Implicit Representation

 

현재 글 작성 시점도 그렇고 논문 당시에도 3D geometry에 관한 implicit representation을 사용하는 것이 학습 기반의 3D reconstruction에서 인기를 얻고 있다. 이전에 주로 사용되었던 voxel-based 또는 mesh-based 방법들에 비해 implicit representation은 공간 자체를 discretize 하지 않으면서 위상적으로도 제한되지 않는다는 장점이 있다. NeRF에서는 scene을 neural radiance field로 표현하는 방법을 제안함으로써 multi-view에 일관적이면서도 좀 더 복잡한 대상에 관한 novel-view synthesis도 수행할 수 있도록 했다. 그러나 NeRF에서는 오직 '하나'의 이미지에 관해서만 neural network가 학습을 하고, 학습에 있어서 여러 각도에서 찍은 2D 이미지가 요구되면서 동시에 그러한 각각의 이미지에 대하여 neural network가 반복하여 재학습 되어야 하는 단점이 있다. GRAF에서는 NeRF에서 영감을 얻으면서 NeRF가 지니고 있는 단점을 극복하고자 representation에 관한 conditional variant를 이용했다.

 

 

 

Preliminary

 

Neural Radiance Fields

 

NeRF에서 주구장창 나왔던 내용이지만 워낙 중요하므로 다시 정리할 필요가 있어 보인다. Radiance field는 3D location과 2D viewing direction에서 RGB color로의 continuous mapping을 의미한다. 좀 더 구체적으로 설명하자면, 3차원 공간을 지나는 어떤 한 ray 위의 한 점인 3D location $\mathbf{x}$와 그 ray가 뻗어나가는 viewing direction $\mathbf{d}$를 input으로 받아서 positional encoding $\gamma(\cdot)$를 통해 이를 고차원의 feature representation인 $\gamma(\mathbf{x})$와 $\gamma(\mathbf{d})$로 보낸 후, 이를 MLP에 통과시켜서 그 3D location의 color value인 $\mathbf{c}$와 volume density인 $\sigma$를 output으로 내보내는 것이다. Positional encoding을 수행하는 이유는 좀 더 high frequency의 정보를 MLP가 학습할 수 있도록 하기 위함인데, 이는 "Fourier Feautres Let Networks Learn High Frequency Functions in Low Dimensional Domains" 논문에 자세히 소개되어 있다. 글 작성 시점 기준으로 금주 세미나에서 이 논문과 함께 Neural Tangent Kernel에 관해 발표자로서 설명하기로 했는데, 그 발표자료를 준비하면서 블로그에 한 번 글로도 정리해보려고 한다.

 

 

Volume Rendering

 

NeRF에서도 volumetric rendering equation을 통해 ray 위에서 샘플링한 모든 점의 color와 density 정보를 통해 최종적인 ray의 color를 구했다. GRAF에서도 volume rendering 과정을 그대로 사용했으며, 식의 표현만 약간 다를 뿐이지 그 내용을 비교하면 NeRF와 동일한 내용이다. 다만 GRAF 논문에서는 volume rendering에서 사용하는 sampling을 어떻게 수행했는지는 적혀 있지 않는 것으로 보인다.

 

 


Model

 

 

Contents

글 주소를 복사했습니다

부족한 글 끝까지 읽어주셔서 감사합니다.
보충할 내용이 있으면 언제든지 댓글 남겨주세요.