StarGAN Review

권대규·2021년 8월 20일
0

paper-review

목록 보기
9/12

아직 학생이기도하고 영어가 미숙하다보니 본 리뷰에 오류가 있을 수도 있습니다. 이 점 감안해주시고 혹시나 찾으신다면 피드백 감사히 받겠습니다.

Introduction

image-to-image translation은 주어진 이미지에 대해서 표정, 머리 색 등 하나의 요소를 변경하는 task로 최근 GAN을 기반으로 활발히 연구되고 있습니다. 이러한 training data들은 2가지의 다른 도메인들을 기반으로 하나의 domain에서 다른 domain으로 넘겨주는 형식으로 학습이 진행되고 있습니다. 예를 들면 금발로 가득한 domain과 흑발로 가득한 domain으로 학습을 진행한다면 머리 색을 바꿔주는 GAN을 학습시킬 수 있겠죠. 하지만 이러한 방식은 multi-domain의 관점에서 바라보았을 때, 꽤 비효율적인 부분이 존재합니다. k 개의 multi domain이 있다고 하면 각 domain간의 translation을 모두 실행하기 위해서는 k(k-1)개의 generator가 필요하기 때문이죠. 본 연구에서는 이러한 서로 다른 domain 간의 비효율적인 translation을 해결하고자 multi-domain한 dataset에 대해서 잘 학습이 되는 GAN의 architecture에 대해서 제안을 했고 이러한 방식이 각 domain에 대해서 star처럼 이루어진다해서 StarGAN이라고 이름 붙였습니다.

Star Generative Adversarial Network

Multi-Domain Image-to-Image Translation

우선 Generator에 대해서, 연구진의 목표는 multiple domain에 대해서 학습이 가능한 Generator GG를 학습시키는 것입니다. 그렇기에 연구진은 Generator에 input으로 latent vector를 대입하는 것이 아니라 source가 될 image xx와 condition에 대한 domain label cc를 대입하도록 설계하였습니다. 즉 G(x,c)yG(x,c) \rightarrow y의 형태로 Generator를 설계했습니다. cc의 경우에는 randomly하게 생성을 해 모든 domain에 대해서 골고루 학습이 진행되도록 했다고 합니다.

그리고 Discriminator의 경우에는 두 가지 종류로 설계하였습니다. 첫번째로 해당 source가 real image인지 여부를 판단하는 Dsrc(x)D_{src}(x)와 해당 이미지가 어떠한 domain을 가지고 있는지 판단하는 Dcls(x)D_{cls}(x)를 설계하였고, 결과적으로 전체적인 Discriminator는 D:x{Dsrc(x),Dcls(x)}D: x \rightarrow \{D_{src}(x),D_{cls}(x)\}의 형태를 띄게 됩니다.

Loss에 대해서는 크게 3가지 Loss가 존재합니다. Adversarial Loss, Domain Classfication Loss, Reconstruction Loss. 각 Loss에 대해 하나씩 설명을 해보겠습니다.

Adversarial Loss

우선 Adversarial Loss는 기존에 GAN에서도 사용하는 Loss로 Discriminator와 Generator의 minmax game에 대한 Loss입니다. 여기서는 Dsrc(x)D_{src}(x)가 사용이 되고 식은 아래와 같습니다. 다만 Vanila GAN Loss와 어느정도 차이가 있다면 Conditional GAN처럼 Generator의 input으로 target domain에 대한 data인 cc값이 들어갔다는 점입니다.

Domain Classfication Loss

해당 Loss는 이름에서도 알 수 있듯이 Generator가 input으로 받은 target domain 정보에 대해서 fake image yy를 잘 생성했는지 판별하는 loss입니다. 다만 다른 Loss들과 다르게 해당 Loss는 두 가지로 나누어집니다. 우선 real image xx가 갖고 있는 attribute에 대해 정상적으로 Discriminator가 분류할 수 있도록 아래와 같은 Loss function을 1차적으로 가집니다.

그 다음은 Discriminator가 아니라 Generator가 input으로 domain에 대한 정보 cc를 받았을 때, 해당 정보를 기반으로 fake image를 정상적으로 생성하는지에 대한 Loss function을 아래와 같이 가집니다.

Reconstruction Loss

Reconstruction Loss는 CycleGAN에서 돌아가는 Loss와 비슷한 맥락으로 Generator가 1차적으로 fake image를 생성하고 해당 image를 원래 domain으로 돌리는 과정이 제대로 잘 이루어지는지를 L2 Loss로 확인하는 Loss function입니다.

즉 최종 objectvie에 대해서는 아래와 같이 세울 수 있으며, 이때 λcls=1,λrec=10\lambda_{cls} = 1, \lambda_{rec}=10으로 설정하고 실험을 진행하였다고 합니다.

조금 더 세부적으로 세운 식은 아래와 같습니다. 해당 과정에서 다른 점은 기존의 Adversarial Loss에 대해서 Wasserstein GAN에서 사용하는 Loss 식으로 대체했다는 점입니다.

Training with Multiple Dataset

StarGAN의 가장 중요한 장점은 동시에 다양한 dataset에 대해서 학습이 가능하다는 점입니다. 하지만, 다양한 dataset에 대해서 학습이 가능하다고 모든 dataset이 동일한 조건을 가지고 있지는 않습니다. 예를 들면 A dataset은 헤어에 관한 labeling이 되어있지만, B dataset이 헤어 관련 labeling이 되어있지 않다면 교차 학습을 진행할 때 hair domain 관련 B dataset은 어떠한 control도 불가할 뿐더러 학습에 문제를 일으킬 수 있다는 점입니다. 그래서 연구진이 택한 방법은 다음과 같습니다.

Mask vector

사용하는 dataset들에 대해서 metadata를 담은 vector를 하나 제공하는 것입니다. n개의 dataset을 사용한다고 하면 n-차원의 one hot vector를 따로 생성해주고 사용 dataset에 따라 mapping해줍니다. 그렇게 진행될 경우 모델이 해당 벡터를 기반으로 domain에 존재하는 attribute 중 참조할 수 없는 부분에 대해서는 masking을 한 후, controllable한 요소들 외에는 무시한 로 학습을 진행한다고 합니다.

Experiment

연구진은 실험을 CelebA dataset과 RaFD dataset으로 진행했는데요. 여기서 봐야할 점은 CelebA가 갖고 있는 label은 hair color, gender, age이고 RaFD가 갖고 있는 label은 expresion과 gaze direction이라는 점입니다.

우선 CelebA를 기반으로 진행한 실험결과는 아래와 같습니다. 타 GAN보다 성능이 잘 일어남을 확인할 수 있고, 특히 여러 Attribute를 동시에 변경하는 부분에서 확연히 좋은 성능을 보임을 알 수 있습니다.

다음은 RaFD를 기반으로 진행한 실험결과입니다. 위 CelebA 실험에서 어느정도 좋은 성능을 보였던 IcGAN이 여기서는 완전히 성능을 내지 못하지만, StarGAN 같은경우는 큰 blur 현상 없이 타 모델들에 비해 좋은 성능을 냄을 확인할 수 있습니다.

마지막은 위에서 언급했던 두 dataset간의 교차 attribute 실험인데요. 여기서 SNG는 Single이라는 뜻이고, JNT는 joint라는 뜻으로 dataset 학습 교차 부분에 대한것 같습니다. 한눈에 알 수 있듯이 JNT가 더 자연스럽게 expression change를 해냈음을 알 수 있습니다.

Reference

StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation - Yunjey Choi

profile
글많은 개발자

0개의 댓글