RelGAN
🍋

RelGAN

Tags
Machine Learning
Generative Model
Published
May 23, 2023
Author
유레미 EUREMI
🔆 이번 글에서 다룰 논문은 2019년 ICCV에서 발표된
 
⭐️ Summary
  • RelGAN은 relative target attribute를 이용해 얼굴 영역 중 변화하고 싶은 다중 속성(눈, 머리카락, 입모양 등)만을 변환할 수 있게 한다.
  • generator에게 relative attributes를 학습하기 위해, 원본 이미지와 생성된 이미지의 relative attributes이 일치되는지 결정하는 match-aware discriminator를 제안한다.
  • 모든 속성들을 완전히 파악하지 않아도 되고 각 속성이 어떤 값으로 변화하는지에 집중한다.
  • interpolation quality를 향상시키기 위해 interpolation discriminator를 제안한다.
🍭 Method
  • 단일 generator를 가지고 있으며 3개의 Discriminator로 구성되어 있다.
  • 생성된 이미지가 현실적이여야 하며, 타겟 속성 이외에는 원본 이미지에서 변화되지 않게 하고, 생성된 이미지에서 타겟 속성의 반대로 변화했을 때 원본 이미지와 차이가 없게 하기 위해 5개의 loss를 사용한다.
🦄 Future works
  • adversarial learning
  • mask mechanism 활용
 
 

기존 multi-domain image-to-image translation model의 문제점

  • binary attribute이기 때문에 interpolation 퀄리티가 좋지 않음
  • interpolation이 중요한 이유: 특성의 강도에 대한 세밀한 조절(갈색과 금발 머리색의 비율 미소/행복의 정도)이 가능하기 때문
  • 변환해야할 것은 변환하되 기존 특성은 변해서는 안됨 → 세밀한 제어가 필요함
 

기존 모델들의 문제점들을 극복하기 위한 방법

이전 모델은 input pair를 (x,^a)(x,a^)로 두었으며 여기서 x는 원본 이미지, ^aa^은 target 속성이다. 반면에 RelGAN은 (x,v)(x,v)로 설정하였는데 여기서 v는 relative attributes이다. relative attributes는 원본 속성에서 target 속성들을 뺀 벡터로 표현된다.
vΔ=^a−av=Δa^−a
notion image
위의 그림을 보면 target attributes는 변해야하는 hair color만 1을 주었고 smile도 1을 주어 변환해야하는 이미지도 smile을 보존하게끔 하였다. relative attributes는 변해야하는 영역만 1로 두어 hair color만 1로 둔 것이고 smile 또한 그대로 보존하게 하기 위해 0으로 매핑되었다. 1은 turn on, -1은 turn off, 변화하지 않으면 0이다. hair color 갈색을 turn off 해주고 금발 머리를 turn on 해준 것으로 해석할 수 있다.
notion image
RelGAN에서 interpolation을 이용해 속성의 정도를 수정할 수 있게 하였다. 이외에 다른 attribute들은 0으로 매핑해 변환시키지 않으며 위의 그림에서는 웃는 정도와 나이 정도를 이용해 자연스럽게 해당 속성을 약하게 변환할지 강하게 변환할지 조절할 수 있다.
그래서 relative-attribute 기반의 method인 RelGAN을 제안한다. RelGAN은 단일 generator G를 가지고 있고 3개의 discriminator DReal,DMatch,DInterpDReal,DMatch,DInterp로 되어있다. discriminator들은 각각 G가 현실 이미지, relative attributes로의 정확한 interpolation, 현실적인 inerplotation 이미지를 학습할 수 있게 가이드한다.

관련 논문

