Multi-domain Image-to-Image Translation (StarGAN,RelGAN)

tobigs-gm1·2020년 11월 10일
16

GAN

목록 보기
5/6
post-thumbnail

작성자 : 동덕여자대학교 정보통계학과 한유진

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

1. 등장 배경

  • 기존의 image-to-image translation 연구(Pix2Pix, CycleGAN, DiscoGAN 등)는 3개 이상의 도메인에서 안정적으로 동작하지 않습니다.
  • 도메인수에 따라 Generator수가 증가하게 되는 단점이 있습니다.(k가 도메인의 개수이면 k(k-1)개의 generator를 학습)

2. StarGAN의 큰 특징

  • 단일 모델만을 사용하여 여러가지의 domain들에대해 image-to-image translation이 가능합니다(한이미지에서 나이, 성별 등 여러개의 attribute를 한번에 바꾸기 가능)
  • mask ventor를 이용하여 다른 domain을 가진 dataset들을 동시에 학습시킬수있다.

<용어 정리>

attribute : 이미지에 내재된 의미있는 feature(특징)를 말합니다. ex) gender, age, hair color,,

attribute value : attribute의 특정한 값입니다. ex) gender의 attribute values -> male/female, hair color -> balck/blond/brown/,,/

domain : 동일한 attribute value를 가지는 이미지 셋 입니다. ex) gender가 male인 image들이 하나의 domain이 됩니다.

3. Overview of StarGAN

(a) D : x → {Dsrc(x), Dcls(x)}, D는 real image나 fake image가 들어오면 real인지 fake인지 구분함과 동시에 real image일때 해당 domain으로 분류해내는 것을 학습합니다. 즉, D는 source와 domain labels에대한 확률분포를 만들어 냅니다.

(b) G의 input으로 {input image, target domain}이 들어갑니다. 여기서 target domain은 label(binary or one-hot vector의 형태)로 들어가게되고, ouput으로 fake 이미지를 생성합니다.

(c) G는 original doamin label(원래 내가 가지고 있던 image의 one-hot vector)을 가지고 fake image를 다시 original image로 reconstruction하려고 합니다. 그래서 output이 원래의 input image와 유사하게끔 만들어진 이미지라해서 Reconstructed image라고 부릅니다.

(d) D를 속이는 과정입니다. G는 real image와 구분불가능하고 D에의해 target domain으로 분류될수 있는 이미지를 생성하려 합니다.(real image처럼 보이려고 노력)

그림에서는 Generator가 2개인것처럼 보이지만 한개의 Generator를 다른 용도로 2번 사용된 것 입니다.

4. Loss

미리보는 full objective! 이제 하나하나씩 살펴보도록 하겠습니다

1. Adversarial Loss

  • G는 x와 target domain label을 가지고 G(x,c)라는 이미지를 생성하고, D는 real and fake image들을 구분하려하는 loss입니다.
  • 만약 D가 real로 분류 -> 1에 가까운 값으로 출력, fake로 분류 -> 0에 가까운값으로 출력될것입니다.(왜 0과 1? D는'source와 domain labels에대한 확률분포를 만들어 낸다')
  • Loss는 작은게 좋은것! real image 인 x 에대해서 Dsrc(x)는 1을 가지도록, Dsrc(G(x,c))에서는 G가 real인 것처럼 학습을 진행해야하니 역시 1을 가지도록 학습한다면 Loss가 최소가 될 것입니다.(-log함수는 1에 가까우면 0으로 수렴, 0에 가까우면 ∞로 발산)

2. Domain Classification Loss

  • input image x 와 target domain label c가 주어질때, x가 ouput image y로 변환되어 그것이 target doamin c로 분류되는 것이 목적입니다.
  • 그렇기 떄문에 D와 G를 optimize할때 domain classification loss를 부과합니다.
  • Domain Classification Loss 두개의 term으로 나눠질수 있습니다.

2-1 domain classification loss of real images used to optimize D

real image가 들어오면 real image에 대한 original 도메인 값으로 분류되게하는 loss입니다. adversarial loss와 같고, 결국엔 이 Loss를 최소화시켜야 합니다.(D를 위해서 사용)

2-2 domain classification loss of fake image used to optimize G

target 도메인으로 바뀌어 생성된 이미지가 target domain으로 분류될 수 있게 이 Loss를 최소화 시켜야 합니다.(G를 위해서 사용)

3. Reconstruction Loss

  • 위의 Loss들 만으로는 input image의 target domain에 관련된 부분만을 변화시킬때 input image 본래 형태를 잘 보존 할 수 없기에 Generator에 한 가지 loss를 더 추가하였습니다.
  • G는 G가 생성해낸 이미지와 original doamin label c'를 input으로 받아, target domain부분은 변화시키되 input image x의 형태를 유지하게끔 복원해내기 위해서 cycle consistence loss를 이용하였습니다.

