[Paper Review] PGGAN : Progressive Growing of GANs for Improved Quality, Stability, and Variation

Date:     Updated:

카테고리:

태그:

Main Reference:
- PGGAN Paper


🚀 Introduction

최근 주목받고 있는 생성모델들의 장단점은 다음과 같다.

  • Autoregressive model (ex. Pixel CNN) : produce sharp image / slow to evaluate / no latent space
  • VAE : easy to train / produce blurry image
  • GAN : produce sharp image / unstable training / low resolution & limited variation

특히 GAN의 경우 몇 가지 문제가 존재한다. 먼저, Generator는 KL-Divergence를 이용해 training distribution과 generated distribution을 같아지게 하는 것이 목적이다. 이때 두 분포의 겹치는 부분이 적다면(학습 초반) graidnet가 랜덤한 방향을 가리키게 된다. 최근에는 KL-Divergence 대신 least-square, absolute deviation, 또는 Wasserstein distance를 이용해 문제를 해결한다. 본 논문의 경우 Wasserstein loss를 조금 개량해서 사용하였다. 뿐만 아니라 GAN의 경우 High resolution 이미지를 생성하기가 어렵다. 그 이유는 high resolution으로 갈수록 training image와 generated image 사이의 거리가 멀어지기 때문이다. 이런 경우 gradient가 크게크게 움직이므로 안정적으로 학습하기가 어려워진다. 또한 resolution이 커지면 메모리 이슈때문에 batch size가 작아지고(stable한 학습을 위해서도 낮은 batch size가 유리), 학습이 오래 걸리게 된다. 본 논문의 경우 Generator와 Discriminator 모두 progressive하게 학습하여 학습 속도와 생성된 이미지의 퀄리티를 모두 향상시켰다.


🚀 Progressive Growing of GANs

1

PGGAN의 핵심 아이디어는 4x4 low resolution으로 시작해 high resolution 디테일들을 생성하는 layer들을 추가해주는 것이다. 이런 점진적인 방식은 동시에 모든 스케일을 학습하지 않고, 먼저 large-scale sturucture를 학습한 뒤 디테일들을 학습하게 된다.

2

이때 새로운 layer는 자연스러운 fade-in 방식으로 추가해준다. 위 방식은 기존의 잘 훈련된 row resolution layer가 갑자기 큰 충격을 받는 것을 방지해줌으로써 훈련을 안정적으로 할 수 있게 해준다.
이러한 progressive learining은 몇 가지 장점이 존재한다. 우선 초기의 row resolution 이미지에서는 클래스 정보다 모드의 갯수가 적기 때문에 이미지 생성이 안정적이다(4x4 크기의 이미지 분포는 뭉쳐져있음). 그 다음 resolution을 조금씩 증가시켜 디테일들을 추가해주는 방식이기 때문에, 기존 GAN처럼 latent에서 바로 가는 매핑보다 훨씬 안정적이다. 이러한 방식으로 1024x1024라는 전례 없는 해상도의 이미지를 생성할 수 있게 되었다. 뿐만 아니라 학습 속도도 2배~6배까지 단축되었다.


🚀 Increasing Variation Using Minibatch Standard Deviation

3

GAN은 training data의 subset만 생성하는 경향이 있다(mode collapse). PGGAN에서는 Slimans가 제안한 “minibatch discrimanation”을 사용했다. 이 방법은 개별적인 이미지뿐만 아니라 mini-batch 안에서 feature statistic을 계산한다. 해당 연산을 담당하는 layer는 여러 실험 결과 Discriminator 맨 끝단에 추가해주는 것이 가장 좋았다. 계산 방법은 mini-batch sample들에서 생성된 통계치들을 output layer에 concat시켜 사용하는 방식이다. Learnable parameters나 새로운 hyper parameters가 필요로 하지 않기 때문에 단순하면서도 효과가 좋은 방식이다. 이 방법 이외에도 Generator에 새로운 loss를 추가해주는 “repelling regularizer” 방식도 존재한다고 한다.


🚀 Normalization in Generator and Discriminator

GAN의 경우 generator와 discriminator 사이의 건강하지 못한 경쟁으로 양쪽의 신호가 커지는 경향이 있다. 기존에는 G, D에 batch nomalization을 이용해 위 문제를 간단히 해결해왔다. 하지만 이러한 nomalization 기법은 본래 covariate shift를 제거하기 위해 등장하였는데, 저자들은 GAN의 학습 과정에서 이러한 문제를 발견하지 못했다. 그러므로 실질적으로 신호의 세기를 제한하는 것이 필요하다고 생각했다. 저자들은 새로운 learnable paramerts가 필요 없는 두 가지 방식을 제안했다.

  • 모든 layer들이 동일한 learning speed를 갖게 하기 위해, weight와 무관하게 gradient를 runtime에 normalization (Equalized Learning Rate)
  • Pixel마다 feature vector를 unit length로 normalize (signal 증폭 제어)


🚀 Multi-Scale Statistical Similarity for Assessing GAN Results

5

  • 저자들이 제안한 다양한 기법들에 따른 지표
  • CelebA 데이터의 (a)와 (h)는 MS-SSIM 메트릭의 차이는 없지만 실제 퀄리티 차이는 엄청남 -> 좋은 지표가 아님

서로 다른 GAN 모델들을 비교하기 위해서는 어마어마하게 많은 데이터들을 비교해야 한다. 기존에는 MS-SSIM 방식을 이용해 자동화된 기법을 사용해왔다. 하지만 이 방식은 large-scale mode collapse를 찾아낼 수 있지만, smaller feature들에 잘 반응하지 못하는 문제가 존재한다. 따라서 저자들은 생성된 이미지가 학습 이미지와 local-structure가 비슷해야 한다는 직관으로 Laplacian pyramid로 표현된 두 패치 분포 사이의 통계적 유사치를 고려했다. 패치들간의 sliced Wasserstein Distance(SWD) metric은 생성된 이미지의 quality와 variation 모두를 평가하는 좋은 지표로 사용할 수 있다.


🚀 Experiments

4

  • 1024x1024 생성 이미지. 세상에나


🚀 Code

PGGAN from scartch (pytorch)

Sample 1 Sample 2
img_8 img_3
   

1024x1024라 그런지 오래 돌려도 퀄리티가 낮음..



맨 위로 이동하기

Paper 카테고리 내 다른 글 보러가기

댓글 남기기