🗑️

StarGAN v2: Diverse Image Synthesis for Multiple Domains

Tags
Generative Adversarial Networks
Created
2021/01/31 08:06
Publication
CVPR'20
Rate
3
Source
https://arxiv.org/abs/1912.01865
Summary
(상세 페이지 참고)

Intro

Image-to-image translation, 혹은 domain translation이라 함은 기존의 이미지를 해당 이미지의 domain-invariant attribute은 유지하면서도 다른 domain의 이미지로 변환하는 것을 의미한다. 이 때 domain은 어떠한 특정 attribute을 공유하는 이미지들의 집합이라고 볼 수 있겠는데, 단적으로 여성과 남성, 특정 카메라의 화각, 연령대 등이 이러한 domain의 예시라고 할 수 있겠다. 만약 여성에서 남성으로 image-to-image translation을 진행한다면, 본래의 여성 이미지가 가지고 있던 이목구비(혹은 identity)를 최대한 유지하면서도 해당 이미지의 남자 버전을 만들어버린다고 보면 되겠다.
이러한 태스크는 GAN을 통해 가능하다. 그 아버지라 할 만한 것이 바로 CycleGAN인데, 핵심은 각각의 domain에 대한 authenticity를 구별하는 discriminator를 속이는 generator를 학습하는데(즉 A > B, B > A 두 개의 discriminator와 generator를 학습한다), 본래 이미지의 identity를 유지하기 위해 domain A의 이미지를 domain B로 generate하고, 해당 이미지를 다시 A로 generate한 이미지가 본래 이미지와 같아야 한다는 cycle consistency constraint을 적용하는 것이다.
하지만 이러한 아키텍쳐로는 pairwise translation model만을 학습할 수 있다. 즉, 3개 이상의 domain에 대한 상호간의 translation을 수행하기 위해서는 총 domain의 2-pair combination만큼의 모델 학습이 필요한 것이다. 이를 multi-domain translation이라 하는데, 이것이 가능한 모델 아키텍쳐를 처음으로 StarGAN에서 제시했다. 꽤 복잡한데, 핵심은 domain label을 함께 전달해주어 generator가 target domain의 이미지를 생성하도록 하고, 이미지의 authenticity와 domain을 함께 구별할 수 있는 discriminator와 경쟁시키는 것이다. 역시 identity preservation을 위해 유사한 cycle consistency constraint(reconstruction loss)을 활용한다.
하지만 이러한 StarGAN 알고리즘은 determinant 하다는 특성을 가진다. 즉, input image와 target domain이 동일한 이상 항상 완전히 동일한 이미지만을 생성하게 되는 것이다. 약점이라면 약점일 수도 있는데, 이와 함께 생성된 이미지의 품질 역시 개선한 모델이 바로 StarGAN v2이다.
놀랍게도 CycleGAN과 StarGAN 둘 다 한국인이 제 1 저자 혹은 동일한 기여도로 참여한 논문이다.

StarGAN v2

StarGAN v2(이하 StarGAN2)의 목적은 하나의 generator $G$를 학습하여, multiple domain으로의 다양한(deterministic하지 않은) image translation을 수행하는 것이다. 이를 위해 neural net에 의해 학습된 style space를 통해 각각의 domain-specific style을 나타내는 style vector를 형성하고, 이러한 style vector를 반영하여 $G$가 해당 domain으로의 image translation을 수행하도록 한다.
먼저 StarGAN2의 framework는 다음과 같다.

Generator

먼저 GG는 이미지 xx와 domain-specific style vector ss를 입력받아 target domain의 이미지를 생성한다. 이 때 GGss를 주입하여 반영하기 위해 AdaIN(Adaptive Instance Normalization)을 사용한다고 한다. 이렇게 style vector를 사용함으로써 domain label yy를 따로 전달하지 않아도 되며, 이러한 style code가 일괄적이지 않은 이상 deterministic한 속성을 없앨 수 있다.

Mapping Network

Mapping network FF는 latent code(Standard Gaussian으로부터 임의 추출된 code) zzyy domain-specific style code s=Fy(z)s = F_y(z)로 mapping한다. 바로 이 zz가 랜덤이기 때문에 style code ss는 매번 다르고, 이 때문에 StarGAN2는 deterministic하지 않다. 이러한 $F$는 domain-shared MLP layer와 domain-specific output branch로 구성된다.