RelGAN과 관련있는 conditional image generation과 facial attribute transfer에 집중하였다.
  • GAN: supervised generative model
  • cGAN: text-to-image 합성과 image-to-image 변환
  • facial attribute transfer: IcGAN, StarGAN, AttGAN(StarGAN+encoder-decoder 구조를 사용함), ModularGAN(modular 구조를 제안함), FANimation

    Method

    n개의 차원의 attribute vector로 a=[a(1),a(2),...,a(n)]Ta=[a(1),a(2),...,a(n)]T로 정의한다. 여기서 a(i)a(i)는 성별, 나이, 머리색과 같은 얼굴 이미지의 속성이다. 모델의 주 목적은 원본 이미지 x를 변환해 y 이미지를 만드는 것이며 y는 타겟 속성이 변화된 채 현실적이여야하며 타겟 속성 이외에는 원본 이미지에서 변화되지 않아야한다. 즉 (x, v)가 주어졌을 때 y가 나오게 학습하는 것이다. 전체적인 구조는 아래와 같다.
    notion image
     

    Relative Attributes

    v는 원본 이미지가 가지고 있는 속성 aa에서 변화할 속성인 ^aa^를 뺀 벡터를 의미한다. 이미지 속성은 0과 1로 이루어져 있으며 relative attribute는 -1, 0, 1로 이루어져있다. 1은 turn on, -1은 turn off, 변화하지 않으면 0이다. 0에서 1 사이의 값을 갖는 αα를 v에 곱해서 attribute의 강도를 조절하며 interpolation이라 말할 수 있다.
    G(x,αv)G(x,αv)
     

    Adversarial Loss

    D는 GAN에서 사용되는 이미지와 가짜이미지를 비교하는 판별자이다. E는 평균값을 의미한다.
     

    Conditional Adversarial Loss

    본 논문에서 출력 이미지 G(x,v)G(x,v) 뿐만 아니라 원본 이미지 x와 G(x,v)G(x,v)의 차이가 relative attributes v와 일치하는 것을 고려한다. 이를 위해 conditional GANs와 conditional discriminator인 DMatchDMatch를 활용한다.
    • x, x’: 2개의 real image → x와 x’는 다른 identity임
    • v: relative attribute vector
    • real triplet과 fake triplet의 DMatch loss를 구함
      • DMatch
    아래는 conditional adversarial loss를 구현한 pseudo-code다.
    notion image
     

    Reconstruction Loss

    adversarial loss와 conditional adversarial loss는 low level의 배경 이미지부터 high level인 얼굴의 identity까진 보존해주지 않기 때문에, cycle-reconstruction loss와 self-reconstruction loss를 제안하였다.
    cycle-reconstruction loss
    notion image
    generator를 이용해 원본 이미지를 만들어 이미지 간의 차이가 적어지게끔 학습하는 것이다. 원본 이미지에 v를 활용해 생성한 이미지 G(x, v)에 반대인 -v를 활용해 원본 이미지로 다시 만든다. 기호로 작성하면 G(G(x, v), -v)이다. 원본이미지가 되게끔 생성한 G(G(x, v), -v)와 원본 이미지 x를 1차 norm으로 차이를 계산한다. 1차 norm의 수식은 아래와 같다. 즉, 원본 이미지와 원본이미지가 되게끔 생성한 G(G(x, v), -v)를 뺴서 절대값을 씌운 후 더해주는 것이다.
    ||x||1=∑i=1n|x|||x||1=∑i=1n|x|
    Self-reconstruction loss
    notion image
    relative attribute vector가 0일 때(변화하지 않는 속성일 때), output image는 G(x, 0)이라고 할 수 있으며, 원본 이미지인 x와 비슷해야 한다는 점을 이용해 self-reconstruction loss를 정의한다.
     
    Interpolation Loss
    질 좋은 interpolation을 위해 αα 상수로 Interpolation한 G(x,av)G(x,av)가 현실적으로 보이게 해야한다. 이를 위해 DInterpDInterp에서 interpolation의 정도를 나타내는 ^αα^를 예측한다. ^αα^가 0일땐 interpolation을 하지 않은 것이고 ^αα^가 0.5인 경우 최대한 interpolation한 것을 의미한다. 왜 여기서 0.5가 최대가 되는 이유는 ^αα^가 0에서 0.5까지는 원본 이미지를 보간한 정도로 보며 0.5와 1 사이에선 해당 속성이 반영된 이미지를 보간한 정도로 나타낼 수 있기 때문이다.
    두번째 항은 원본 이미지를 전혀 보간하지 않은 이미지일 때 interpolation 정도를 예측, 세번째 항은 relative attributes v를 반영한 이미지일 때 interpolation 정도를 예측한 것이며 두 항 모두 ^αα^가 0이 되어야하기 때문에 따로 ^αα^를 빼주지 않는다.
    notion image
    이 식은 아래와 같은 의미로 작성할 수 있다. 아래 식을 보면 한개의 항이 줄었는데 두번째와 세번째 항을 합쳐서 작성하였기 때문이다. II는 괄호 안에 있는 인자가 참일 경우(0.5보다 클 경우) 1 거짓일 경우(0.5보다 작을 경우) 0을 반환하는 함수이다.
    notion image
    최종적으로 전체 loss는 아래와 같이 작성할 수 있으며 λ1,λ2,λ3,λ4,λ5λ1,λ2,λ3,λ4,λ5 는 하이퍼파라미터이다.
    notion image
     

    Experiments

    실험을 위해 celebA, celebA-HQ, FFHQ를 사용하였다. 이미지는 얼굴을 중앙정렬하여 crop하였고 256x256으로 resize하였다. generator network는 starGAN을 활용했다. starGAN은 down sampling을 위해 stride가 2인 convolution layer 2개, residual block 6개, up-sampling을 위한 stride가 2인 convolution layer 2개로 구성되어있다. generator에는 switchable normalization을 사용했다.
    notion image
    notion image
    notion image
    discriminator는 DRealDReal, DMatchDMatch, DInterpDInterp 3개로 sub-network를 가지고 있으며, sub-network는 stride가 2인 6개의 convolution layer로 구성되어있다. training 과정을 안정화시키기 위해 LSGANs-GP(the Least Squares Generative Adversarial Networks with gradient penalty)를 사용한다.
    설정한 하이퍼 파라미터는 아래와 같다.
    • λ1=1, λ2=λ3=λ4=10, λ5=10−6
      • λ1=1
        λ2=λ3=λ4=10
        λ5=10−6
    • Adam optimizer with β1=0.5, β2=0.999
      • β1=0.5
        β2=0.999
    • learning rate: 5×10−5
      • 5×10−5
    • batch size: 4
    • 100K의 iteration (약 13.3epochs)
    baseline 모델로 multi-domain image-to-image translation인 StarGAN, AttGAN 모델을 비교하였다.
     
    facial attribute transfer
    evaluation metric은 FID를 사용한다.
    • celebA: 9 attributes
    • celebA-HQ: 9 attributes
    • celebA-HQ: 17 attributes
    notion image
     
    Classification accuracy
    image translation의 quality를 평가하기 위해 facial attribute 분류기를 학습시켰다. CelebA-HQ dataset의 Resnet-18 모델을 사용한다. 학습과 평가를 위해 9:1로 데이터셋을 나누었다.
    notion image
     
    Qualitative results
    아래는 facial attribute transfer한 결과 이미지이다. 원하는 영역만 변화하고 원본 이미지의 정체성은 그대로 보존된 결과를 볼 수 있다.
    notion image
    아래 이미지는 baseline 모델인 StarGAN과 AttGAN과 비교한 결과이다. StarGAN은 얼굴의 정체성이 보존되지 않는 것이 보이고 AttGAN은 원치 않는 attribute인 웃는 모습이 함께 적용되어 있는 것이 보인다. 그에 비해 RelGAN은 여자의 얼굴과 표정 등의 다른 attribute가 보존되면서 변형하고자하는 attribute만 바껴진 것을 볼 수 있다.
    notion image
    아래 이미지는 loss에 대한 실험이다. 맨 밑 이미지들은 모든 loss를 활용했을 때의 얼굴이며 자연스러운 얼굴 이미지를 만들어내는 것을 볼 수 있다. 이외에는 loss를 하나씩 제거하여 실험을 했다.
    • 첫번째, LCycle+LSelf가 없을 때이며 원본 이미지의 identity가 보존되지 않는 것을 확인할 수 있다.
      • LCycle+LSelf
    • 두번째, LMatch가 없을 때이며 변화시키고 싶은 attribute가 보이지 않는다.
      • LMatch
    • 세번째, LReal가 없을 때이며 변화시키고 싶은 attribute는 어느정도 변화됐지만 gender나 mustache은 자연스럽지 못한 결과를 만들어 내었다.
      • LReal
    notion image
     
    Facial Image Reconstruction
    RelGAN의 가장 중요한 장점은 변해야하지 않는 속성은 보존된다는 것이다. 모든 속성들이 바뀌지 않는다면(target attribute vector가 원본 attribute vector와 같다면) facial attribute translation은 원본 이미지를 그대로 만들어내는 reconstruction task가 된다. 저자는 모델 별로 reconstruction task의 성능을 L1, L2 norm과 SSIM similarity를 활용해 비교해보았다. 아래 table에서 확인할 수 있듯이 LCycleLCycle이 없어도 StarGAN과 AttGAN의 성능을 능가하는 결과를 확인할 수 있다.
    notion image
     
    Facial Attribute Interpolation
    interpolation 성능을 비교하기 위해 StarGAN과 AttGAN 이미지를 G(x,αa+(a−α)^a)G(x,αa+(a−α)a^) 식을 활용해 생성했다. 여기서 aa와 ^aa^는 원본 이미지와 target attribute vector를 의미한다. 아래 이미지를 봤을 때 RelGAN이 가장 부드럽고 자연스럽게 interpolationg하는 것을 볼 수 있다.
    notion image
    정량적인 평가지표는 interpolation quality를 활용했다. SSIM score는 2개의 이미지의 similarity를 계산하는 측도로 사용된다. SSIM은 빛의 밝기(Luminance), 대조(Contrast), 픽셀값의 구조적인 차이(Structure) 3가지 요소를 이용해 이미지를 비교한다. 이 3가지의 요소를 사용하는 이유는 실제 인간의 시각 기관과 유사한 방법을 사용하기 위해서다.
    notion image
    notion image
    AttGAN, StarGAN, LInterpLInterp를 제거한 RelGAN, RelGAN의
    notion image
    성능을 비교했으며 그 결과 RelGAN의 성능이 가장 좋은 것을 확인할 수 있다.
     

    User Study

    Celeba-HQ 이미지를 랜덤으로 생성하여 사람들에게 40개의 질문을 답하게 하였고 그 결과 1개를 제외하곤 RelGAN이 가장 좋은 성능을 보이는 것을 확인할 수 있었다.
    notion image

    RelGAN은 relative attributes 기반의 multi-domain image-to-image translation model을 제안한다. facial image translation 영역에서의 원본 이미지의 얼굴 정체성은 그대로 유지하되 필요한 영역만 바꾸는 것은 쉽지 않다. RelGAN은 3개의 discriminator와 5개의 loss를 추가함으로써 얼굴 정체성을 유지하고 원치 않은 영역은 그대로 보존되는 결과를 보여줬다. RelGAN의 저자는 future work로 adversarial learning과 mask mechanism을 활용해 고도화할 것이라 한다.
    RelGAN은 relative attribute라는 개념을 도입해 원본 이미지에서 필요한 영역만 변환하는 것이 흥미로웠다. 특히 원본 이미지를 재 생성하여 이미지 간의 차이를 비교해 원본 이미지의 identity를 보존하기 위한 노력이 새로웠다. 생성된 이미지를 보면 배경과 머리카락과 같은 다소 영향을 많이 받을 수 있는 영역들이 그대로 보존되어 있는 것을 볼 수 있는데 얼굴에서 특정(머리만 염색을 하거나 웃는 얼굴을 우는 얼굴로 바꾼다거나) 영역만 바꿀 수 있어 활용하기에도 좋을 것으로 생각된다.
    그러나 아직까지 피부색은 보존되지 못한 것으로 보인다. reference 이미지가 원본 이미지보다 하얗거나 어두울 경우 색이 변하는 것이 보이는데 이 영역도 attribute에 추가하면 어느정도 보존할 수 있는지 궁금하다. 현재 구현되어 있는 코드를 보면 pale skin도 attribute의 하나로 되어 있는데 피부톤을 더 세분화한다면 피부 identity를 보존할 수 있지 않을까하는 생각이 든다.