본문 바로가기

Paper Review/Generative Model

[Paper Review] pi-GAN: Periodic Implicit Generative Adversarial Networks for 3D-

안녕하세요. 최근 generative model과 neural rendering의 빠른 발전 속도로 인해 연구되고 있는 3d-aware image synthesis에서 추후 등장하는 후속 논문들의 큰 뼈대와 같은 역할을 하는 pi-GAN을 살펴보도록 하겠습니다. 3d aware image synthesis는 Stanford에서 많이 연구하는 주제로 해당 분야에서 주목을 받는 후속 논문들도 대부분 같은 저자들이 내고 있습니다. ( EG3D 등 ) pi -gan은 최근 연구되는 3d aware gan들을 읽기 위해서 근본적으로 알아야 한다고 생각하는 논문입니다.  좋은 3d aware gan의 뼈대에 대한 내용이 많아 꼼꼼히 읽어보시면 좋을 것 같습니다. 읽으시기 전에 반드시 3d aware gan 컨셉을 읽어보시기를 권장드립니다. 그럼 시작하겠습니다. :)

1. Abstract


기존의 3d aware image synthesis 연구들의 3d representation은 3d aware 함에 있어서 1. 충분한 표현력을 가지지 못했기에 image quality를 떨어뜨렸고, 2. 방법론에 따라 multi view consistent하지 못한 이미지들을 합성했습니다. pi-GAN에서는 implicit neural representation을 잘 사용해서 3d aware gan을 구성함으로써 interpretable 3d structure를 제공하면서 넓은 범주의 camera pose들에 대한 rendering을 학습하도록 해 multi view consistent 한 이미지를 합성할 수 있도록 했고, ( implicit neural representation을 잘 사용한다는 것은 StyleGAN과 NeRF를 잘 붙였다는 것으로 이해해볼 수 있을 것 같습니다) 이때 기존 3d aware gan들에서 발생했던 fine detail을 잡지 못하거나 blurry 한 결과가 만들어지는 것을 activation function을 periodic 한 SIREN으로 교체하고 추가적인 방법들을 통해 최적화해 fine detail까지 잡을 수 있도록 함으로써 sharper image를 합성해 high image qaulitiy까지 가져오도록 함으로써 기존 연구들의 한계를 개선시켰습니다. ( periodic activation function인 siren을 사용해 sharp 하고 fine detail을 잘 잡아 high quality image를 만들어냈다는 것도 저자들이 강조하고 싶은 부분이기에 논문의 제목에 periodic이 붙어있다고 이해하면 될 것 같습니다. )

2. Method


pi-GAN은 앞서도 이야기했듯 StyleGAN과 NeRF를 합쳐 3d aware image synthesis를 하도록 하는 구조를 가지고 있습니다. 즉, 크게 보자면 다음과 같은 NeRF의 구조를 Generator에서 사용해주고 있고 전체적으로는 GAN의 구조를 가집니다. 3d aware gan의 컨셉에서 이야기했던 이러한 큰 구조의 토대는 GRAF에서 제시되었습니다. pi-GAN에서는 이를 훨씬 깔끔하고 정돈된 형태로 제시하면서, StyleGAN까지 더해준 깔끔한 baseline을 제시합니다. 3d aware gan도 결국은 GAN입니다. 하지만, Generator에서 Neural Radiance Field가 돌아가기에 생성되는 이미지에 대한 identity정보가 따로 존재하지 않습니다. 따라서 3d aware gan에서는 생성되는 이미지의 identity를 결정해주기 위해서 input noise를 condition으로 줘야 합니다. (3d aware gan 참고 ) 특히 pi-GAN에서는 StyleGAN의 아이디어를 가져와 이러한 input noise를 mapping network를 통과시켜준 후에 Generator ( = NeRF )의 각 레이어에 condition으로 전달해주게 됩니다. 이렇게 identity를 고정하는 것입니다. 즉, pi-GAN은 이와 같은 방식으로 3d aware gan을 동작시키는 큰 구조를 가지고 있습니다.
결국 noise를 통해 생성되는 이미지의 identitiy 즉 3d volume , scene 혹은 object를 결정해주고 NeRF를 통해서 해당 identity의 특정 camera pose에서의 이미지를 만들어내도록 학습시키게 됩니다. ( 2d image들로 학습하는데 어떻게 camera pose를? 이라는 생각이 드신다면 다시 3d aware gan 을 참고하시기 바랍니다. ) 다시 정리해서 말하자면, pi-GAN은 다음과 같은 구조를 통해 radiance field의 구조를 가지는 generator를 통해 random camera pose를 주며 해당 pose에서 찍힌 이미지를 만들어내 라고 학습을 함으로써, 3d aware 한 정보를 학습하고 특정 identity에 대해서 3d aware image synthesis를 합니다. 사실 지금 압축적으로 언급한 내용이 pi-GAN의 큰 기여점입니다. 이 부분에 대해서는 3d aware gan에서 general 하게 적었지만, 대부분 pi-GAN에서 제시한 내용이 많으니 반드시 읽어보시기를 추천드리고, 지금부터는 다 안다는 가정하에 서술하도록 하겠습니다.
pi-GAN에서는 다음과 같은 구조를 가져가면서 view consistnet를 보장합니다. 또한, image qualitiy를 높이기 위해 몇 가지 추가적인 방법들을 제시합니다.

