본문 바로가기

논문 읽기

[GANInvesion + Latent space manipulation] Designing an Encoder for StyleGAN Image Manipulation, SIGGRAPH 2021

*저는 배우는 학생이라 도메인 지식이 얕습니다. 참고 정도만 부탁드립니다. 

*논문에 보여주는 결과가 정말 많고 다른 내용도 있는데, 글이 난잡해질까봐, 주요하다고 생각되는 것만 우선적으로 언급했습니다. 

 

Encoder for Editing(e4e)논문으로 불리는 Designing an Encoder for StyleGAN Image Manipulation, SIGGRAPH 2021를 포스팅해보려고 합니다. StyleGAN을 이용해서 GANInvesion과 Latent space manipulation을 용이하게 하는 데 있어서 어떻게 editing을 더 잘할 수 있을까에 초점을 맞춘 논문입니다.


 

  • StyleGAN

먼저 StyleGAN은 CVPR 2019에 발표된 아주 좋은 성능으로 유명한 생성 모델입니다. 이번 논문은 이 학습된 StyleGAN 모델을 사용하는데요. 그 이유는 StyleGAN의 Latent space가 아주 잘 구성되어있기 때문입니다. StyleGAN의 latent space가 잘 구성되는 이유는 mapping network가 있기 때문인데요.

기존 생성모델(a)과 StyleGAN구조(b)

위의 사진의 (a)처럼 StyleGAN 이전의 논문은 보통 Gaussian normal distribution에서 샘플된 z를 바로 사용하였습니다. 하지만 StyleGAN은 z를 mapping network를 통과시킨 다음 생성한 w를 latent vector로 사용하죠 이때 만들어진 Latent space를 W라고 부릅니다. Gaussian normal distributionS

이런 과정을 통해 위의 그림에서 학습데이터의 분포(a)가 Gaussian normal distribution(b)에 부자연스럽게 mapping 되지 않고 (c)처럼 그 분포를 따라 생성할 수 있게 되기 때문에 StyleGAN의 latent space는 학습 데이터의 특성을 Latent에 disentangle하게 표현한다고 말합니다. 

 

disentangle하게 표현된 latent space가 있어야 sementic meaning을 가지고 생성 모델을 통해 이미지를 원하는 대로 생성하는 Latent space manipulation이 가능하게 되죠. 이것이 포스팅 논문을 포함해 많은 StyleGAN에 관련한 논문이 나오는 이유입니다.


 

  • GANInversion

GANInversion은 원하는 이미지를 특정 생성 모델의 latent space에 잘 임베딩해서 해당 생성 모델이 원하는 이미지와 유사한 이미지를 생성하도록 하는 것을 말합니다. 이 방법에는 3가지 방법이 있는데요.

 

첫 번째로는 Latent vector optimization입니다. 이 방법은 latent vector를 최적화하여 생성 모델이 타깃 이미지를 만들도록 학습하는 것인데, 좋은 결과를 내지만 느리다는 단점이 있습니다.

Latent Vector Optimization

다음으로는 Encoder-Based Inversion입니다. 이 방법은 학습을 마친 encoder를 통해 이미지에 대한 latent vector를 바로바로 얻을 수 있지만 부정확한 결과를 보인다는 단점이 있죠.

§Encoder-Based Inversion

마지막으로 End-to-End approach가 있습니다. 이 방법은 위의 두가지 방법을 합친 거처럼 볼 수도 있는데요. 하지만 말 그대로 end to end기 때문에 encoder는 결과 이미지를 보면서 학습할 수 있어 학습에 용이하고 encoder를 사용하기 때문에 latent space를 빠르게 얻을 수 있죠. 위의 두 가지 장점을 모두 가져왔다고 할 수 있습니다. 

End-to-End approach


 

  • Latent Space W+

또한 이 논문에서는 StyleGAN의 latent space W가 아니라 확장된 버전인 W+를 사용하는데요. 이 개념은 Image2StyleGANImage2 StyleGAN (ICCV 2019)에서 나왔습니다. 원래 하나의 vector w가 모든 styleGAN layer에 들어가는데 반해 Image2 StyleGAN(ICCV 2019)에서는 각 layer마다 들어가는 w를 다르게 하는 것을 제안했습니다.

 

