공돌이 공룡의 서재

[논문 리뷰] StyleGANv1 : A Style-Based Generator Architecture for Generative Adversarial Networks 본문

딥러닝/GAN

[논문 리뷰] StyleGANv1 : A Style-Based Generator Architecture for Generative Adversarial Networks

구름위의공룡 2022. 4. 17. 19:30

GAN 연구에서 한 획을 그은 논문이 아닐까...

A Style-Based Generator Architecture for Generative Adversarial Networks


1. Introduction

GAN에 관한 많은 연구에도 불구하고, 기존 연구들은 generator에는 black box로 작동하고, stochastic feature와 같은 요소가 이미지 합성 과정에서 어떻게 이뤄지는지에 대한 이해가 부족하다. 또한 latent space의 특징에 대해서도 이해가 저조하다.


style transfer 관점에서 이미지 합성 방식을 제어하는 새로운 generator 구조를 제안한다. noise와 latent space를 어떻게 다루는지가 자세히 나와있고, discriminator나 loss function에 대한 어떤 insight를 제공하는 논문은 아니다.


generator 구조에서 핵심은 input latent code가 기존의 GAN 구조와는 달리 layer 중간의 latent space에 들어간다는 것인데, 이런 구조의 장점을 entanglement 측면에서 설명하고 있다. entanglement란 feature들이 얼만큼 관련되어 얽혀있는지를 말한다. correlation과 관련이 있다. 이를 측정하기 위해 perceptual path length와 linear seperability에 대해서 설명한다.



2. Style-based generator

기존 GAN 은 latent code 가 Input layer 에만 들어왔다면, Style-GAN 에서는latent code 를 mapping network $f$를 통해 W-space 에 보낸 후, layer 중간중간에 이 $w$ 를 넣어주는 형태다. 네트워크는 8개 층의 MLP 로 구성되어 있다.

여기서 $w$ 가 layer 에 들어갈 때 AdaIN (Adaptive instance normalization) 연산을 통해 들어간다. 각 feature map 을 normalize 한 다음, 새로운 style $y=(y_s, y_b)$ 을 넣어주는 역할을 한다. (y 는 당연히 w 에서 얻을 수 있다.)


$$
AdaIN(x_i, y)= y_{s,i} \frac{x_i-\mu(x_i)}{\sigma (x_i)} + y_{b, i}
$$


내용 추가 정리

  • feature map 자기 자신에 대해 normalize 를 하면 자기 자신의 통계적 특성이 약해지게 되는데, 여기에 새로운 style 의 통계적 특성을 넣어주는 과정으로 이해했다.
  • 논문에서 $y$ 가 spatial invarint style 이라 한다. Mapping Network 구조인 MLP 가 Convolution 과 달리 이러한 특징을 갖기 때문에, $w$ 및 $y$ 또한 이러한 특징을 갖는 것으로 생각할 수 있겠다.
  • StyleGANv2 에서는 이 과정을 normalize & modulate (변조) 라고도 말한다.

Noise 또한 network 중간 중간에 들어가는 구조로, 뒤에 나오겠지만 image의 stochastic variation을 담당하고 있다. uncorrelated gaussian noise 다.

2.1 Quality of generated images

StyleGAN은 progressive GAN을 baseline으로 하고 있다. 여기서 구조를 어떻게 바꾸면서 진행했고, 그 때 성능이 어떻게 변했는지 표로 제시되어 있다. 표에 있는 수치는 FID 값이다. FID 는 ImageNet에 학습시킨 Inception V3 classifier 를 사용하는데, 각 이미지에 대한 이 feature vector의 차이를 계산한 값이다.


B 는 기존 모델을 튜닝한 것이므로 넘어가자. C 이후가 중요한데 우선 C에서 mapping network와 style 개념을 추가함으로써, 더 이상 latent code를 input layer 에 넣을 필요가 없다는 것이 확인되었다고 한다. 따라서 D에선 encoder 부분을 그냥 없애고 4x4 resolution부터 바로 시작할 수 있게 되었다.