Style Encoder

Style encoder EE는 이미지 xx로부터 해당 domain의 style code s=Ey(x)s = E_y(x)를 추출한다. 이러한 encoder를 통해 한 이미지를 다른 이미지의 스타일로 translation하는 등의 태스크가 가능하다.

Discriminator

Discriminator $D$는 각각의 domain에 대한 output branch를 가지며, 각각의 branch는 해당 domain에 대한 authenticity를 구별한다. 내가 예상한 바와는 달리, authenticity와 domain class를 따로 구별하지는 않는다.
이제 StarGAN2의 loss들을 살펴본다.

Adversarial Objective

학습 동안 zZz \in Zy~Y\tilde{y} \in Y를 임의 추출한다. 이후 style code s~=Fy~(z)\tilde{s} = F_{\tilde{y}}(z)를 생성하고, 이를 GG에 삽입하여 output image G(x,s~)G(x, \tilde{s})를 생성한다. 이를 통해 다음과 같은 adversarial loss를 계산한다. yy는 이미지 xx의 original domain이다.
Ladv=Ex,y[logDy(x)]+Ex,y~,z[log(1Dy~(G(x,s~)))] L_{adv} = \mathbb{E}{x, y}[\log{D_y(x)}] + \mathbb{E}{x, \tilde{y}, z}[\log{(1 - D_{\tilde{y}}(G(x, \tilde{s})))}] 

Style Reconstruction

GG가 translation 시 style code를 활용하도록 하기 위해 다음과 같은 loss를 사용한다.
Lsty=Ex,y~,z[s~Ey~(G(x,s~))1]L_{sty} = \mathbb{E}{x, \tilde{y}, z}[|| \tilde{s} - E{\tilde{y}}(G(x, \tilde{s})) ||_1]
즉 원래 이미지를 target domain으로 translation한 후, 생성된 이미지에서 encoder를 통해 추출한 style code가 target style code와 최대한 같아지도록 하는 것이다.

Style diversification

GG가 style code에 따라 다양한 이미지를 생성하도록, 다음과 같은 loss를 사용한다. 이 loss는 maximization objective이다.
Lds=Ex,y~,z1,z2[G(x,s~1)G(x,s~2)1]L_{ds} = \mathbb{E}_{x, \tilde{y}, z_1, z_2}[|| G(x, \tilde{s}_1) - G(x, \tilde{s}_2) ||_1]
즉 서로 다른 두 latent code에 의한 translation 결과가 서로 최대한 달라지도록 한다.

Preserving source characteristics

생성된 이미지가 원래 이미지의 domain-invariant한 특징을 유지하도록 다음과 같은 cycle consistency loss를 사용한다.
Lcyc=Ex,y,y~,z[xG(G(x,s~),s^)1]L_{cyc} = \mathbb{E}_{x, y, \tilde{y}, z}[|| x - G(G(x, \tilde{s}), \hat{s}) ||_1]
여기서 s^=Ey(x)\hat{s} = E_y(x)이며, s~=Fy~(z)\tilde{s} = F_{\tilde{y}}(z)이다. 즉 target domain으로 translation된 이미지를 다시 original domain으로 translate하였을 때 원본 이미지와 최대한 같아지도록 한다.

Full Objective

최종적인 objective는 다음과 같다. 학습에 대한 자세한 설명은 부록에 있다.
minG,F,EmaxD  Ladv+λstyLstyλdsLds+λcycLcyc\text{min}{G, F, E} \text{max}{D} \ \ L_{adv} + \lambda_{sty} L_{sty} - \lambda_{ds} L_{ds} + \lambda_{cyc} L_{cyc}

Experiments

기존의 StarGAN을 부분적으로 StarGAN2로 업그레이드하면서 그 성능을 비교하는 실험과, 기존의 domain translation GAN 모델들과의 정성적인 비교 실험을 통해 StarGAN2의 우월성을 입증한다. 페이퍼의 그림들을 보면 알겠지만 훨씬 자연스럽고, 훨씬 다양하고, 훨씬 과감한(e.g. 머리 스타일을 완전히 변형하고, 보이지 않던 귀를 만들어내는 등의) translation이 가능하다고 한다.
E.O.D.