2.1. SIREN-Based Implicit Radiance Field

이전에도 GRAF와 같이 implicit Radiance Field를 사용해서 3d scene을 implicitly represent 함으로써 3d aware image synthesis를 하는 연구들이 있었습니다. 하지만, 이러한 방법들의 큰 문제점 중 하나는 blurry 하고 fine detail등과 같은 image quality가 상당히 떨어진다는 점이었습니다. 저자들은 다음과 같은 activation function을 기존의 ReLU등에서 periodic 한 function인 SIREN으로 바꿈으로써 implicit neural representation에서 이러한 문제를 해결했던 SIREN 논문의 아이디어를 가져옵니다. 기존의 NeRF에서는 positional encoding을 활용해 이러한 부분을 채웠는데, pi-GAN에서는 다음과 같이 sin function을 activation function으로 바꿈으로써 이를 해결했던 아이디어를 가져오는 것을 볼 수 있습니다. ( 사실 본 논문의 저자와 SIREN 논문의 저자가 겹치고, 논문을 붙이기 위해서 추가한 내용처럼 느껴지긴 합니다. - 추후 같은 저자들이 제시하는 EG3D 등에서는 다시 positional encoding으로 돌아가기 때문이죠 )
어쨌든 다음과 같이 기존의 linear layer뒤에 붙이던 activation function을 periodic 한 sin function으로 바꿔주는 것을 볼 수 있습니다. 수식적으로 정리하자면 다음과 같습니다. 그저 계속 sin function을 activation function으로 사용해준다 정도를 보면 됩니다.

SIREN 논문에서도 제시하듯이 기존의 ReLU보다는 더 나은 performance를 가져올 수밖에 없습니다. 이에 저자들은 다음과 같이 ablation study를 통해 결과를 제시합니다.

이렇게 정량적인 지표상에서 이득뿐만 아니라, 실제로 얻는 qualititive 한 결과도 훨씬 더 sharp 한 것을 확인할 수 있습니다.

