isPowerfulBlog

[논문리뷰] GANSpace: Discovering Interpretable GAN Controls 본문

AI

[논문리뷰] GANSpace: Discovering Interpretable GAN Controls

왕밤빵도라에몽 2022. 11. 28. 18:29

StyleGAN을 이용한 프로젝트를 진행하면서,
어떤 특징을 특정하여 변환을 주고 싶은데 어떻게 특징을 추출해야 그게 가능할지에 대한 고민이 많았다.
찾아보니 PCA를 이용하여 특징을 추출해내는 방식에 대해서 발표한 논문이 있어 정리해보게 되었다.

GANSpace

PCA를 이용하여 인간의 개념으로 해석 가능한 latent direction을 찾아 해석 가능한 특징 컨트롤 방법을 제시
해석가능한 컨트롤이란 목적에 적절하게 선택 된 latent direction을 말함

image

Demo

latent direction

$$
I: z \sim p(z), \ I = G(z)
$$
$I = G(z)$ 는 generator는 벡터 $z$를 input으로 하여 RGB 이미지 $I$를 생성하는 수식
${z}$ 는 latent space상의 확률분포 $p({z})$에서 샘플링 된 latent vector
어떤 목적에 적합하게 학습된 모델 $G(z)$ 는 latent space의 어떤 점을 어떤 이미지로 대응 시켜주는 mapping 함수로 해석해 볼 수도 있음
즉 latent space의 한 점은 어떤 하나의 RGB 이미지를 대표한다고 볼 수 있다

PCA

대표적인 차원 축소 기법
여러 변수 간에 존재하는 상관관계를 이용해 이를 대표하는 주성분을 추출해, 차원을 축소
가장 높은 분산을 가지는 데이터의 축을 찾아 이 축으로 차원을 축소 -> 이 축이 PCA의 주성분

StyleGAN

Layer-wise Edits

  • StyleGAN에서는 synthesis network g의 각 레이어에 intermediate latent vector들인 $w_i$를 각각 조정하여 레이어별로 컨트롤이 가능
    $$
    E(x_i, j\text{-} k)
    $$
  • $j$번째 부터 $k$번째 레이어에 입력되는 $w$ 벡터를 조정하여 $i$번째 주성분 생성

Principal Components and Principal Feature Directions

intermediate latent space 상의 분포 $p(w)$의 주요 축을 알아내는 것이 목표!

  1. $p(z)$ 에서 랜덤한 $N$개의 벡터 $z_{1:N}$을 샘플링
  2. 그리고 $w_i = M(z_i)$를 각각 계산
  3. 그 후 $w_{1:N}$ 을 이용해 행렬을 구성한 뒤 PCA 분석을 수행 -> $\mathcal W$공간에서의 기저(basis) $V$를 제공
  4. $w$로 정의된 이미지가 입력으로 주어졌다고 가정했을 때, synthesis network g에 input으로 넣어주기 전에 아래 식에서 x를 조정하여 특징을 조정할 수 있다.
    $$
    w^\prime = w + V x
    $$
    $ x=0 $ 일 때, $w^\prime = w$ 이고, $x$의 각 요소들은 개별적인 컨트롤러로서의 역할 수행

GitHub

https://github.com/harskish/ganspace

References

[원문] https://arxiv.org/pdf/2004.02546.pdf
https://www.notion.so/GANSpace-60d4783031d44e16b766c0416ff8714f
https://iamseungjun.tistory.com/12
https://imhappynunu.tistory.com/7