4. 다시한번 full objective를 보자!

  • λcls, λrec -> hyperparameter입니다. domain 분류와 reconstruction loss들 의 상대적인 중요도를 컨트롤합니다.
  • D는 adversarial Loss를 maximize하길 원하기 때문에 마이너스가 붙은것이고, G는 minimize되길 원하기 때문에 마이너스가 붙지 않을것을 확인할 수 있습니다.(논문에서 λcls = 1로, λrec=10으로 설정)

5. Mask vector

  • 논문에서 사용된 dataset은 facial attribute만 가지고 있는 CelebA와 facial expression만 가지고 있는 RaFD를 사용했습니다.
  • 이는 서로 다른 도에인이기 때문에 저자는 mask vector, m이라는 개념을 도입하였습니다.
  • m은 one-hot vector로 나타내어지고, 두 dataset을 합칠때는 concate하면 됩니다.

~c = [c1, ... , cn,m]

  • ci : i번째의 dataset의 label들의 vector(ci는 binary attribute를 가진 binary vector 또는 categorical attribute를 가진 one-hot vector)
  • CelebA와 RaFD를 교차시킴으로써 D는 두 dataset에서 차이를 구분짓는 모든 feature들을 학습하게 되고, G는 모든 label을 컨트롤하는것을 학습하게 됩니다.

6. StarGAN의 전체적인 구조

7. Result


  • Celeb A와 RaFD를 128*128로 동일하게 맞춰준 후에 모델에 넣었으며 CelebA에서는 40개의 attribute중에 7개만 뽑아서 사용했고 RaFD는 작은 dataset이어서 모두 사용했습니다.
  • starGAN single은 RaFD dataset만을 사용해서 뽑은 결과로 dataset 크기가 작아서 부자연스러운 부분이 있지만 StarGAN joint는 dataset을 모두를 사용하여 뽑아낸 결과로 확실히 좋은 성능을 보인다는 것을 알 수 있습니다.
  • muptiple domains + multiple datasets 학습가능!

StarGAN v2 : Diverse Image Synthesis for Multiple Domains

1. StarGAN v1 -> StarGAN v2

  • 각 domain에 대한 결정을 한번에 하나씩 직접해야합니다. -> 어떤 domain의 image 한개를 target domain의 여러 다양한 image로 변경 할 수 있습니다.
  • 데이터 분포에 대한 다양한 특성을 반영하지 못합니다. -> 특정 도메인에 대한 다양한 style들을 표현할 수 있습니다.

2. KEY POINT!

  • Mapping Network : 임의의 가우스 노이즈를 스타일 코드로 변환하는 것을 학습
  • Style Encoder : 주어진 소스 이미지에서 스타일 코드를 추출하는 것을 학습

3. Framework

  • X와 Y를 각각 이미지와 가능한 도메인의 집합이라고 부르겠습니다.
  • X에 속하는 이미지 x와 Y에 속하는 임의의 도메인 y가 주어졌을 때 StarGAN v2의 목표는 하나의 Generator만으로 이미지 x를 도메인 y의 이미지로 변형하되, 다양한 스타일로 변형할 수 있도록 학습하는 것입니다.

(a) Generator : G의 역할은 다른 GAN과 유사하지만 input image x가 들어가면 output으로 G(x,s)가 나옵니다. style vector인 s는 AdaIN(Adaptive instance normalization)을 통해 주입됩니다. s는 도메인 y의 스타일을 대표하도록 밑에 나올 mapping network F나 style encoder E에 의해 만들어집니다.

(b) Mapping network : random latent vector z와 domain y가 주어졌을때 Mapping network인 F는 style vector s=Fy(z)를 만듭니다. 즉, domain y를 대표하는 latent vector z를 style vector s로 mapping해 줍니다. F는 다중출력 MLP로 구성됩니다.

(c) Style Encoder : image x와 domain y가 주어지면 E는 image x 에서 style information을 추출하는 역할을 합니다. s=Ey(x).

(d) Discriminator : D는 다중 출력 Discriminator입니다. D의 각 branch는 이미지 x가 real인지 fake인지 이진 분류할 수 있도록 학습합니다.

4. Training objectives

1. Adversarial objective

  • StarGAN에서 봤던것이랑 똑같고, 특징은 latent vector z와 타깃 도메인 ~y를 랜덤하게 샘플링해, 타깃 스타일 벡터 ~s 를 input으로 넣어다는 것이 특징입니다.

2. Style reconstruction

  • 스타일에 맞게 잘 변화시키기 위한 것입니다.
  • ~s = F~y(z), fake image를 만드는데 사용한 style code와 만들어진 fake image를 단일인코더 E에 넣어 얻은 style code를 비교하는 것입니다.
  • fake image에 우리가 원하는 스타일코드 ~s가 많이 적용되었을 수록 인코더를 통과한 fake image가 ~s랑 비슷해질것입니다. 즉, 얼마나 우리가 원하는 style에 기깝게 fake image가 생성되었는가를 판단해주는 loss라고 할 수 있습니다.

