Introduction
하나의 domain으로만 translation이 가능했던 기존 image to image translation methods의 단점을 극복하고, 하나의 모델이 여러 domain으로의 translation을 할 수 있도록 하는 모델 cGAN기반이고, 발표되었을 당시 큰 관심을 받았다.
Proposed Method
1.
Multi-domain Training
domain vector를 입력으로 받아 여러 domain으로의 translation을 수행 기존 GAN들이 G(x) → y였다면 StarGAN은 G(x, c) → y로 c(binary vector 혹은 one-hot vector형태)가 추가된 형태이다.
c : target domain label vector
2.
Adversarial Loss
기본적인 GAN의 Loss함수로, Generator가 더 사실적인 이미지를 생성하도록 유도한다.
Discriminator는 G(x, c)를 보고 Real(1)인지 Fake(0)인지 판별하도록 학습된다.
Generator는 D(G(x, c))가 1에 가까워지도록 학습된다. (D가 G(x, c)를 진짜라고 믿도록 학습)
3.
Domain Classification Loss
D_{cls}로 표현되는 domain classifier는 domain label c를 예측한다. (cross entropy loss 형태)
domain classification loss는 두 가지 목적으로 나뉜다.
•
real image에 대해서는 D를 optimize
•
fake image에 대해서는 G를 optimize
4.
Reconstruction Loss (Cycle-consistency Loss)
앞선 두 Loss는 G가 target domain에 잘 맞는 이미지를 현실적으로 잘 생성해내도록 한다. 그러나 target domain과 관련된 부분만 수정하고, 그 외의 원본 이미지의 특성은 보존한다는 것을 보장하지는 못 한다.
Reconstruction Loss가 이 부분을 보장하기 위해 추가된다.
G(x, c)를 다시 G(G(x, c), c')로 되돌렸을 때 x와 최대한 비슷해지도록 학습시킨다. (L1 loss 형태)
c' = original domain label vector
최종 Loss 함수
Training with multiple datasets
StarGAN은 여러 domain에 대한 변환을 하나의 모델로 수행할 수 있다고 했다. 따라서 다양한 dataset으로부터 학습이 가능하다.
ex)
dataset A : 남, 여 라벨 존재
dataset B : 표정 라벨 (웃음, 슬픔, ...) 존재
dataset C : 안경 유무 라벨 존재
기존에는 각 dataset에 대해서 포함되지 않은 domain을 학습하려 하면 label mismatch 문제가 발생했지만, (dataset A에는 표정 라벨이 없음) starGAN에서는 Mask Vector 기법을 통해 서로 다른 domain을 가진 여러 dataset을 학습가능하도록 했다.
Mask Vector
mask vector 을 도입하여, 특정 dataset에서 사용하지 않는 label에 대해서는 masking
m : n차원의 one-hot vector로, n은 데이터셋의 개수이다. 그리고 unified label vector는 다음과 같이 정의된다.
: c1 ~ m 의 concatenation
여기서 ci는 i번째 데이터셋의 label vector이다. 만약 i번째 dataset을 학습한다면, 를 제외한 n-1개의 label vector는 모두 zero vector로 설정한다.
여러 데이터셋으로 starGAN을 학습하는 경우에는 를 domain label vector로 사용하여 학습합니다.
etc.
•
학습을 안정화 시키고 결과 품질을 높이기 위해 위의 adversarial loss 식을 wasserstein GAN objective with gradient penalty로 대체
•
Generator의 네트워크 구조는 CycleGAN을 따랐고, Discriminator의 네트워크 구조는 PatchGAN을 따름