이는 GANInversion시 단 하나의 w로 원하는 이미지와 유사한 이미지를 얻기 힘들기 때문입니다. 각 layer마다 w를 다르게 함으로써 StyleGAN이 표현할 수 있는 다양성을 넓혔다고 볼 수 있죠.

기존 latent W 적용방식(왼쪽)과 W+의 적용방식(오른쪽)


 

  • pixel2style2pixel(pSp), CVPR 2021

또한 이 논문은 pixel2style2pixel(pSp)논문에 기반하고 있습니다. 사실상 파생되었다고 보는 게 맞습니다. 저자 또한 많이 겹칩니다. 이 논문에서는 아래 그림과 같은 구조로 encoder를 구성해 StyleGAN에 알맞은 latent W+를 주어 다양한 task가 가능함을 보였죠. 따라서 e4e논문을 보시려는 분들에게 이 논문을 먼저 보실 것을 추천드립니다.

pSp encoder 구조
pSp 논문의 다양한 결과


 

  • Distortion-Perception & Distortion-Editability Tradeoffs

논문에서 사용하는 용어를 정리하면 아래와 같습니다.

Distortion – 얼마나 reference 이미지와 다른지
Perception – 얼마나 realistic 한지
Editability – 얼마나 자연스럽게 editing이 되는지

W* = W+ (k 무시)

 

먼저 Distortion-Perception Tradeoff을 보면 말 그대로 Distortion과 Perception는 trade-off 관계에 있는데, 이게 무슨말이냐면, 원본에 가깝게 만들고 싶을수록 이미지의 자연스러움이 줄어든다는 것입니다. 아래 그림을 보시면 가운데 이미지가 왼쪽의 source이미지와 전체적인 모양은 비슷하지만 눈도 없고 굉장히 부자연스러운 것을 볼 수 있죠. 그에 반해, 오른쪽 이미지는 완전히 source 이미지와 같지 않지만 굉장히 자연스러운 말의 형태를 보여주고 있습니다.

Distortion-Perception Tradeoff

다음으로는, Distortion-Editability Tradeoffs 입니다. 이 또한 원본에 가깝게 만들려고 노력할수록 Editability가 떨어진다는 것을 아래 사진을 통해 보여줍니다. 이를 통해 알 수 있는 것은 본래의 latent space W에 가까울수록 이미지가 원하는 이미지와 다를 수 있지만 굉장히 사실적이고 Editable 하다는 것, 그리고 latent space W+를 사용하면 원본과 가까워진다는 것입니다.

Distortion-Editability Tradeoffs


  • Method

따라서 논문에서는 이 Tradeoffs를 조절하여 원본과 유사하면서 사실적이지만 Editable한 이미지를 생성하는 encoder 학습하는 전략을 세웁니다. 그러기 위해서는 pSp논문처럼 단순히 W+에서 샘플링될 것이 아니라 W에 어느 정도 가까워야 할 것임을 알 수 있죠. 이는 아래 그림과 같이 표현할 수 있습니다.

논문에서는 먼저 latent W에 원하는 이미지가 임베딩 될 수 있도록 학습을 진행합니다. 아래 그림에서 w에 해당하는 부분이죠. 이 w는 모든 레이어에 동일하게 들어가는 값입니다. 따라서 w를 이용하면 원래 styleGAN이 사용한 방식과 같은 방식으로 적용이 되는 것이죠.

e4e의 전체 구조