3. Style diversification

  • 다양한 style을 생성할 수 있게 하기 위해 추가된 loss입니다. 여기서 s1,s2는 각각 다른 latent vector z에서 생성된 style vector입니다. 이 loss는 최적화 지점이 없기 때문에, 선형적으로 weight를 0으로 줄여가며 학습했다고 합니다.

4. Cycle consistency loss

  • 위의 loss들만을 가지고는 생성된 이미지가 input image x에 대해 도메인에 해당하지 않는 속성들을 보존하고 있는지 확신할 수 없기 때문에 cycle consistence loss를 추가하였습니다. (s^은 Ey(x)로 input image x에 대해서 추출된 style vector)

5. Full objective

  • λ는 하이퍼파라미터로 adversarial loss를 기준으로 각 loss의 중요도를 반영해 정해진다고 합니다.
  • Style diversification에서 본것처럼 weight를 줄여가는 식으로 loss가 구성되었음을 알 수 있습니다.

5. Result


RelGAN: Multi-Domain Image-to-Image Translation via Relative Attributes

1. Abstract & Introduction

  • 이전 method(StarGAN 등)는 input쌍으로 (image, target attribute)를 사용하고 원하는 속성으로 출력 이미지를 생성합니다.

    • 한계점1 : 이진값 속성을 가정 -> 세밀한 제어에 대해 만족스러운 결과를 얻을 수 없습니다.
    • 한계점2 : 대부분의 target attribute가 변경되지 않더라도 전체 target attribute 집합을 지정해야합니다.

  • 해결방법 : multi-domain image-to-image translation인 RelGAN !

    • 선택한 attribute에 대해 원하는 변경을 설명하는 상대 속성(relative attribute)기반 방식을 사용합니다. RelGAN은 각 속성의 변경에 따라 입력 이미지의 전체 속성을 알 수 있습니다.(한계점2 극복)
    • 상대 속성(relative attribute)을 조건으로하는 G를 학습하기 위해 input-output 쌍이 상대 속성과 일치하는지 여부를 결정하는 matching-aware discriminator가 등장합니다.
    • 이진 속성을 가정하므로 속성 보간용으로 설계되지 X -> 보간 품질을 향상시키기 위해 interpolation discriminator(보간 판별기)를 제안 -> 편집 전후 사이의 부드럽고 사실적인 보간은 각 속성의 강도 (ex. 갈색 비율)를 세밀하게 제어할 수 있습니다.(한계점1 극복)
    • relative attribute
      • (x,a^) —→ (x,v), v(relative attributes) △= a^ - a
      • 상대 속성의 값은 각 속성을 변경하는 데 필요한 양을 직접 인코딩합니다. 특히, 0이 아닌 값은 관심있는 속성에 해당하고 0 값은 변경되지 않은 속성에 해당합니다.
      • a : original doamin(n-dim), a^ : target attribute vector(n-dim)

2. Overview of RelGAN

  • RelGAN = 1개 Generator + 3개의 Discriminators, D = {DReal, DMatch, DInterp}
  • G는 (1) realistic images, (2) accurate translations in terms of the relative attributes(상대 속성 측면에서 정확한 번역), (3) realistic interpolations(현실적인 보간)을 목표로 학습합니다.
  • target image와 input image의 realtive attributes를 계산합니다.
  • G가 facial attribute transfer이나 interpolation을 수행합니다. 여기서 G의 목표는 밑의 세가지의 D를 속이는것입니다.
  • Dreal : real/fake구분, Dmatch : real triplets과 generated/wrong triplets을 구분, Dinterp : interpolation정도 예측

3. Method

  • 목표: input image x를 ouput image y로 변환할때, y가 realistic하게 보이고, target attributes을 가지게 하는 것입니다.
  • 도메인이 n-dimensional attribute vector a =[a(1),a(2),...a(n)]T로 특정지어지며, a(i)는 각 속성(age, gender, hair color)을 의미합니다.

3-1 Relative Attributes

  • v(relative attributes) △= a^ - a
  • relative attributes을 통한 facial attribute interpolation(얼굴 속성 보간) : x와 G (x, v) 사이의 보간을 수행하려면 G (x, αv)를 적용하기 만하면됩니다. 여기서 α ∈ [0, 1]은 보간 계수입니다.

3-2 Adversarial Loss

  • 생성된 이미지와 실제 이미지를 구별할 수 없도록 하기 위한 loss로 G는 realistic한 이미지 생성, D는 real/fake 구분이 목적입니다.