중간중간 latent code 를 넣어주는 것이 어떤 영향을 주길래 이럴까? 라는 질문에 대한 답은 이후에 나올 style의 localization 에서 얻을 수 있다.


E는 noise를 추가함으로써 detail한 부분(stochastic variation)을 살릴 수 있었고, F에서는 mixing regularization을 사용하는데 이를 통해 style들을 decorrelate할 수 있고, 이는 더 정교한 이미지 합성 결과를 가져온다.

학습에 대한 설명은 다음과 같이 정리할 수 있다.

  • CelebA-HQ 에는 WGAN-GP 를 따르고, FFHQ 에서는 R1 regularization 을 사용한다.
  • truncation trick (=학습 데이터 분포 상 적은 수를 갖고 있는 객체에 대해서는 생성을 잘 못 하는 현상을 방지하기 위한 방법) 을 적용한다.

3. Properties of style-based generator

scale 을 점점 키우면서 다른 style 들을 넣어주기 때문에, StyleGAN 은 scale-specific modification 을 통해서 이미지 합성을 control 할 수 있다. 이는 style 의 localization 때문인데, localize된다는 것은 style의 일부분을 바꿨을 때 이미지의 특정 양상만 바뀌는 것을 말한다.


이 localization 이 가능한 이유는 AdaIN 연산에 있다. AdaIN 연산 중 normalize 로 인해 더 이상 이전에 넣어준 style 의 통계적 특성을 따르지 않게 된다. 따라서 style 은 특정 scale 에만 영향을 주는 식으로 동작하게 된다.

3.1 Style Mixing

이미지를 생성할 때, Latent code 전체를 그대로 사용하는 것이 아니라, 이를 분할하여 사용하는 것이다. 그림은 다른 분의 영상을 참고했다.

서로 다른 두 latent vector $z_1, z_2$ 를 mapping network 에 넣어서 $w_1, w_2$ 를 만든다. 처음에는 $w_1$ 에서 style 을 넣어주다가, 중간에 $w_2$ 를 넣어주는 방식이다. 언제 바꿔서 넣을지가 crossover point 라고 한다.


위 그림에서 보면, source B에 해당하는 style 을 low resolution 일 때 넣어주면 (Coarse Style) 이목구비 형태가 B 를 따라가는 반면 detail 한 부분들은 A 를 따라간다. crossover point 를 중간으로 잡으면 (Middle Style) 적절히 섞여 있음을 확인할 수 있다.


이 방법을 통해 네트워크가 인접한 style 끼리는 연관성이 있다고 판단을 내리는 것을 막을 수 있다.

더욱 scale-specific style 이 되도록, 또는 localization 을 돕도록 한다고 이해했다.

3.2 Stochastic variation

기존 GAN 모델들에서 사용한 generator의 경우, input이 input layer에만 들어가기 때문에, layer 자체에서 activation 이후 feature들을 사용해서 랜덤 난수들을 만들어야 할 필요가 있었고, 이는 네트워크 성능에 부정적인 영향을 준다. 그래서 styleGAN에서는 각 convolution 이후에 per-pixel noise를 추가하는 방식으로 이를 해결한다.


이렇게 추가한 noise는 특정 부분적인 요소에만 관여한다. 네트워크에서 어떤 부분에 noise를 넣을지에 대한 실험을 통해서, noise effect는 네트워크에서 localize된다는 것을 알아냈다. 모든 layer마다 새로운 noise가 주어지기 때문에, 이전 activation 값을 바탕으로 stochastic effect를 만들어낼 필요가 없어지기 때문이다. 이전 activation에서 만들어내는 것이 모델의 성능을 더 소모하기 때문에 학습하면서 그렇지 않은 방향으로 가게 된다. AdaIN 도 같이 생각해볼 수 있다.

3.3 Separation of global effects from stochasticity

style 과 noise 는 각각 global / local 에 영향을 주는 것이 어떻게 가능할까? 에 대한 설명이 담겨 있다.