GRAF Results - 많은 artifact가 생기고, 깔끔하지 못한 모습을 볼 수 있습니다. ( https://autonomousvision.github.io/graf/ 에서 더 많이 확인할 수 있습니다. )

2.2. Conditioning ( FILM & mapping network )

앞서도 언급했듯 pi-GAN에서는 stylegan의 구조를 그대로 가져옵니다. 당연하게도 stylegan에서 핵심이었던 mapping network를 그대로 가져와 identity의 disentanglement적인 특성을 가져옵니다. 하지만, pi-GAN에서 이러한 latent vector는 identity를 결정하기 위한 condition의 용도로 사용됩니다. 그 과정에서 이러한 condition을 stylegan에서 intermediate latent vector를 주입시켜주는 방식을 그대로 가져오게 됩니다. 즉, identity를 결정하는 input noise가 어떻게 기존의 NeRF에서 흘러가는 정보에 concatenating 되는지는 정말 다양한 방법이 존재하는데 StyleGAN처럼 많은 level의 layer에 condition을 주입해줄 것이라는 겁니다. 그런데 이 주입 방식을 StyleGAN에서는 style에 초점을 맞췄기에 AdaIN을 사용합니다. 물론, 그냥 feature map을 concat 할 수도 있겠죠.

pi-GAN 저자들은 FILM 논문의 conditioning 아이디어를 가져옵니다. (Ethan Perez, Florian Strub, Harm De Vries, Vincent Dumoulin, and Aaron Courville. Film: Visual reasoning with a general conditioning layer. In Proc. AAAI, 2018. 2, 3 ) FiLM의 구조는 간단히 featrue representation으로부터 frequency에 해당하는 감마와 phase shift에 해당하는 베타를 뽑은 뒤에 이들로 modulation을 해주는 것입니다. 즉 기존의 AdaIN과 같은 conditioned normalization layer들과 유사한 형태를 가집니다. 물론 normalization layer는 아니기에 modulation만 하면 됩니다.

이렇게 identity에 대한 정보를 주는 input noise에 대한 정보를 더 잘 반영 혹은 결합해주기 위해서 다음과 같이 mapping network와 FiLM conditioning을 사용하는 것입니다. 당연한 이야기일 수 있겠지만 그저 concatentation을 했던 것에 비해 훨씬 좋은 결과를 냈으며 특히 SIREN과 결합되었을 때 그 시너지 효과가 더욱 두드러졌습니다.

2.3. Camera Pose & Neural Rendering

3d aware gan글에서도 확인할 수 있듯 결국 3d aware gan이 동작하는 데에 Nueral Rendering을 사용하게 될 경우 기존의 NeRF와는 다르게 camera pose가 존재하지 않아 random camera pose를 전달해줌으로써 genreator가 rendering 할 이미지가 이러한 camera pose에서 찍힌 이미지야!라는 것을 설정해주고, 이렇게 학습함으로써 view consistent image synthesis를 가능하게 합니다.
저자들은 이러한 camrea pose를 training과정에서 generator에 랜덤으로 전달할 때 dataset의 pose distribution을 고려해 이러한 disribution으로부터 random smapling 하도록 했습니다. 또한, 이러한 camera pose가 존재할 수 있는 영역에 제한을 두지 않게 될 경우 camera pose가 위치할 수 있는 곳이 너무 넓어져 학습에 어려움을 겪기에 이를 일부 제한했습니다. pi-GAN에서는 3d scene을 기준으로 unit sphere를 만들고 이러한 sphere 위에서 pitch와 yaw의 범위를 dataset의 pose distribution을 고려해 설정해줌으로써 camrea pose를 샘플링할 수 있는 영역을 제한했습니다.

https://www.researchgate.net/figure/Spherical-coordinate-system-with-the-three-elementary-rotation-degrees-A-point-r-is_fig7_229100838

추가적으로 데이터셋의 pose distribution을 고려하는데, 저자들은 CelebA와 Cats는 gaussian으로 CARLA는 uniform으로 prior를 설정합니다. ( 그저, 현실의 데이터라서 gaussian, synthetic data라서 uniform으로 설정한 것 같습니다. ) 이렇게 prior를 설정해주게 되면 gaussian으로 가정한 CelebA와 Cats의 경우 아무래도 정면을 기준으로 다변량 정규분포처럼 이미지가 나올 수밖에 없습니다. 즉, 정면을 기준으로 angle을 조금 돌린 것 같은 multi view 이미지를 잘 만들어낸다는 것입니다. 하지만, pose distribution이 uniform하지 않으므로 반대편이라던가 등등은 잘 나오지 않을 것이 당연합니다. 반면에 CARLA의 경우 unifrom 하므로 뒤에서 본 view 등 다양한 pose distribution에서 잘 나오게 됩니다.

pi-GAN에서 각 데이터셋으로 rendering해낼 수 있는 view image들

2.4. Progressive Training

pi-GAN은 StyleGAN의 구조를 가져왔던 이유 중 키는 high quality iamge ( higher resolution & fine detail )이었습니다. 이를 위해서 pi-GAN에서는 StyleGAN의 progressive training을 사용합니다. discriminator의 경우 input이 어차피 image이다 보니 stylegan과 동일하게 progressvie disriminator를 사용할 수 있습니다. 하지만, generator에는 현재 NeRF가 놓여있는데 이를 어떻게 progressive trainig을 적용할 수 있을까요?

저자들은 간단하게도 처음에 Ray bundle을 만들고 sampling 하는 과정에서 더 dense 하게 sampling 합니다. 즉 ray에 해당하는 pixel의 개수가 늘어난다 = resolution을 증가시킨다 이므로 densly sampling을 통해서 progressive generator를 구성한다는 것입니다. 이렇게 progeressive growing 한 training을 하게 될 경우 다음과 같이 더 좋은 performance를 내는 것을 확인할 수 있습니다.

3. Results


저자들은 pi-GAN이 생성해내는 image들이 이전 연구들에 비해 퀄리티적으로 얼마나 우수한지를 보여주고, 3d aware gan의 목적에 맞게 unseen pose들을 얼마나 잘 생성해내는지를 통해 3d representation을 얼마나 잘 학습하고 있는지를 보여줍니다.

3.1. Qualitatiive Results & Quantitative Results

  • 생성되는 결과물들을 보면 이전보다 훨씬 sharp 하고 fine detail(teeths와 같은)들을 잘 잡고 있는 것을 볼 수 있습니다.
  • 또한, angle을 돌려가며 다양한 camera pose에서 이미지가 얼마나 view constistent한가를 확인했을 때 이전의 방법론들에서 발생하는 identity shfit( 3d information 이 identity와 entangled 되어서 발생)와 같은 것을 해결한 것을 볼 수 있습니다. 심지어 train data 분포에 잘 없는 엣지 부분까지 돌려도 충분히 잘 생성해내는 것을 확인할 수 있습니다.
  • 데이터셋에 종속적인 영향을 받아 CARLA와 같은 데이터셋을 사용했을 때 pose distribution이 더 다양한 즉, 더 큰 variations in viewpoint 한 결과를 얻을 수 있습니다. ( 물론 제한된 camera pose 영역 내에서는 기존의 학습 데이터셋에서 보지 못한 camera pose들의 wid range까지 representation 할 수 있다는 점에서 아주 우수한 결과물입니다. )

물론 정량적인 지표를 보더라도 훨씬 우수한 것을 확인할 수 있습니다.

정리하자면, 결국 pi-GAN은 fine detail도 잘 잡아내고, 3d aware information과 2d information(identity 등)을 잘 분리해 최소한의 identity shift만으로 view consistent 한 이미지를 이전의 연구들에 비해서 훨씬 잘 생성해내는 것을 확인할 수 있습니다.

3.2. Generating Approximate 3D Representations

pi-GAN이 얼마나 3d representation을 잘 학습하고 있는지를 보지 못한 camera pose들에서의 view를 생성해낸 몇 가지 결과들을 통해 보여줍니다. 동시에 NeRF의 구조를 사용함으로써 view consistent 3d structure를 학습함으로써 얻을 수 있는 Interpreting 하다는 특징까지 보여주고 있습니다.

3.2.1. Extrapolation to rare or unseen camera poses.

pi-GAN과 같은 3d aware gan은 3d structural represenatation을 학습하기에 explicit camera control을 통해 새로운 view에서의 이미지 또한 합성할 수 있습니다. 저자들은 Steep angles와 Zoom이라는 두 가지 explicit camera control을 해가며 pi-GAN의 우수한 결과물을 보여줍니다.

steep angles

물론 얼굴의 angle을 돌려가면서 extrapolation을 하게 될 경우 camera pose distribution의 edge부분인 얼굴이 엄청 많이 돌아간 부분 ( pitch, yaw camera pose space 생각 ) 등에서는 강한 visual artifact가 생기게 됩니다. 이는 앞서도 언급했듯 train dataset의 pose distribution의 어느 정도 종속적일 수밖에 없기에 발생하는 문제입니다. 위 이미지를 생성해내기 위해 학습에 사용한 CelebA데이터셋에서 face들은 주로 정면 이미지들이 많다는 imbalance가 존재하기 때문에 위와 같이 얼굴이 많이 돌아갈 경우 artifact가 생기는 것이죠. ( CARLA와 같이 uniform 한 분포를 가지고 있다면 이런 문제는 거의 발생하지 않습니다. )

또한, 대부분 학습에 사용한 이미지들이 face가 있는 곳은 tightly crop 해서 사용했음에도 불구하고 camre pose가 기존보다 더 멀거나 가까운 즉 zoom-out, zoom-in 된 이미지들도 잘 생성해낸다는 것입니다. 이는 전부 앞서 camrean pose를 랜덤 샘플링을 통해 학습함에 있어 충분히 넓은 범주에서 camera pose를 뒀기에 가능한 것입니다.

또한, 이렇게 3d representation 외에도 기존의 GAN들처럼 근본적으로 latent space가 semantically 하게 잘 움직이는지 즉, latent vector에 따라서 semantically 하게 생성되는 이미지들이 잘 바뀌는지를 확인하기 위해서 두 개의 latent code 간의 latent interpolation을 진행합니다. 결과는 다음과 같이 잘 만들어지는 것을 볼 때 pi-GAN은 오로지 gan의 관점에서도(2d에 좀 더 초점) 충분히 좋은 latent space를 가지고 있는 우수한 모델이라는 것입니다.

3.2.2. Interpreting the 3D representation

사실 여기서 말하는 Interpreting의 의미는 간단합니다. NeRF와 같은 implicit representation에서 뽑아내는 것들 중 Color값은 view-dependent 하니까 제외하고, view-independent 한 density를 생각해보면 density를 잘 예측하도록 학습된 implicit represenation이란 해당 3d 공간에서 어디에 물체가 있고 물체가 없는지 이해한 3d structure를 잘 이해하고 있다는 것입니다. 즉, 이러한 3d structrue 다르게 표현해 해당 scene에 대한 proxy shape을 잘 represent 하도록 학습되었다는 것입니다.

그렇다면 이러한 3d structure에 대한 이해를 통해 density를 활용해 marching cube algorithm( 추후 글을 작성할 수 있으나 이미 좋은 글들이 많으니 참고하기 바랍니다. )을 통해 surface mesh를 생성할 수 있게 됩니다. 즉 다음과 같은 3d structure를 잘 이해하고 있다는 것을 marching cube algorithm을 통해 surface mesh를 생성함으로써 visualization 할 수 있다는 것입니다.

Comment

개인적인 의견을 적자면, 기존의 3d aware gan의 좋은 토대를 제공하기 위해 neural rendering, generative model 등의 각 분야의 좋은 방법론들을 가져와서 잘 합쳤다는 점과 이러한 구조가 이후에도 계속 활용된다는 점에서 좋은 논문입니다. ( 해당 부분은 3d aware gan 통해 이해하는 게 더 좋아 보입니다. ) 하지만, 조금은 논문을 붙이기 위해 저자들이 이전에 적었던 논문인 SIREN을 사용하거나 등등 같은 저자들이 이후에 적는 EG3D와 같은 논문들에서 다시 사라지는 부분들이 조금 아쉬웠습니다. 필자는 3d aware gan이 중요하고 본 게시글의 혹은 논문의 Results를 잘 보는 것이 Methods를 보는 것보다 훨씬 중요하다고 생각합니다.