Skip to content

[2022-1 KUBIG Contest] StyleGAN과 StyleCLIP을 이용한 사용자 인터페이스 기반 이미지 조작 프로젝트

Notifications You must be signed in to change notification settings

ChoiDae1/Image-Manipulation-Project

Repository files navigation

Image-Manipulation-Project

StyleGAN을 활용해 사용자가 원하는 사진에 대한 latent vector를 찾고, Interpolation 분석.

나아가 StyleCLIP을 통해 사용자가 입력한 텍스트를 반영한 이미지를 만들어 내도록 latent vector 업데이트.

결론적으로 StyleGAN과 StyleCLIP을 이용한 사용자 인터페이스 기반 이미지 조작을 목적으로 하는 프로젝트임.

발표 PPT -> link

STEP1: 특정 사진에 대한 latent vector 찾기 (Image2StyleGAN)

구현 코드: link
참고 논문: Image2StyleGAN: How to Embed Images Into the StyleGAN Latent Space?
     A Style-Based Generator Architecture for Generative Adversarial Networks
참고 코드: link
방법: Pretrained StyleGAN, VGG16을 이용해 latent vector가 만들어내는 이미지와 원본 이미지와의 loss를 계산 -> latent vector 업데이트

Image2StyleGAN이미지를 representation하는 latent vectorPretrained StyleGAN을 사용해 찾는 것을 말한다.
이러한 과정을 통해 특정 이미지에 대한 latent vector를 찾게되면, 이를 조작해 이미지의 Style을 바꾸거나, 다른 이미지로 전환할 수 있음.

구글에서 많은 연예인들의 사진들을 찾을 수 있었고, 결과적으로 다양한 사진에 대한 latent vector을 얻을 수 있었음.
Latent vector들 중 상당수는 입력 이미지를 잘 represent했지만, 일부는 그렇지 못했음.

Example) 왼쪽은 구글에서 구한 원본 이미지고, 오른쪽은 Image2StyleGAN 방법론을 통해 찾은 latent vector를 통해 만들어진 이미지

<이미지를 잘 represent하는 Latent vector 찾은 경우>



<이미지를 잘 represent하지 못하는 Latent vector 찾은 경우>


많은 수의 이미지를 통해 여러번 실험을 진행함,
결과적으로 representation이 좋은 latent vector를 가지고 있는 원본 이미지는 다음과 같은 특징들 을 가지고 있다는 것을 확인함.

  • 보통 서양인임. (대체로 한국인 이미지보다 더 좋은 latent vector를 가졌음.)
  • input으로 들어가는 이미지에 noise가 거의 없음, 화질 좋음.
  • 사진에 얼굴이 차지하는 비율이 거의 80퍼~90퍼(얼굴외에 손이나 기타 다른 부위 혹은 배경들이 거의 보이지 않음)
  • 옆모습이나 측면보다 정면샷으로 찍은 얼굴이 더 잘 나옴.

STEP2: Latent vector를 변화시키면서 이미지의 변화 양상 관찰 (Latent Interpolation)

구현 코드: link
참고 코드: link
방법: STEP1에서 두 이미지에 각각 대응하는 latent vector를 찾음 -> 계수합이 1인 linear combination으로 표현 -> 계수값에 변화를 조금씩 주면서, 그에 따라 변하는 이미지 변화 확인

StyleGAN은 Mapper Network 등을 사용함으로써 모델 자체의 latent vector(W)가 이미지의 특징들을 disentangle하게 담아내도록 학습함.
이 말은 즉, latent space 상에서 비슷한 거리에 있는 latent vector들은 서로 비슷한 이미지의 특징을 담아내고, 멀리있는 latent vector들은 서로 구별되는 특징을 가질 수 있음.
Latent Interpolation은 이러한 latent space의 특징을 이용한 것임.

Example) STEP1에서 이미지를 잘 represent하는 latent vector를 통해 Latent Interpolation을 진행함.

<로제의 latent vector와 제니의 latent vector를 사용해 진행한 결과>
image


<오바마 대통령의 latent vector와 조커의 latent vector를 사용해 진행한 결과>

STEP3: 텍스트를 반영한 이미지를 만들어 내도록 latent vector 업데이트 (StyleCLIP)

구현 코드: link
참고 논문: StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery
참고 코드: link
방법: STEP1에서 구한 latent vector가 만들어내는 이미지와 사용자가 넣어주는 textCLIP에 넣어서 loss계산 -> latent vector 업데이트

StyleCLIPStyleGANCLIP을 같이 쓴 모델임. CLIP은 이미지텍스트를 동시에 받아서 둘을 각각 인코더를 거친 후 같은 임베딩 스페이스상에서 거리를 측정하는 도구라 할 수 있다. 이러한 CLIP을 이용하면, 최종적으로 이미지와 텍스트사이의 일종의 유사도 를 계산할 수 있고, 이를 활용한 loss를 CLIP loss라 함. StyleCLIP에서는 이를 사용해 최종적으로 사용자가 넣어준 텍스트를 잘 표현하는 이미지를 만들어 낼 수 있도록 latent vector를 업데이트 함. 물론 기존 이미지의 전체적인 apperance는 유지함.

StyleCLIP 논문에서는 구체적으로 3가지의 방법을 제시하는데, 여기서는 이 중 가장 직관적이면서도 쉬운 "Latent Optimization"을 구현했음.
실험결과 대체로 어느정도 text를 잘 반영하는 이미지를 생성가능했지만, 일부 latent vector에서는 이미지 왜곡이 생기면서 잘 작동하지 않는 것을 확인할 수 있었음.

Example) STEP1에서 이미지를 잘 represent하는 latent vector를 활용해 실험 진행함.

Good case

<latent vector: Jablonski, Text Prompt: Really angry face>



<latent vector: 엠마스톤, Text Prompt: Smile face>


Bad case

<latent vector: 로제, Text Prompt: Really angry face>



<latent vector: 제니, Text Prompt: Smile face>


이외에도 여러가지 latent vector와 Text Prompt 조합을 통해 실험했고,
원본 이미지를 아무리 좋은 quality 로 representation 하는 latent vector를 사용하더라도, StyleCLIP에서 잘 작동하지는 않는 사실을 알았음.
이와 더불어 StyleCLIP Task에서 역시 한국인 이미지보다 서양인 이미지에서 더 잘 작동하는 것 을 확인할 수 있었는데, 아마도 StyleGAN을 pretrain할 때 사용한 데이터의 bias문제라고 판단됨.
향후 한국인 이미지 관련 프로젝트를 한다면 다른 pretrain dataset을 사용할 필요가 있어보임.(ex: 한국인 face dataset)

About

[2022-1 KUBIG Contest] StyleGAN과 StyleCLIP을 이용한 사용자 인터페이스 기반 이미지 조작 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published