Want to learn more about Lunit AI Solutions? Let’s connect! Contact Us
Back to List

StyleGAN: A Style-Based Generator Architecture for GANs

avatar

Feb 25, 2019 — 10 min read

Hyeonseob Nam

이 포스팅은 루닛 블로그에 2019년 2월에 올렸던 포스트입니다. 수식의 가독성을 위해 원문을 참조하시는 것을 추천드립니다.



원문 링크: https://blog.lunit.io/2019/02/25/a-style-based-generator-architecture-for-generative-adversarial-networks/






본 포스트는 최근 NVIDIA에서 발표하여 놀라운 성능으로 화제가 된 StyleGAN에 대해 소개합니다.



그림 1. StyleGAN으로 생성된 이미지 (from https://medium.com)



Introduction


최근 Generative Adversarial Network (GAN) 를 기반으로 한 이미지 합성 기술은 BEGANPGGAN 등을 거치며 눈부신 발전을 거듭하고 있습니다. 그러나 Generator를 통한 이미지 합성 과정은 여전히 block box로 여겨지며, 이로 인해 합성되는 이미지의 attribute (성별, 연령, 헤어스타일 등) 을 조절하기가 매우 어렵다는 한계가 있습니다. 또한 생성되는 이미지 퀄리티가 불안정하여 실제로는 논문에 리포트된 것과 달리 부자연스러운 이미지도 다수 생성됩니다.



그림 2. PGGAN으로 생성된 이미지 예시 (from video presentation)



이 논문은 이러한 문제를 해결하기위해 Style Transfer에 기반한 새로운 generator 구조인 StyleGAN을 제안합니다. StyleGAN은 이미지를 style의 조합으로 보고, generator의 각 layer 마다 style 정보를 입히는 방식으로 이미지를 합성합니다. 이 때 각 layer에서 추가되는 style은 이미지의 coarse feature (성별, 포즈 등) 부터 fine detail (머리색, 피부톤 등) 까지 각기 다른 level의 visual attribute를 조절할 수 있습니다. 뿐만 아니라 StyleGAN은 기존의 방법들보다 훨씬 안정적이고 높은 퀄리티의 이미지를 생성하게 됩니다.






Style-Based Generator


논문에서 제시하는 generator의 구조는 아래와 같습니다.



그림 3. Style-Based Generator




기존의 generator (a)는 input latent vector (z)가 직접 convolution, upsampling 등을 거쳐 이미지로 변환되는 구조입니다. 그러나 style-based generator (b) 의 경우, z가 fully-connected layer로 구성된 mapping network을 거쳐 intermediate latent vector (w)로 먼저 변환됩니다. 그리고 w는 constant tensor가 이미지로 변환되는 과정에서 스타일을 입히는 역할을 수행함으로써 다양한 스타일의 이미지를 만들어낼 수 있습니다.






Mapping Network


StyleGAN의 가장 큰 특징은 input vector (z)로부터 직접 이미지를 생성하는 것이 아니라, 아래와 같이 mapping network를 거쳐 intermediate vector (w)로 먼저 변환한 후 이미지를 생성한다는 것입니다.



그림 4. Mapping Network (from Rani Horev’s blog)





기존의 방법에서처럼 input vector로부터 이미지를 직접 생성할 경우, 고정된 input distribution (예: Gaussion)에 학습 이미지의 distribution (그림 5(a))을 맞춰야 한다는 한계가 있습니다. 이로 인해 visual attribute가 input space에 non-linear하게 mapping되고 (그림5(b)), input vector로 visual attribute를 조절하기가 매우 어려워집니다. 예를 들어, 학습 이미지에 검은 머리의 사람이 대부분일 경우 input space의 대부분의 영역이 검은 머리를 표현하게되고, input vector를 조절하여 머리 색을 변경하기가 어려워집니다. 그러나 mapping network를 사용할 경우 w는 고정된 distribution을 따를 필요가 없어지기 때문에, 학습 데이터를 훨씬 유동적인 공간 (intermediate latent space)에 mapping할 수 있고 w를 이용하여 visual attribute를 조절하기가 훨씬 용이해집니다 (그림 5(c)). 이러한 특징을 disentanglement라고 하며, 논문에서 이를 정량화하기 위한 두가지 measure (Perceptual path length, Linear separability)도 제시하였는데 이 포스트에서는 생략하도록 하겠습니다.




그림5. Illustration of disentanglement








Style Module


이렇게 생성된 w는 synthesis network가 이미지를 생성하는 과정에서 style을 입히는 데 사용됩니다. Synthesis network는 4x4x512 constant tensor를 convolution, upsampling을 통해 1024x1024x3 이미지로 변환시킵니다. 이 때 각 convolution layer 이후마다 Adaptive Instance Normalization (AdaIN) 을 통해 style이 입혀지며, style vector (y)는 w로부터 affine transformation 을 통해 얻어집니다.




그림 6. Generator with AdaIN (from Rani Horev’s blog)




이러한 구조는 다음과 같은 특징을 지닙니다.



  • Synthesis network의 매 layer마다 AdaIN을 통해 style을 normalize 한 후 새로운 style을 입히게 되므로, 특정 layer에서 입혀진 style은 바로 다음 convolutional layer에만 영향을 끼칩니다. 따라서 각 layer의 style이 특정한 visual attribute만 담당하는 것이 용이해집니다.

  • Style을 조정한다는 것은 이미지의 global한 정보를 통째로 조정한다는 것을 의미합니다. 이로 인해 항상 spatially-consistent한 이미지를 얻게 되고, 기존의 generator보다 훨씬 안정적으로 자연스러운 이미지를 얻을 수 있습니다.






Stochastic Variation


같은 사람에 대한 이미지라 할지라도 머리카락, 수염, 주름 등 stochastic 하다고 볼 수 있는 요소가 많이 존재하며, 이러한 요소는 이미지를 더욱 디테일하고 사실적으로 보이게 만들어줍니다. StyleGAN에서는 이를 표현하기 위해 synthesis network의 각 layer마다 random noise를 추가하였습니다 (그림 7). 이렇게 stochastic한 정보를 따로 추가해주면 더욱 사실적인 이미지를 생성하게 될 뿐 아니라, input latent vector는 이미지의 중요한 정보(성별, 인종, 헤어스타일 등)를 표현하는 데에만 집중할 수 있게 되고 이를 조절하는 것도 더욱 용이해집니다.





그림 7. Stochastic Variation (from Rani Horev’s blog)







Style Mixing


Mapping network으로부터 나온 intermediate vector w는 synthesis network의 모든 layer에 대한 style을 표현하도록 학습되는데, 이는 여러 layer에 대한 style이 correlate 되는 위험을 발생시킬 수 있습니다. 논문에서는 이러한 문제를 해결하기 위해 다음과 같은 style mixing 기법을 제시하였습니다. StyleGAN을 학습 할 때, 우선 두개의 input vector로부터 w1, w2를 만들어냅니다. 그리고 synthesis network의 초반에는 w1로 학습하다가 특정 layer 이후부터는 w2를 적용하여 학습합니다. 이 때 style이 교체되는 layer를 매번 random하게 결정해줌으로써 연속된 두 layer간의 style의 correlate 되는 현상을 방지할 수 있습니다 (dropout과 비슷한 원리). 이렇게 학습된 모델은 그림 8과 같이 각 layer가 담당하는 style이 뚜렷하게 구분되는 것을 확인할 수 있습니다.






Image for post그림 8. Destination을 합성하는 과정에서 특정 layer의 style을 source로 치환했을 때의 합성 결과. Network 초반에는 성별, 포즈 등 coarse style이 변경되며 후반에는 머리 색 등 fine stle이 변경됩니다.







Results


StyleGAN은 두 데이터셋 (CelebA-HQ, Flickr-Faces-HQ (FFHQ))에서 state-of-the-art 성능 (Frèchet inception distance (FID) score)을 기록했습니다. 뿐만 아니라 논문에서 제시한 각각의 요소들 (style mapping, constant input, adding noise, style mixing)이 성능 향상에 도움이 됨을 보였습니다.




표 1. FID scores for different designs (lower is better)




이 논문은 이미지 합성을 위해 style에 기반한 새로운 generator 구조를 제시하였고 매우 놀라운 성능 향상을 보여주었습니다. 뿐만 아니라 합성되는 이미지의 구성요소를 조정하는 것이 가능하며, 나아가 CNN에서 다양한 visual attribute를 어떻게 encoding하는지에 대한 이해도 증가에도 기여하였습니다. 또한 이 연구는 generator 구조에만 집중하였기 때문에 dicsriminator 구조나 loss function등의 변경을 통해 더욱 개선될 여지도 존재합니다. 논문에 설명되진 않았지만 이미지로부터 perceptual loss를 minimize하는 방법을 통해 latent vector를 추정해 내고 특정 visual attribute에 대한 direction으로 조정하는것도 가능하며 (Puzer’s stylegan-encoder), 그 외에도 다양한 이미지 합성 연구의 기반이 될 수 있을 것으로 기대됩니다.







Links