AI 공부 도전기

[논문 Summary] StarGAN (2018 CVPR) "StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation"

 

     

 

논문 정보

Citation : 2022.04.11 월요일 기준 2402회

저자

 

Yunjey Choi, Minje Choi - Korea University, Clova AI Research, NAVER Corp

Munyoung Kim - Clova AI Research, NAVER Corp, The College of New Jersey

Jung-Woo Ha - Clova AI Research, NAVER Corp

Sunghun Kim - Clova AI Research, NAVER Corp, Hong Kong University of Science & Technology

Jaegul Choo - Korea University, Clova AI Research, NAVER Corp

 

논문 링크

https://arxiv.org/abs/1711.09020

 

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

Recent studies have shown remarkable success in image-to-image translation for two domains. However, existing approaches have limited scalability and robustness in handling more than two domains, since different models should be built independently for eve

arxiv.org

https://openaccess.thecvf.com/content_cvpr_2018/papers/Choi_StarGAN_Unified_Generative_CVPR_2018_paper.pdf

논문 Summary

Abstract

 

2개의 도메인을 활용한 image-to-image translation에 대한 많은 연구가 있었으나 2개 이상의 도메인에 대한 확장성이나 강건함에 제한이 있다.

 

본 논문에서는 단일 모델을 활용하여 다수의 도메인에 대한 image-to-image translation을 수행할 수 있는 StarGAN을 소개한다.

단일 네트워크 안에서 다수의 도메인을 포함하는 다수의 데이터 세트로 동시에 훈련이 가능한다.

이를 통해 현존하는 모델 대비 StarGAN의 효과적이고 우수함을 보인다.

 

1. Introduction

 

용어 정리

 

attribute : 이미지 안에 내재된 의미있는 특징 ex) 머리 색, 성별, 나이

attribute value : attribute의 특정 값 ex) 머리 색 중 검정/금발/갈색, 성별 중 남성/여성

domain : 같은 attribute value를 공유하는 이미지들의 집합

 

데이터 세트

 

CelebA : 머리색, 성별, 나이와 같은 얼굴 속성과 관련된 40개의 label이 포함된 데이터세트

RaFD : happy, angry, sad와 같은 얼굴 표현과 관련된 8개의 label이 포함된 데이터세트

 

Figure 2에서 확인할 수 있듯 k 도메인에 대한 image-to-image translation을 진행하는 경우 기존의 모델에서는 k(k-1) generator가 훈련되어야 한다.

가령 4개의 서로 다른 도메인이 존재한다면 기존의 모델들은 2개에 대한 도메인의 학습만이 가능하므로 4*3=12개($_{4}\mathrm{C}_{3} \times 2$)의 generator가 필요하다. 또한, 각 데이터 세트가 부분적으로 label되기 때문에 서로 다른 데이터 세트들에 대한 jointly training domain가 불가능하다. 이는 매우 비효율적이고 비효과적이다.

=> Fixed translation

 

본 논문에서는 다수의 domain들에 대한 mapping 학습이 가능한 StarGAN을 제안한다.

StarGAN은 단일 generatorlabel을 통해 입력 데이터에 대해 상응하는 도메인으로의 translate가 유연하게 하도록 mapping시킨다.

특히, 도메인 label에 mask vector를 더함으로써 다른 데이터 세트들의 도메인들 간의 joint training이 가능하게 한다. 이는 알지 못하는 label은 무시하고 특정 label에 대해서는 집중하게 한다. 이 방식을 통해 Figure 1 오른쪽과 같이 RaFD로 학습시킨 특징들을 사용하여 CelebA 이미지들의 이미지 표현을 합성할 수 있다.

 

기여 정리

 

1) 모든 도메인의 이미지를 효과적으로 훈련시킬 수 있는 단일 generator단일 discriminator를 사용하여 다수의 domain 사이의 mapping을 학습시킬 수 있는 StarGAN을 제안

2) 가능한 모든 도메인 라벨을 제어할 수 있는 mask vector를 활용하여 다수의 데이터 세트들 간 multi domain image translation 을 성공적으로 학습하는 것이 가능하게 한다.