Mapping Network 의 결과로 나온 $w$ 에서 style 을 뽑아내기 때문에, style 은 spatial invariance 한 특징도 있고, AdaIN 연산때문에 feature map 전체에 영향을 준다. (Global effect) 반면, noise 는 각 픽셀에 독립적으로 더해지는 값이다. 따라서 spatial variance 를 갖고 세부적인 요소에 영향을 주는 것이 바람직하다. (Stochastic Variation)

만약에 network가 noise로 image 전체를 다루려 한다면 spatially inconsistent decision 으로 가기 때문에, discriminator에게 penalty를 받게 된다.


4. Disentanglement study

Disentanglement란 latent space가 linear subspace로 이루어져 있는 것을 말한다. 쉽게 풀어 써보면 latent 가 서로 독립적이고, 어떤 한 feature를 latent가 linear combination으로 만들 수 있는 것이다.

하지만 기존의 연구들에서는 latent space에 대한 샘플링 분포는 training data의 분포를 따라가도록 되어 있다. 이는 disentanglement가 힘들게 만든다.


하지만 styleGAN의 generator에서는 latent space W가 어떤 고정된 분포를 따라가지 않고, mapping function $f$에 의해 결정된다. 앞서 말했듯이 이 mapping function은 FC layer로만 구성되어 있으므로, variation factor들이 더 linear하게 만들어 준다. 따라서 disentanglement 효과를 가져온다.

이 disentanglement에 대해 설명하기 위해 2가지 개념을 제시한다.

4.1 Perceptual path length

latent space vector의 interpolation을 했을 때, 양 끝점에 없는 새로운 feature가 나타난다면 이는 latent space가 entangle되어있다는 사실을 알 수 있다. 예를 들어 hair라는 latent를 조절해서 금발에서 흑발로 바꾸는 와중에, 갑자기 눈 색이 검정색으로 변한다면 이는 hair와 eye color라는 latent가 서로 얽혀있다고 볼 수 있을 것이다. 이러한 영향을 측정하기 위해, latent space 상에서 interpolation 을 수행한다.

$$
l_z = \mathbb E[\frac{1}{\epsilon^2}d(G(slerp(z_1, z_2;t) - G(slerp(z_1, z_2 ; t+\epsilon))]
$$

  • LPIP 를 이용한다. (이미지를 통과시켜 얻는 VGG 16 임베딩 벡터 차이를 이용하는 방식)
  • $slerp$ 는 spherical interpolation 이다.
  • 두 latent code 를 구 위의 각각 한 점으로 보고, latent space 상에서 연결한 어떤 선이 있다고 생각을 해보자. 이 선을 n 등분한 다음, 서로 인접한 점 2개를 골랐다고 하자. 이 두 점 모두 z1 과 z2 사이의 어떤 vector 일텐데, 이 둘을 이용해서 이미지를 만든 다음, 두 이미지에 대해 LPIP 를 적용한다.

$w$ 에 대해서도 마찬가지로 적용할 수 있다. 이 길이 값이 작을수록 latent space 의 disentanglement 가 잘 된 것으로 본다.

4.2 Linear separability

latent space가 서로 독립적인 vector들로 구분되어 있는지를 측정하는 metric이다. 방법은 다음과 같다.

총 40개의 특징을 만들어놓고, CelebA-HQ 사진들에 이런 특징들을 부여한다음, classifier 가 이 값들을 잘 맞출 수 있도록 학습한다. classifier 는 discriminator 와 비슷한 구조를 한다.


latent code $z$ 를 사용해서 20만개 이미지를 만든다. 그런 다음 생성된 이미지를 classifier 를 통해서 라벨을 얻는다 (Y) linear SVM 은 사용된 latent code $z$ 와 $w$ 로 이 라벨을 예측하도록 한다. (X) 두 예측값의 차이를 conditional entropy 로 놓고 계산한다.


이 entropy 값이 낮을수록, linear SVM 이 예측을 classifier 만큼 잘 했다고 해석할 수 있는데, 그만큼 latent code 가 linear 하게 잘 분리되었다고 볼 수 있다. 위 표에서 볼 수 있듯이, $z$ 보다 $w$ 가 더 linear 하게 잘 분리되었음을 알 수 있고 여기서 mapping network 의 역할을 한번더 확인할 수 있다.

Comments