그런 다음 ∆i를 학습합니다. ∆i는 각 레이어마다 적용되는 성분으로 w에 변화를 주어 원하는 이미지와 같이 distortion을 줄이는 역할을 하죠. 여기까지만 보면 사실 pSp와 크게 다를게 없습니다. 하지만 논문에서는 latent space W에서 벗어나는 것을 방지하기 위해  L2 delta-regularization loss를 사용하여 ∆의 값에 제한을 둡니다. 논문의 말을 그대로 인용하면 "explicitly enforce a proximity to W", W에 어느 정도 근사하도록 했다는 의미입니다. (여기서 정확히 W*인데 저는 설명이 어렵고 어느 정도 일맥상통해 그냥 W로 표현하였습니다.

L2 delta-regularization loss

또한 적대적 학습 기법(GAN)을 사용하여 생성된 latent가 W의 분포 안에 있는지를 두고 loss를 만들었습니다. 이 또한 encoder가 생성하는 latent가 W+가 아닌 W에 근사하도록 하는 역할을 하죠.

adversarial manner

이 두 로스를 합쳐 논문에서는 editability loss라고 말합니다. 

Editability loss

이렇게만 하면 모든 벡터가 W에만 머무를거 같기도 하지만 논문은 distortion도 해결하기 위해 원본 이미지와 결과 이미지를 비교하는 L2 loss, LPIPS loss, identity loss를 사용합니다. 이를 논문에서는 distortion loss라고 하죠. 이렇게 최종적으로 두 로스를 합쳐 학습을 진행합니다.

Total loss


 

  • Result

이 논문의 주요 내용은 trade off에 대한 가설을 증명하는 것, 즉 editability loss가 효과를 보여 정말 editability가 증가했는지를 보여주는 것입니다. 따라서 논문은 editability loss를 적용했을 때와 안했을 때를 두고 결과를 보여주죠. 아래 그림에서는 적용했을 때(d), 안 했을 때(a)로 표현합니다.

 

보시면 적용 했을때 안 했을 때 차이가 없어 보이는 것도 있지만 있는 것도 확실하게 보입니다.

editability loss의 효과

하지만 정량적인 평가에서는 그런 부분을 판단하기 어렵게 수치가 나왔습니다. 논문에서는 이런 수치가 정말 사람의 perceptual, realistic 하다고 느끼는 것과 다를 때도 있다고 말을 합니다.

정량적인 평가

그것을 증명하기 위해서 user study의 결과를 보여주는데, 이는 다행이도 editability loss를 적용했을 때(d)가 훨씬 좋은 결과를 보임을 확인할 수 있죠.

user study

 

또한 논문에서는 latent editing consistency (LEC)를 제안하여 얼마나 논문에서 제안된 encoder가 효과적인지를 보여줍니다. 이는 edit 한 이미지를 다시 GANinversion 시키고 이에 대해 반대로 edit을 하여 그 결과를 비교하는 방식이죠. 비교할 때는 아래 수식처럼 이루어집니다.

  latent editing consistency (LEC)

그 결과는 정량적으로도, 또 정성적으로도 모두  latent editing consistency (LEC)가 editability loss를 적용했을 때(d)가 더 좋음을 보여주면서, 논문은 자신들의 방식이 우수하다고 주장합니다.

  latent editing consistency (LEC)대한 결과

 

마지막으로 이 논문의 기반이 된 pSp와 비교하는데요. 아래 그림을 보시면 맨 왼쪽 그림이 pSp를 통해 나온 결과, 맨 오른쪽 그림이 이번 논문을 통해 나온 결과입니다. 보시면 inversion만 했을 때는 pSp가 더 잘 표현했다고 할 수 있지만 여자로 바꾸는 manipulation을 한 결과를 보면 이번 논문이 더 잘 수행한 거 같아 보입니다.

pSp 논문과 비교

이렇게 결과들을 보여줌으로써 논문에서는 styleGAN을 이용한 GANInversion을 할 때 trade off가 있고, editing에 용이하기 위해서는 자신들의 방법을 통하는 것이 좋다고 말하고 있습니다.

 

감사합니다.


Official Github

 

GitHub - omertov/encoder4editing: Official implementation of "Designing an Encoder for StyleGAN Image Manipulation" (SIGGRAPH 2

Official implementation of "Designing an Encoder for StyleGAN Image Manipulation" (SIGGRAPH 2021) https://arxiv.org/abs/2102.02766 - GitHub - omertov/encoder4editing: Official implementa...

github.com

Paper