3) 정성적, 정량적 결과를 통해 우수함을 강조

 

2. Related Work

Generative Adversarial Networks

GAN, WGAN, WGAN-GP, StackGAN, EBGAN, SRGAN, DIAT, CGAN etc

Conditional GANs

CGAN, DiscoGAN, SRGAN etc

Image-to-Image Translation

Pix2Pix, CycleGAN, CGAN, UNIT, DiscoGAN etc

 

3. Star Generative Adversarial Networks

3.1 Multi-Domain Image-to-Image Translation

본 논문의 목표는 다수의 도메인들 사이의 mapping을 학습하는 단일 Generator $G$를 훈련시키는 것입니다.

$G(x,c) \rightarrow y$ 

x : input image

y : output image

c : target domain label

 

단일 discriminator가 다수의 도메인들을 제어할 수 있도록 허가하는 Auxiliary classifier(ACGAN)를 도입.

$D: x \rightarrow {D_{src} (x), D_{cls} (x)}$

이를 통해 source와 domain에 대한 확률 분포를 생성

 

Adversarial Loss

 

 

GAN loss

본 논문에서는 안정성 때문에 WGAN-GP 논문의 loss를 사용함. (Section 4에서 다룸. 식 (8)) 

 

Domain Classification Loss

 

input image x와 target domain label c가 주어졌을 때 x에서 output image y로 올바르게 translate하기위해 auxiliary classifier를 추가하고 이에 대한 2 term loss가 필요

 

1) D를 최적화하는데 사용되어지는 진짜 이미지들에 대한 domain classification loss

 

 

real image $x$에 대하여 original domain $c^\prime$으로 올바르게 분류하게 끔 하는 loss

(계산상 1에 가까워지도록)

 

2) G를 최적화하는데 사용되어지는 가짜 이미지들에 대한 domain classification loss

 

 

real image $x$와 target domain $c$로 생성된 output $y$ 즉, $G(x,c)$에 대하여 target domain $c$로 올바르게 분류하게 끔 하는 loss

(계산상 1에 가까워지도록)

 

Reconstruction Loss

 

Adversarial Loss와 Domain Classification Loss만으로는 translated image가 input image의 본래 내용을 잘 보존할 수 없다. 따라서 Generator에 Cycle Consistency Loss를 적용한다.

 

 

original domain $c^\prime$

target domain $c$

L1 norm을 채택

 

위 Figure 3에서 확인할 수 있듯 단일 Generator는 2번 연속해서 사용되고 그때 나온 결과들로 위 식 (4) loss를 만들어 사용한다.

 

Full Objective

 

 

최종 G와 D를 최적화하기 위한 objective function은 위와 같다.

본 실험에서 $\lambda_{cls}=1,\ \lambda_{rec}=10$으로 사용한다.

 

 

3.2 Training with Multiple Datasets

 

다수의 데이터를 학습시킬 때, 각 데이터별로 부분적으로 알려진 label 정보가 존재한다.

가령 CelebA의 경우 머리색, 성별에 대한 속성을 가진 label은 존재하지만 RaFD가 가진 happy, angry와 같은 label 정보는 존재하지 않는다. 

이는 식 (4)에 나와있는 것처럼 translated image $G(x,c)$로부터 원본 이미지로 재구성할 때 label vector $c^\prime$가 필요하기 때문에 문제가 된다.

 

Mask Vector

 

이 문제를 완화하기 위해 비특징화된 label은 무시하고 특정 데이터 세트에 의해 제공되는 잘 알려진 label에 집중하기 위해 mask vector $m$을 도입한다.

 

m을 표현하기 위한 n 차원의 one-hot vector

여기서 n은 데이터 세트의 수

 

$c_i$ : i 번째 데이터 세트의 label vector (a binary vector / a one-hot vector)

한 개의 $c_i$를 선택했을 때, 나머지 n-1개의 $c_i$들은 0으로 지정

 

 

Training Strategy

 

 

Generator에 domain label $\tilda{c}$를 같이 입력으로 사용한다.

이를 통해 unspecified label은 무시하고 (zero vector) 분명하게 주어진 label에는 더 집중한다. 

 

