GAN loss (SGAN, ACGAN, PGGAN, StyleGAN1, CycleGAN)

김민경·2020년 11월 19일
0

SGAN (Semi-Supervised Learning GAN)

  • DCGAN 기반
  • objective function 언급이 없음.

ACGAN (Auxiliary Classifier GAN)

* standardGAN

  • D는 XrealX_{real}들어갔을 때 Source = real일 확률 + XfakeX_{fake}들어갔을 때 Source = fake일 확률을 maximize하도록 훈련함.
  • G는 Xfake=G(z)X_{fake} = G(z)를 생성
  • P(SX)=D(X)P(S | X) = D(X)

* ACGAN

  • framework

  • 목적함수는 2개로 구성
    : 맞춘 source의 log-likelihood LSL_S / 맞춘 class의 log-likelihood LCL_C

  • D는 LS+LCL_S+L_C를 maximize하도록, G는 LSLCL_S-L_C를 maximize하도록 훈련

  • 모든 생성된 샘플에는 기존의 noise z에 더해 해당 class label cc~pcp_c가 있음.
  • G는 Xfake=G(c,z)X_{fake} = G(c,z)를 생성

  • input : class 임베딩 & noise 벡터
  • output : 이진 분류기 (real/fake) & multi-class 분류기 (이미지 class)

(출처 : https://stephan-osterburg.gitbook.io/coding/coding/ml-dl/tensorfow/chapter-4-conditional-generative-adversarial-network/acgan-architectural-design)

논문) Conditional Image Synthesis with Auxiliary Classifier GANs

PGGAN (Progressive Growing of GANs)

  • G와 D는 거울구조를 가짐.
  • WGAN-GP(Gradient Penalty) loss 사용 + 미니배치 당 G와 D의 최적화를 번갈아가면서 함. (ncritic=1n_{critic}=1)


    (이때, gp는 loss function이 수렴하는데 영향을 주지 않음)
  • WGAN의 weight clipping은 Lipschitz 제약을 적용해서 종종 poor samples을 생성하거나 수렴에 실패하는 경우 발생
    → weight clipping 대신 critic의 weight에 penalty를 준 것이 WGAN-GP
  • 추가적으로 discriminator의 output이 0으로부터 너무 멀리 떨어지는 것을 방지하기 위해 discriminator loss에 4번째 term을 넣음

(참고)

  • WGAN-GP에서 ncritic=1n_{critic}=1로 둔다는 것

(Critic : GAN의 discriminator와 유사한 역할)

논문) D2PGGAN: TWO DISCRIMINATORS USED IN PROGRESSIVE GROWING OF GANS
논문) Wasserstein GAN
논문) PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION
참고) https://study-grow.tistory.com/entry/Deep-learning-%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B0-StyleGAN-loss-%EC%9D%B4%ED%95%B4-%EC%96%95%EA%B2%8C-%EC%9D%BD%EB%8A%94-WGAN-WGAN-GP

StyleGAN1

  • discriminator, loss function을 수정하지 않고 generator의 architecture만 수정했음.
  • Style-based generator architecture
  • style-based G는 input latent z를 intermediate latent vector v로 임베딩함으로써 특징들이 선형적으로 잘 분리된 상태가 되게 함.

  • G에 직접적으로 noise를 넣어줌으로써 생성된 이미지의 stochastic 변형(ex>주근깨, 머리)으로부터 high-level 특징(포즈, identity)을 자동으로 분리할 수 있음.

  • affine 변환을 통해 w를 styles y=(ys,yb)y = (y_s, y_b)로 구체화하고 synthesis network의 각 conv layer 후에 AdaIN 정규화를 수행함.

  • WGAN-GP loss 사용했음 (그대로)

논문) A Style-Based Generator Architecture for Generative Adversarial Networks

StyleGAN2

  • loss function 언급이 없음,,,

CycleGAN

(1) Adversarial loss

* X → Y인 경우

:

* 반대로 Y → X인 경우

: LGAN(F,DX,Y,X)L_{GAN}(F,D_X,Y,X)

  • X 도메인에서 Y 도메인으로 매핑하고 역매핑도 해야 하므로 2개의 generator를 사용했고 도메인이 2개니까 2개의 discriminator 사용 (도메인의 수만큼 G, D 수 정해짐)

(2) Cycle-consistency loss

  • x → G(x) → F(G(x)) ≈ x / y → F(y) → G(F(y)) ≈ y
  • 한 도메인이 다른 도메인으로 갔다가(생성) 원래 도메인으로 잘 복원하도록 함.
  • 즉, 이미지의 도메인(스타일)을 바꾸되, 다시 원본으로 복원 가능한 정도로만 바꾸는 것

(3) Full loss

+ (4) Identity loss

  • input과 output의 색감 유지를 위해 도입
  • target 도메인 Y가 input으로 들어왔을 때, 동일한 Y 도메인으로 매핑하는 경우 차이가 적도록해 도메인 Y의 색감을 유지할 수 있도록 한다.

논문) Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

profile
투빅스14기

0개의 댓글