3-3 Conditional Adversarial Loss

  • 출력 이미지 G (x, v)가 realistic하게 보일뿐만 아니라 x와 G (x, v)의 차이가 상대 속성 v와 일치해야합니다.이 요구 사항을 달성하기 CGAN의 개념을 적용하고 이미지와 conditional variables (x, v)를 입력으로받는 conditional discriminator인 DMatch를 도입합니다.

  • Dmatch는 real인 (x, v, x') 와 fake인 (x, v, G(x, v))를 구분하는것이 목적입니다.

  • real triplet (x, v, x') : 2개의 이미지 (x,x')과 relative attribute vector(v = a'- a)

  • 주의! x와 x '는 서로 다른 속성을 가진 서로 다른 identities, training data는 짝을 이루지 않습니다.

  • wrong triplets을 추가함으로써 DMatch는 real triplet을 +1 (real&matched)로 분류하고 fake/wrong triplet을 모두 -1 (fake or mismatched)로 분류합니다.

3-4 Reconstruction Loss

  • G (x, v)가 realistic하게 보이고 x와 G (x, v)의 차이가 상대 속성과 일치하도록 출력 이미지 G (x, v)를 생성하도록 G를 훈련시킬때, G가 low level에서 high level까지 다른 모든 측면을 보존하면서 해당 속성 관련 콘텐츠만 수정한다는 보장은 없습니다. 그래서 G의 정규화를 위해 cycle-reconstruction loss 와 self-reconstruction loss를 도입했습니다.
  • Cycle-reconstruction loss : cycle consistency 개념을 적용하고 G(:, v), G(: ,−v)를 서로 inverse되어야 합니다.
  • Self-reconstruction loss : 상대 속성 벡터가 0이면 속성이 변경되지 않았음을 의미하는 경우이고 출력 이미지 G (x, 0)는 가능한 한 x에 가까워야합니다.

3-5 Interpolation Loss

  • G는 high-quality interpolation을 위해 보간 된 이미지 G (x, αv)가 realistic하게 보이도록 학습합니다. 이 loss는 G (x, αv)를 보간되지 않은 출력과 구별 할 수 없도록하는 정규화를 제안합니다.
  • G와 경쟁하기 위해 세 번째 판별 자 DInterp가 등장합니다.
  • DInterp의 목표 : 생성된 이미지를 input으로 가져 와서 αˆ = min (α, 1 − α)로 정의되는 보간 정도 αˆ를 예측하는 것입니다. 여기서 αˆ = 0은 보간 없음을 의미하고 αˆ = 0.5는 최대 보간을 의미합니다.
  • (6) 첫번째 term : G (x, αv)에서 αˆ복구를 목표, 두/세번째 term : 보간되지 않는 이미지에 대해 0을 출력하도록 권장합니다.
  • (7) G는 DInterp를 속여 G (x, αv)가 보간되지 않는다고 생각하게끔 만들고 싶어합니다.
  • (8)과 같은 수정 된 손실이 적대적 훈련 과정을 안정화 시킨다는 것을 알게됩니다.I[·]는 인수가 참이면 1이고 그렇지 않으면 0 인 표시하는 함수입니다.


3-6 Full Loss

  • 훈련 과정을 안정시키기 위해 우리는 손실 함수에 orthogonal regularization(직교 정규화)를 추가합니다. D = {DReal, DMatch, DInterp} 및 G에 대한 전체 손실 함수는 (9),(10)으로 표현됩니다.
  • orthogonal regularization은 Overfitting에 의해 모델의 성능저하를 예방하는 정규화 방법 중 하나입니다. RelGAN저자는 BigGAN논문에서 쓰인 orthogonal regularization을 가져다 쓴것인데 그 논문에서 Generator에 직교 정규화를 적용하면 Generator input의 분산을 줄임으로써 샘플 fidelity와 variety 사이의 균형을 미세하게 제어 할 수있는 간단한 "truncation trick"을 사용할 수 있다고 말했습니다.
  • "truncation trick"? 실제로 학습 데이터의 분포를 고려하면, density가 낮은 부분의 경우 학습 후 표현이 잘 되질 않습니다. 즉, 생성기가 제대로 학습을 하지 못합니다. 이러한 부분을 방지하기 위하여 쓰는 방법입니다. GAN model이 잘 학습하기 위한 것이 아니라, GAN model에서 generating된 이미지를 뽑아낼 때, 뽑아내는 것을 더 잘하기 위한 trick.

  • (1) identity유지 X, (2) input image를 reconstruct하는 방법만 학습, (3) 위에 것들에 비해 reasonable한 결과, (4) 모든 loss 다 사용! -> 최상의 결과 도출

4. Network Architecture

  • Generator : relative attribute를 사용하여 interpolation에 따른 다양한 이미지 생성
  • Dmatch : real(l,v,l')과 fake(l,v,G(l,v))를 구분하는게 목적/ I, G(I,v)의 차이가 상대속성인 v와 일치하길 원하기에 도입된 판별기

    Dreal : real/fake 구분

    Dinterp : 생성된 image들을 input으로 받아 보간정도 예측

5. Code


  • d_out1 = D_real, d_out2 = D_match, d_out3 = D_interp

6. Result

  • 3개의 dataset을 이용하여 256*256으로 resize

  • 얼굴속성변환

  • 보간

Reference

starGAN : https://hichoe95.tistory.com/39

https://www.youtube.com/watch?v=-r9M4Cj9o_8

https://hichoe95.tistory.com/39

starGAN v2 : https://comlini8-8.tistory.com/13

https://www.youtube.com/watch?v=KO_mOGKdxOw

http://kozistr.tech/deep-learning/2020/02/10/StarGANv2.html

https://wingnim.tistory.com/96

https://skyil.tistory.com/90

RelGAN : 생성모델 컨퍼런스 신민정님 자료

코드 https://github.com/willylulu/RelGAN

https://github.com/elvisyjlin/RelGAN-PyTorch

truncation trick https://myeonghui-deep.tistory.com/6

https://jayhey.github.io/deep%20learning/2019/01/16/style_based_GAN_2/

profile
투빅스 생성모델 세미나입니다.

7개의 댓글

comment-user-thumbnail
2020년 11월 16일

투빅스 14기 김상현
이번 강의는 multi-domain image-to-image translation에 관련된 논문 리뷰 강의로 투빅스 14기 한유진님이 진행해주셨습니다.

StarGAN v1

  • 단일 모델에서 여러 domain에 대해 image-to-image translation이 가능하고, mask vector를 이용하여 다른 domain을 가진 dataset들을 동시에 학습시킨다.
  • 판별자는 real/fake classification과 domain classification을 수행한다. 생성자는 target domain과 input image를 입력 받아 fake image를 생성한다.
  • Loss는 adversarial, domain classification, reconstruction으로 구성된다. Adversarial은 기존 GAN의 loss와 유사하다. Domain classification의 경우 판별자는 real image의 domain classify하면서 최적화되고, 생성자는 fake image의 domain classify하면서 최적화된다. Reconstruction은 domain외에 기존 형태를 잘 보존하기 위해 사용되며 생성자를 최적화한다.
  • Mask vector는 서로 다른 데이터셋의 다른 도메인들을 concat을 이용해 합친 후 마지막에 어떤 데이터셋의 도메인인지 구분 짓는 m을 추가한 vector.

StarGAN v2

  • Target domain의 여러 다양한 이미지로 변경할 수 있다.
  • 생성자는 style vector s가 들어가면 AdaIn을 통해 style을 주입해서 style이 변한 이미지를 바꾼다. 여기서 s는 domain y에 대해 latent z에 관한 경우 mapping network를 통해 얻어지고, image x에 관한 경우 style encoder를 통해 얻어진다. 판별자는 각각의 도메인에 대해 real/fake를 이진 분류한다
  • Loss는 adversarial, style reconstruction, style diversification, cycle consistency로 구성된다. Style reconstruction은 mapping network에서 생성된 s를 학습하기 위해 해당 s로 생성된 이미지를 style encoder에 넣어서 비교한다.

RelGAN

  • 상대 속성 기반 방식을 이용해 전체 target attribute 집합을 지정할 필요없이 속성 변경에 따라 전체 속성을 알 수 있고, 이를 조건으로 학습하기 위해 matching-aware 판별자를 사용한다. 또한, 보간 정도의 제어를 위해 interpolation 판별자를 사용한다. 따라서 1개의 생성자와 3개의 판별자로 구성되어 있다.
  • Loss는 adversarial, conditional adversarial(match), reconstruction, interpolation으로 구성된다. Match loss는 real x와 generated G(x,v)의 차이가 상대 속성 v와 일치하게 학습한다. Reconstruction은 cycle과 self로 나뉘며, self는 G(x,0)과 x의 차이를 최소화하며 학습한다. Interpolation은 G(x,$\alpha$v)를 보간되지 않은 출력과 구별 할 수 없게 정규화를 지행하여 보간 된 이미지가 realistic하게 보이도록 한다.
  • 학습의 안정화를 위해 orthogonal regularize를 진행한다.

multi-domain 이미지 변환의 GAN 모델들의 구조 및 손실함수를 통해 각각의 모델들의 학습방법을 전체적으로 이해할 수 있었습니다.
유익한 강의 감사합니다!

답글 달기
comment-user-thumbnail
2020년 11월 17일

투빅스 13기 이예지:
이번 강의는 ‘Multi-domain image to image translation’으로, 한유진님이 진행하였습니다.

StarGAN v1

  • 도메인 수에 따라 generator의 수가 증가하는 단점을 보완하고자 함.
  • 총 3가지의 loss 사용함.
  • adversarial loss: real and fake의 구분
  • domain classification loss: 도메인 레이블 c가 주어졌을 때 변환된 이미지가 해당 c로 분류되게끔 함.
  • reconstruction loss: input image의 형태를 잘 보존하기 위해 추가함.

StarGAN v2

  • StarGAN v1은 각 도메인에 대한 결정을 한 번에 하나씩 직접해야하는 불편함이 있어, StarGAN v2는 이미지를 다양한 타켓 도메인 형태로 이미지를 변경할 수 있게 만들어짐.
  • Mapping Network: 임의의 가우스 노이즈를 스타일 코드로 변환함.
  • Style Encoder: 주어진 소스 이미지에서 스타일 코드를 추출하는 것을 학습

RelGAN

  • StarGAN의 경우 input으로 (image, target attribute)를 사용하고 원하는 속성으로 출력 이미지를 생성함.
  • 선택한 attribute에 대해 원하는 변경을 설명하는 relative attribute 기반 방식을 사용하여 속성 변경에 대해 반영 정도를 조절할 수 있음.
  • adversarial loss: real and fake의 구분
  • conditional adversarial loss: 출력이미지를 realistic하게 보이게 하고, 입력 이미지와 생성 이미지의 차이가 상대속성 v와 일치하게 함.
  • reconstruction loss: conditional adversarial loss에서 G가 low level에서 high level까지 모든 측면을 보존하면서 속성과 관련된 컨텐츠만 수정한다는 보장이 없음. 이에 따라 정규화를 위해 두가지(cycle-reconstruction loss, self-reconstruction loss)를 도입함.
  • interpolation loss: high-quality interpolation을 위해 속성이 변경된 이미지가 realistic할 수 있도록 정규화를 추가하였음.

Multi-domain에 대한 다양한 접근을 알 수 있었습니다. 또한 어떻게 로스를 구상했는지 살펴보는 좋은 기회가 된 것 같습니다.
좋은 강의 감사합니다 :)

답글 달기
comment-user-thumbnail
2020년 11월 17일

투빅스 14기 정재윤:

오늘은 투빅스 14기 한유진님께서 Multi-domain Image to Image Translation이라는 주제로 강의를 진행해주셨습니다.

  • 지금까지의 image to image translation은 항상 2개의 domain에서 진행됐습니다. 그래서 domain이 3개 이상으로 늘어나게 되면 모델이 안정적으로 동작하지 않게 됩니다.

  • 이런 점을 개선해서 나온 것이 StarGAN입니다. starGAN은 하나의 generator로 여러 domain의 이미지들을 생성해낼 수 있습니다. 알아둬야할 중요한 특징은 2개의 generator를 사용하는 것이 아닌 한 개의 generator를 다른 용도로 2번 사용한다는 점입니다.

  • starGAN의 loss 중 주의해야할 점은 domain classification loss를 포함한다는 점입니다. 이 loss는 input image와 target domain label을 input으로 넣을 때, 만들어지는 output image가 target domain으로 분류시키기 위한 것입니다.

  • 이런 starGAN 역시 단점이 있었습니다. 각 domain에 대한 결정을 한 번에 하나씩 직접해야한다는 점과 데이터 분포에 대한 다양한 특성을 반영하지 못한다는 점입니다. 그래서 나온 것이 starGAN v2입니다. starGAN v2의 generator는 style vector를 AdaIN을 통해 주입하여 이미지를 만들어줍니다.

  • 이미지 생성에 있어서 많은 발전을 했지만 세세한 조정은 여전히 불가능했습니다. 이를 가능케 한 모델이 바로 RelGAN입니다. RelGAN은 선택한 attribute에 대해 원하는 변경을 할 수 있는 relative attribute 기반 방식을 사용하여 속성 변경에 대해 반영정도를 조절 할 수 있습니다.

  • 특히 interpolation loss가 인상적입니다. 이 loss는 생성된 이미지를 보간되지 않은 출력과 구별할 수 없도록 하는 정규화를 제안합니다. 하여 생성기는 판별기를 속여 생성된 이미지가 보간되지 않는다고 생각하게끔 만듭니다.

Multi-domain에 대한 다양한 모델과 발전과정을 순차적으로 알 수 있는 강의였습니다. 모델의 구조와 로스에 대해 쉽게 이해할 수 있었습니다. 감사합니다 😊

답글 달기
comment-user-thumbnail
2020년 11월 17일

투빅스 14기 박지은

  • StarGAN v1은 단일 모델과 mask vector을 이용하여 여러 domain의 데이터셋을 동시에 학습시키고, image-to-image translation을 할 수 있습니다. 먼저 Adversarial Loss에서 생성자가 이미지를 생성하고 판별자는 이를 구분하려는 loss입니다. 이는 1을 가지도록 학습하여 최소화시켜야 합니다. 다음으로 Domain Classification Loss는 input image x와 target domain label c가 주어질 때, x가 output image y로 변환되어 target domain c로 분류하기 위해 domain classification loss를 추가합니다. Reconstruction loss는 input image 본래의 형태를 잘 보존하기 위해 생성자에 추가합니다.
  • StarGAN v2는 각 domain에 대한 결정을 하나씩 직접 해야한다는 점과 데이터 분포의 다양한 특성을 반영하지 못하는 v1과 달리 특정 domain의 하나의 이미지를 target domain의 다양한 이미지로 변경하고 다양한 style를 표현할 수 있습니다. 먼저 style reconstruction은 스타일에 맞게 잘 변화시키기 위해 가짜 이미지 생성에 사용된 style code와 fake image를 비교하여 원하는 style에 가짜 이미지가 생성될수록 작아지는 loss입니다. 다음으로 style diversification은 다양한 style을 생성하게 해주는 loss입니다. 마지막으로 input image x의 도메인에 해당하는 속성을 보존하기 위해 cycle consistency loss도 추가합니다.
  • RelGAN은 multi-domain image-to-image 변형을 합니다. 이는 relative attributes를 통한 얼굴 속성 보간을 적용하여 이루어집니다. 또한 DMatch를 도입하여 출력 이미지가 realistic하게 보이고 x와 G(x, v)의 차이가 상대 속성 v와 일치하게 합니다.
    수식을 자세히 설명해주셔서 이해에 도움이 되었습니다. 좋은 강의 감사드립니다!
답글 달기
comment-user-thumbnail
2020년 11월 17일

투빅스 14기 박준영
이번강의는 투빅스 14기 한유진님께서 StarGAN /ReIGAN을 주제로 진행해주셨습니다.

  • 도메인수에 따라 Generator수가 증가하기때문에 여러가지 domain에 대한 단일 모델을 만들기 위해
    starGan과 REIGAN이 나왔습니다.

  • StarGan은 단일 모델만을 사용하여 여러가지 domain들에 image-to-image translation가 가능하고 mask ventor를 이용하여 다른 domain을 동시에 학습시킬 수 있습니다.

  • Training the discriminator에서 real, fake를 구분하는 동시에 real image일때 domin으로 분류하는 것을 학습하여 source와 domain labels에 대한 확률분포를 만든다

  • original-to-target-domain Generator의 input으로 input image, target domain이 들어가 output으로 fake이미지를 생성하고

  • Target-to-original-domain Generator에서 domain label을 가지고 원본 이미지로 reconstrucion하는 과정으로 stargan이 이루어진것을 배웠습니다.

  • stargan의 loss는 adversarial loss, domain classification loss, reconstruction loss로 이루어졌다는 것을 배웠습니다.

  • domain의 image 한개를 target domain의 여러 다양한 image를 변경하고 특정 도메인에 대한 다양한 style들을 표현 할 수 있게 개선된 Stargan2가 나왔습니다.

  • stargan2는 Stylegan과 비슷하게 mapping networkF와 style encoder E로 style vector를 만들고 AdaIN으로 style를 입혔다는 점이 흥미로운 부분이었습니다.

  • RelGAN은 relative attribute 방식을 사용하여 각 속성의 변경에 따라 입력 이미지의 속성을 알 수 있게하였고 relative attribute을 사용하는 Generator를 학습하기 위해 input-output 쌍이 matching-aware discriminator를 사용하여 상대 속성과 일치하는지 판별하는 특징을 가진다는 것을 배웠습니다.

Multi-domain에 대해 많은 것을 배울 수 있었던 강의였습니다. 특히 loss 부분을 자세히 볼 수 있는 좋은 기회였습니다.
감사합니다!!

답글 달기
comment-user-thumbnail
2020년 11월 18일

투빅스 12기 김태한

이번 강의는 투빅스 14기 한유진님이 StarGAN /ReIGAN을 주제로 강의해주셨습니다.

StarGAN과 RELGAN 둘다 domain의 크기가 증가함에 따라 generator의 개수도 증가하는 문제를 해결하기 위하여 탄생하게된 모델입니다.

StarGAN의 특징은 Image to Image translation이 가능하며 여러 domain에 대해 동시에 학습한다는 특징이 있습니다.
여기서 가장 큰 특징으로는 기존의 이미지를 reconstruction하는 loss가 있다는 것 같습니다.
loss가 굉장히 독특하며 adversarial loss, domain classification loss, reconstruction loss 총 3가지로 구성되어 있습니다.
다는 점이 흥미로운 부분이었습니다.

RelGAN의 경우 이미지의 속성을 반영할 수 있도록 generator를 학습하며 matching aware discriminator를 사용하여 input과 output이 대응되는 속성과 일치하는지 판별하는 특징을 가지고 있습니다.

multi-domain에서 loss를 여러 방면에서 조절함으로써 좋은 결과를 낼 수 있다는 것을 알 수 있었습니다.

좋은 강의 너무너무 감사합니다!!

답글 달기
comment-user-thumbnail
2020년 11월 18일

투빅스 11기 이도연
지난 Image to Image Translation에서 다룬 Pix2Pix, CycleGAN에서 더 나아가 Multi-domain을 다루는 StarGAN과 RelGAN에 대해 다룬 강의였습니다. 좋은 강의 감사합니다!!

  • 기존의 image-to-image translation 연구들은 3개 이상의 도메인에서 안정적으로 동작하지 않으며, 도메인 수에 따라 Generator 수가 증가하는 단점이 있다. 이번 시간에는 단일 모델로 Multi-domain Image-to-Image translation을 하는 StarGAN과 RelGAN에 대해 다뤘다.
  • [StarGAN] StarGAN의 Generator는 input으로 Image와 one-hot-vector Domain을 받아 이미지를 생성한다. Generator는 두 가지 용도로 쓰이는데 하나는 Original input image와 Target domain으로부터 Target domain에 해당하는 Fake image를 생성하고, 다른 하나는 생성된 Fake image와 Original domain으로부터 다시 Original domain에 해당하는 Reconstructed image를 생성한다. 이를 보고 지난 시간에 배운 CycleGAN이 떠올랐는데 Generator의 input으로 Domain 정보를 같이 줘서 하나의 Generator로 여러 Domain에 대한 학습이 가능하도록 한 것 같다. Discriminator는 Real image와 Fake image를 구분함과 동시에 Domain classification 부분이 있다. 이를통해 Real image의 Domain까지 예측해서 각 도메인의 특징까지 학습할 수 있다. 또한 논문에서 CelebA와 RaFD 데이터 셋을 하나의 모델에서 학습한 결과를 보여주는데 이 때 두 개 데이터 셋의 도메인을 통합하여 학습하기 위해 mask vector를 사용했다.
  • [StarGAN v2] StarGAN은 각 도메인에 대해 동일한 변형만 가능하고 데이터 분포에 대한 다양한 특성을 반영하지 못한다. 이에 StarGAN v2에서는 다양한 도메인에 대해 다양한 이미지를 생성할 수 있도록 했다. 기존 StarGAN과 달라진 부분은 mapping network와 style encoder가 추가되었다. Generator, Mapping network, Style encoder, Discriminator에서 Generator를 제외하고는 여러개의 Output branches를 갖고 있다. 이는 학습시키는 도메인에 따라 선택된다. Mapping network F는 latent code z로부터 target domain에 있을 법한 style code s를 생성하고, Style encoder는 image에서 target domain에 대한 style code s를 추출한다. Mapping network F는 z, domain을 샘플링 함에 따라 다양한 domain의 style code를 생성하고, Style Encoder는 이미지에서 target domain에 대응하는 style을 잘 뽑아내는 느낌이다. Generator는 이렇게 생성된 s를 통해 target domain의 이미지를 생성한다. 이 모델의 손실함수 중 다양한 이미지를 생성하기 위한 다양하고 의미있는 style vector를 찾을 수 있는 diversity sensitive loss가 눈에 띄었다. 추가적으로 Generator는 오직 style code를 이용해 style을 잘 적용하는데에만 집중할 수 있어 더 좋은 이미지를 생성하고, 모듈의 공유하는 부분은 정규화 효과를 유도한다.
  • [RelGAN] 앞서 StarGAN에서 input으로 image와 target domain attribute를 사용했다. 여기에는 0, 1 이진값 속성을 가정해 세밀한 제어를 할 수 없다는 점과 대부분의 속성을 그대로 유지하고 일부만 변경할 때에도 전체 target attribute를 지정해야 한다는 한계점이 있다. 이에 RelGAN에서는 original attribute와 target attribute의 차이를 통해 상대 속성(relative attribute)을 이용하고 interpolation discriminator를 통해 보간의 정도를 세밀하게 제어할 수 있도록 했다. RelGAN은 Generator와 3개의 Discriminator(Dreal, Dmatch, Dinterp)로 이루어져 있다. Dreal은 우리가 알던 생성된 이미지에 대한 real/fake를 구분하는 것이고, Dmatch는 real triplet인 (x, v, x')과 fake triplet인 (x, v, G(x, v))를 구분하는 것이 목적이다. 결국은 x와 G(x, v)의 차이가 v가 되도록 하고 싶은 것이다. Dinterp는 보간된 이미지 G(x, αv)와 보간되지 않은 이미지 G(x, 0), G(x, v)를 구분하는 것이 목적이고 Generator가 high-quality interpolation 이미지를 생성하도록 한다. 여기서 훈련 과정을 안정시키기 위해 손실함수에 orthogonal regularization을 추가한다. 여러 속성 변환에 대한 결과와 보간의 정도를 세밀하게 조절한 결과를 볼 수 있다.
답글 달기