Discriminator에서 CelebA를 훈련할 때는 CelebA와 관련한 속성을 활용한 classification error를 계산하고 RaFD는 무시한다. 역 역시 마찬가지의 방법으로 최적화 한다.

각 데이터에 대해서는 교차시켜 학습한다. 

이를 통해 모든 label에 대한 제어가 가능하도록 학습이 진행된다.

 

4. Implementation

 

Improved GAN Training

 

 

Adversarial loss로 WGAN-GP loss를 활용한다.

이를 통해 더 안정적인 훈련 과정을 거치고 더 좋은 양질의 이미지를 생성한다.

본 실험에서 $\lambda_{gp}=10$으로 설정

 

Network Architecture

 

 

1) 2-stride conv layer (downsampling)

2) 6 residual block

3) 2-stride transposed conv layer (upsampling)

 

Generator : instance normalization 

Discriminator : no normalization

 

PatchGAN의 Discriminator

 

CycleGAN Generator : https://towardsdatascience.com/cyclegan-learning-to-translate-images-without-paired-training-data-5b4e93862c8d

 

5. Experiments

 

5.1 Baseline Models : DIAT, CycleGAN, IcGAN

 

5.2 Datasets 

 

CelebA

40개의 속성이 존재하는 202,599 유명인 얼굴 이미지

crop $178 \times 218 \rightarrow 178 \times 178$ 

resize $128 \times 128$

 

test를 위한 2천개의 이미지를 랜덤으로 제외하고 나머지 모두 훈련 데이터로 활용 

 

RaFD

 

67 참가자로부터 찍은 4,824 얼굴 이미지

3개의 다른 각도에서 바라보는 3개의 응시 방향에서 표현되는 8가지 얼굴 표현

(4824 = 67*8*3*3)

crop $256 \times 256$

resize $128 \times 128$

 

5.3 Training

 

Adam $\beta_1=0.5, \beta_2 = 0.999$

 

0.5 확률로 horizontal filp

5번의 discrimiantor update 후 1번의 generator update

batch size : 16

CelebA 훈련 시 : 첫 10 epoch learning rate = 0.0001, 이후 10 epoch 선형적으로 learning rate decay

RaFD 훈련 시 : 첫 100 epoch learning rate = 0.0001, 이후 100 epoch 선형적으로 learning rate decay

 

NVIDIA Tesla M40 GPU 1개에 대해 하루 훈련시킴 (GPU RAM 24G로 추정)

https://www.pny.eu/en/professional/explore-all-products/legacy-products/696-tesla-m40-24gb

 

5.4 Experimental Results on CelebA

5.5 Experimental Results on RAFD

 

5.6 Experimental Results on CelebA+RaFD

 

 

StarGan-SNG (Single) / StarGan-JNT (joint)를 의미

단일 데이터세트를 이용한 학습보다 같이 사용하는 것이 더 높은 시각적 향상을 보임.

 만약 잘못된 mask vector를 적용한다면 2행과 같이 원하는 attribute에 대한 이미지가 아닌 다른 이미지가 생성됨을 확인할 수 있음. 

6. Conclusion

 

1) 단일 generator와 단일 discriminator를 사용하여 다수의 도메인에 대한 image-to-image translation이 가능한 StarGAN을 제안한다.

2) 다수의 도메인을 사용하는 scalability(확장성)뿐 아니라 높은 시각적 질을 가지는 이미지를 생성할 수 있다.

3) 특히 mask vector를 사용함으로써 다양한 도메인 label이 있는 다수의 데이터 세트를 활용할 수 있다.

 

Reference

공식 Github

https://github.com/yunjey/stargan

 

GitHub - yunjey/stargan: StarGAN - Official PyTorch Implementation (CVPR 2018)

StarGAN - Official PyTorch Implementation (CVPR 2018) - GitHub - yunjey/stargan: StarGAN - Official PyTorch Implementation (CVPR 2018)

github.com

 

도움이 되는 YouTube 1. 나동빈님 

https://youtu.be/-r9M4Cj9o_8

 

 

 

 

 

0000 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading