https://arxiv.org/abs/1812.04948
Conference on Computer Vision and Pattern Recognition (CVPR), 2019
StyleGAN은 NVIDIA팀이 발표한 논문이고, GAN에 굉장히 큰 영향을 미친 논문이다.
1. Introduction
GAN을 기반으로 하는 이미지 합성 기술은 PGGAN과 같은 모델을 포함해서, 지속적으로 발전해 왔다. 하지만, Generator들을 통해서 이미지를 합성하는 과정은 black box으로 여기어 지고, 합성하고자 하는 이미지의 attribute 또한 조절하기 어렵다는 한계가 있다.
StyleGAN은 기존 모델들에서 나타나는 문제들을 해결하기 위해서, Style Transfer를 기반으로 하는 Generator를 설계하였다. 이렇게, 아키텍쳐를 개선하면, 생성된 이미지의 stochastic variation (e.g. freckles, hair)으로부터 high-level attributes (e.g. pose, identity)을 자동으로 분리할 수 있게 된다. StyleGAN은 Discriminator와 loss function은 수정하지 않는다.
즉, 이 논문의 주요 Contribution들을 소개하면 다음과 같다.
1. PGGAN 아키텍쳐의 성능을 Generator 개선을 통해서 전반적으로 향상시켰다.
2. Disentanglement 특성을 향상시켰고, Interpolation quality와 disentanglement를 측정하기 위해서 2가지 지표를 도입하였다.
3. FFHQ라는 고해상도 얼굴 데이터 셋을 발표하였다.
2. PGGAN
일단 PGGAN의 baseline을 그대로 사용했기 때문에, 저화질에서 시작하면서 점점 레이어를 쌓아가며 고화질의 이미지를 생성해내는 구조를 그대로 사용하게 된다. 즉, 4 * 4의 레이어에서부터 시작해서 1024 * 1024의 고해상도 이미지를 생성해내게 된다.
StyleGAN 저자들은 PGGAN의 progressive layer를 적절하게 사용하면, 이미지의 다양한 attribute을 control할 수 있다고 밝혀냈다.
PGGAN은 한번에 전체 네트워크를 구상하는 것이 아니라, 학습 과정에서 레이어를 추가해나가면서 이미지의 해상도를 높여나가게 된다.
이렇게 네트워크를 구성하면, 한번에 전체 네트워크를 만드는 것보다 안정적으로 architecture를 만들 수 있게 된다. 하지만, PGGAN의 단점이 하나 있는데, 이미지의 속성들을 분리시킬 수 없어서, 하나의 속성을 개선하기 위해 다른 속성들까지 개입이 되는 문제가 발생하게 된다는 것이다. 즉, 이미지의 속성을 제어하기 어렵다는 것이다.
StyleGAN은 PGGAN의 이러한 문제들을 개선한 네트워크이다.
3. Style-based Generator
StyleGAN은 어떻게 작동될까??
StyleGAN은 PGGAN의 업그레이드 모델이라고 할 수 있다.
보통 GAN의 아키텍쳐를 개선한다고 하면, Discriminator를 개선하는 방식으로 개선을 많이 했는데, 이 논문은 Generator를 개선해서 GAN의 성능을 개선하는 방식을 채택하고 있다. StyleGAN의 Generator는 크게 3가지 정도를 추가했는데, 일단 Mapping Network를 추가하였고, Style Module을 도입하였고, Stochastic Variation을 더하였다.
3.1 Mapping Network
전통적인 Generator에서는 input latent vector z로부터 직접 이미지를 생성해냈었다. 근데, StyleGAN에서는 input latent vector z를 mapping network에 통과시켜서 style vector w로 변환해서, 이미지를 생성하게 된다.
이렇게 하는 이유는, 전통적인 Generator를 사용했을 때, (a)와 같이, 고정된 input distribution에 학습 이미지의 distribution을 맞추게 되고, 결과적으로 (b)와 같이 시각적 특징들이 latent space에 non-linear하게 매핑되게 된다. Non-linear하게 매핑되면, input vector로 이미지의 시각적 특징들을 조절하기 어려워지게 되는 단점이 있다.
StyleGAN처럼 Mapping Network를 사용하게 되면, latent vector w가 (a)의 고정된 distribution에 맞출 필요가 없기 때문에, 학습 데이터가 기존보다 유동적인 공간에 linear하게 매핑될 수 있고, w를 사용해서 이미지의 시각적 속성들을 조절하기가 기존보다 쉬워지게 된다.
(Mapping Network의 Fully Connected Layer는 Leaky ReLU Activation Function을 가지고 있으며, non-linear하다. Non-linear mapping을 통해서 latent space를 disentangle을 하고, StyleGAN의 latent space상의 영향력을 확대해서 좋은 결과를 나타낼 수 있도록 한다.)
3.2 Style Modules
Mapping Network로 latent vector w를 생성하게 되면, w는 Adaptive Instance Normalization 과정을 컨트롤하게 된다. AdaIN은 생성할 이미지에 style 정보를 입힐 수 있는 normalization 방식인데, 레이어를 거칠 때마다 여러 가지의 스타일 정보가 입혀지면서 이미지가 생성되게 된다.
AdaIN은 학습 데이터에서 한 번도 본 적 없는 스타일로 변환하기 위해서, 따로 학습시킬 파라미터를 필요로 하지 않는다. feature map의 output을 정규분포 형식으로 정규화시키고, style vector w를 bias의 형태로 더하면서 구하게 된다. 수식은 다음과 같다.
네트워크 구조를 기준으로 자세하게 설명하면, Mapping Network에서 style vector w를 뽑아낸 다음에, 곧바로 style을 입히기에는 shape이 안 맞기 때문에, affine transformation를 통해 AdaIN에 들어가는 style을 만들어내게 된다.
Generator는 4*4*512의 constant tensor를 convolution과 upsampling을 통해서 1024*1024*3의 이미지로 변환하고, AdaIN으로 style을 입히게 된다.
Layer마다 style을 normalizae한 뒤에 style을 입히게 되기 때문에, 특정한 layer에서 입혀진 style은 각각의 layer에서만 영향을 준다. 그래서 layer의 style이 특정한 visual attribute만 조절하는 것이 용이하게 되고, Style을 분리하는 것도 용이해진다.
(보통 Neural Network에서 각 layer를 지나면서 scale이나 variance가 변화하게 되면 학습이 불안정해지는데, 이를 방지하기 위해서 StyleGAN에서는 AdaIN을 사용하게 된다.)
3.3 Stochastic Variation
StyleGAN은 Stochastic Variation을 처리할 수 있도록 네트워크를 구성한다. 보통 우리가 사진을 촬영할 때, 매번 같은 모습이 아니고, 바람때문에 머리카락의 배치가 평소와 다를 수 있고, 주근깨가 생겼을 수도 있는 것처럼 이미지에 확률적인 측면이 있다. 이걸 Stochastic Variation이라고 하고, 이러한 확률적인 요소는 이미지의 디테일을 한층더 살려줄 수 있고, 사실적으로 보이게 할 수 있다.
그래서 이미지를 사실적으로 만들기 위해서 StyleGAN은 synthesis network의 각 block마다 noise를 추가하게 된다. Noise는 확률적인 부분에만 영향을 주기 때문에, 인종과 자세 같은 중요한 요소에는 영향을 주지는 않는다.
이렇게 noise를 따로 추가하게 되면, Input latent vector가 이미지의 중요한 속성들을 표현하는 데에만 집중할 수 있고, 이러한 속성들을 조절하는 것도 용이해지게 될 수 있다.
(a)는 모든 레이어에 noise를 추가해서 생성된 이미지이고, (b)는 noise를 아예 추가하지 않는 이미지이고, (c)는 Fine layer, 64*64 – 1024*1024에 해당하는 레이어에만 Noise를 추가한 이미지이고, (d)는 coarse layer, 4*4에서 32*32에 해당하는 레이어에만 noise를 추가한 이미지인데, (a)가 가장 자연스럽게 나타난 이미지라는 걸 확인할 수 있다.
(coarse -> 큰 크기의 머리 곱슬거림, 배경)
(fine -> 세밀한 크기의 머리 곱슬거림, 배경)
4. Experiments
StyleGAN은 두 개의 데이터셋에 대해서 SOTA를 기록했는데, GAN의 성능을 측정할 때 사용하는 FID를 사용해서 성능 측정을 했다.
FID는 GAN으로 생성된 이미지랑 실제 생성해야 하는 클래스 데이터와의 거리를 계산하는 지표인데, 값이 작을수록 성능이 좋다.
A는 PGGAN만을 사용했을 때의 성능이고, B는 StyleGAN에서 Upsampling 대신에 사용된 Bilinear Sampling을 추가했을 때의 성능이고, C는 Mapping Network와 AdaIN을 추가했을 때의 성능이고, D는 input을 더 이상 받지 못하도록 generator를 변경하는 과정인데, synthesis 과정을 실행하기 위한 과정이라고 이해하시면 될 것 같다.
E는 noise를 추가했을 때의 성능이고, F는 Style Mixing을 사용했을 때의 성능이다. 보다시피 이 논문에서 제안한 요소들이 많이 들어갈 수록 성능이 좋아지는 것을 확인할 수 있다.
4.1 Style Mixing
앞의 표에서 F에 해당됐던 Style Mixing에 대해서 설명을 자세히 해보겠다. 아까 언급한 것과 같이, Mapping Network으로부터 style vector w를 생성해내서, 모든 layer에 style을 표현하도록 학습시키면, 여러 layer에 대한 style이 겹치면서 상관관계가 생겨난다는 문제점이 발생한다. 이러한 문제를 해결하기 위해서 논문에서 Style Mixing을 실험하게 된다.
먼저 input latent vector로부터 style vector w1, w2를 생성해내게 된다. 그리고 crossover point를 결정하게 되는데, crossover 이전에는 w1으로 synthesis network를 학습시키다가, crossover 포인트 이후부터는 w2로 학습시키는 기법이다. Style vector가 교체되는 layer를 매번 무작위로 결정해줌으로써, 연속한 두개의 layer의 스타일이 겹치는 현상을 방지할 수 있고, 두 이미지의 스타일을 섞을 수도 있게 된다. (예를 들어 w1은 4 x 4를 생성할 때 사용하고, w2는 8 x 8를 생성할 때 사용)
이 논문에서는 Mixing Regularization의 비율을 90%로 두고 실험을 했고, 논문에서는 Source B에 3가지 해상도를 넣어서 실험을 했는데, 저해상도 (Coarse) layer에서 입력한 스타일의 영향이 큰 경향이 있다. 저해상도에서 입력한 스타일이 얼굴의 모양, 피부색, 성별, 연령을 만들게 되고, 고해상도에서 입힌 스타일은 배경과 머리색에만 영향을 준 것을 볼 수 있다.
4.2 Disentanglement Studies
마지막으로, 이 논문에서는 Disentanglement와 관련해서 두 가지의 성능 측정 지표를 제안한다.
먼저, Path Length는 두 개의 vector를 보간 (interpolation)할 때, 얼마나 급격하게 이미지의 특징이 변하는지를 평가하는 지표이다. Feature들이 잘 disentangle되어 있다고 하면, 보간할때 이미지의 특징이 급격하게 바뀌지 않게 되는데, Path Length를 측정해서, 각각의 feature들이 얼마나 잘 선형적으로 분리되어 있는지를 평가할 수 있다.
두번째로 Linear Separability는 latent space에서 각각의 Latent vector가 나타내는 attribute들이 얼마나 선형적으로 잘 분류될 수 있는지를 평가한다.
StyleGAN을 사용하면서 매핑 네트워크를 사용할 때 (F = StyleGAN 의미, 8 = Mapping Network의 FC layer 개수) FID와 두가지의 성능지표에서도 좋은 평가를 받을 수 있다. 또한, W 공간에서 interpolation과 style을 적용하는 것이 Z 공간에서 하는 것보다 이상적인 것을 위의 표로부터 확인할 수 있다.