A Style-Based Generator Architecture for Generative Adversarial Networks 논문을 보고 정리한 글이며 자세한 리뷰는 https://velog.io/@ghgh5317/A-Style-Based-Generator-Architecture-for-Generative-Adversarial-Networks-review < 이 링크에 정리 되어있습니다.
먼저 들어가기 전에 자주 등장하는 단어 하나를 먼저 설명하고 들어가겠습니다.
본 논문에서는 Disentangle 혹은 Disentanglement라는 단어가 굉장히 많이 등장합니다.
이 단어는 "얽힌 것을 푼다"라는 뜻을 가지고 있습니다.
논문 안에서는 여러개의 feature가 서로 얽혀져있지 않고 linear하게 분포가 되어있는 것을 의미합니다.
따라서, 만약 다양한 feature들이 연관관계를 가지고 있으면[=disentanglement가 부족하다면] 구성 요소들을 변경해서 Image를 만들고자 할 때 다른 요소까지 변경될 수 있습니다.
이 부분에서는 1. 제안하는 architecture와 이것을 사용했을 때 2. 어떤 효과를 불러오는지와 3,4. 논문이 크게 기여한 점에 대해 간략히 소개하고 있습니다.
StyleGAN은 PGGAN에서 style transfer의 아이디어를 활용한 새로운 generator architecture method를 제안하고 있습니다.
또한 이 구조를 활용하게 된다면 high-level attribute 분류를 잘할 수 있도록 도와주며 stochastic variation을 다양하게 적용할 수 있을 것이라고 말합니다. (= 전통적인 distribution quality metrics 측면에서도 괜찮은 것을 확인할 수 있습니다.)
interpolation quality와 disentanglement를 수치적으로 확인할 수 있도록 하는 generator에 2가지의 새로운 method를 제안합니다.
다양한 고해상도의 human face dataset (=called FFHQ)를 소개했습니다.
[그림1 - FFHQ dataset]
※2번 문장에서 참고할 단어※
high-level attribute : 사람의 자세(pose)나 사람의 얼굴에 대한 정보(identity like glasses)
stochastic variation : 동일한 사람의 Image여도, 사람을 구성하는 요소(face skin or hair)는 확률적으로 다양한 방식을 통해 달라질 수 있습니다.
최근 GAN으로 생성한 이미지의 품질과 해상도가 크게 향상되었지만 현실적인 이미지를 생성하는 것은 아직 불완전해보입니다. 이에 대한 이유를 논문의 저자는 아마도 이미지의 synthesis process (original of stochastic feature)를 control하는 방법과 latent space에 대해 잘 이해하지 못했기 때문이라고 주장합니다. [synthesis의 특성을 다른 모델과 정량적으로 비교할 수 없었기 때문이라고 합니다.]
Introduction part에서는 어떻게 StyleGAN이 나오게 된 것이며, 실제 generator를 어떤식으로 변경했는지, StyleGAN에서 제안하는 2가지의 metric, FFHQ라는 dataset에 대하여 간단하게 설명을 해주는 것으로 전개가 됩니다.
이 부분은 style transfer method에 영향을 받았다고 나오는데 이 method가 바로 AdaIN 구조입니다. AdaIN 구조에 관해서는 자세한 리뷰를 적은 포스팅을 확인해주세요.
[그림2]에 그려진 network에서는 학습된 상수값으로부터 각각의 conv layer를 거치면서 style값을 조절하거나 추가해가는 것을 볼 수 있습니다. 본 논문에서는 이미지를 여러 style들의 조합으로 보기 때문에 각각의 layer를 거쳐가며 style 정보를 입히는 방식으로 이미지를 합성합니다.
추가적으로 StyleGAN은 discriminator나 loss function은 수정하지 않았으며 generator를 더 효과적으로 만들었다고 합니다.
[그림2 - Style-based generator and Traditional generator]
간단히 [그림2]의 b부분을 보면서 작동하는 방법을 설명하겠습니다.
[작동 방식1_style vector]
latent vector z가 Mapping network를 통해 latent vector w[전부 512차원]로 나오게 되며 이를 style 값으로 사용합니다.
[단순하게 가우시안 분포에서 noise를 sampling한 뒤에 input값으로 사용하게 된다면 어느 정도의 entanglement가 발생하기 때문에 이를 한번 mapping해준뒤 사용하면 restriction이 사라져 disentanglement에 대해 효과가 좋습니다.]
[작동 방식2_Noise]
stochastic variation을 처리할 수 있도록 별도의 noise에 대한 vector를 추가로 넣어주게 됩니다.
[작동 방식3_AdaIN]
위의 수식을 보게 되면 빨간 상자는 일반적인 정규화 방법이며 추가적으로 파란 상자에서 scaling과 bias를 적용하면서 feature space의 statistics를 변경할 수 있게 됩니다.
이러한 Adaptive instance Normalization 방식을 generator에 추가해준다.
[표1_PGGAN Baseline으로부터 점차적으로 추가해면서 FID를 비교한 표]
(A): Prgoressive GAN (PGGAN)
(B): A모델 + bilinear up/downsampling operations
(C): B모델 + AdaIN operations
(D): C모델 + + 기존 input layer 삭제 및 고정 4x4x512 tensor 사용
(E): D모델 + noise input injection과 novel mixing regularization
이 부분과 관련한 논문의 b part_Truncation trick in W를 보겠습니다.
Truncation trick은 GAN model을 잘 학습하기 위해 사용하는 것이 아닌 generated image를 잘 뽑아내기 위해 사용하는 Trick이라고 합니다.
[Train 과정 중에 사용하는 것이 아니라 학습이 완료된 network의 input을 제어하는 방법]
※이 Part에서 참고할 단어※
Truncation trick : mapping된 w vector를 그냥 사용하는 것이 아니라 w¯로부터 ψ(w − ¯w) 만큼 떨어진 w'을 사용하는 것.
이전의 GAN model에서는 z에 바로 적용하였으나 StyleGAN의 경우 mapping된 w vector에 적용하는 것입니다.
여기서 항상 ψ < 1을 적용하게 되는데 만약 1로 설정하게 된다면 Truncation trick을 사용하지 않은 경우와 같으며 0으로 지정하게 되면 [그림3]과 같이 모든 image가 같은 얼굴이 나오게 됩니다.
[그림3Truncation trickψ값에 따른 변화]
이 부분은 간단히 말하면 인접한 layer 간의 style 상관관계를 줄여하는 것입니다.
본 논문에서는 각각의 style이 잘 localize되어서 다른 layer에 관여하지 않도록 만들기 위해 style mixing을 제안하고 있습니다.
[그림4_style mixing한 결과 : conv layer 변화에 따른 결과 이미지]
[그림4]를 세 파트로 나누어본다면 Coarse, Middle, Fine입니다.
==> 이는 convolution layer 측면에서 뒤로 갈수록 다루는 patch의 크기가 작아지기 때문에 세밀한 변화가 가능해지는 것이라고 볼 수 있습니다.
noise 부분에 해당되는 것이 이 stochastic variation이며 머릿결이나 주근깨 혹은 피부 모공들의 세밀한 부분들을 말하는 것입니다. [그림 5]의 b부분에서 noise vector를 다르게 주었을 때 세밀한 부분들이 달라지는 것을 볼 수 있습니다.
[그림 5_Stochastic variation을 적용했을 때 달라지는 결과]
[그림 6_layer에 대해 noise input을 다르게 준 결과]
[그림 6]에 대한 보조 설명 : stochastic variation을 다른 subset of layer에 적용한 것.
c는 조금 더 세밀한 컬이 들어갔고, d는 큼직한 컬이 들어간 것을 확인할 수 있습니다.
이전까지는 생성된 이미지들간의 거리가 얼마나 떨어져 있는지를 알아보는 방법으로 L2-distance를 이용했지만, PPL은 이미지의 변화가 지각적으로 부드럽게 변했는지를 측정하는 metric입니다. 이 성능이 잘나온다는 것은 이미지가 서서히 바뀌게 되는 것입니다.
이는 pre-trained VGG16 network를 통해 perceptual loss를 계산합니다.
latent z에 대해 interpolation을 진행할 때는 구면선형보간[spherical interpolation]을 사용하며, w vector끼리의 interpolation에 대해 진행할 때는 단순하게 linear 방법으로 수행하게 됩니다.
[표2_FFHQ Dataset을 사용하여 PPL로 비교한 표]
w space에서 interpolation을 수행했을 때가 [표2]를 보았을 때 훨씬 좋은 것을 확인할 수 있습니다.
latent space에서 attribute가 얼마나 선형적으로 분류될 수 있는지 판단하는 것, 즉 Latent space가 disentangle하다면 특성을 나누는 벡터의 방향을 정확하게 찾아낼 수 있다는 개념에서 출발한 지표입니다.
선형적인 초평면을 가지고 이를 나눌 수 있다면 이것은 latent space가 얽혀 있지 않다고 할 수 있습니다.
이를 위해 간단한 선형 분류기를 학습한 뒤 엔트로피를 계산해서 latent vector가 얼마나 linear한 subspace에 존재하는지를 확인하는 것입니다.
이는 값이 낮을수록 이상적인 image임을 나타내는 지표가 됩니다.