[Paper Review] Near Perfect GAN Inversion 논문 리뷰

업데이트:

Amazon에서 나온 GAN Inversion 모델

  • fixed Generator의 inverse mapping을 찾는 encoder, optimization 방식의 inversion method가 아니라
  • 원하는 이미지를 생성하도록 Generator를 locally adjust하는 모델
    • PTI 랑 유사한 컨셉 (거의 똑같은 듯..)

GAN Inversion

기존의 GAN Inversion 모델은 크게 세가지가 있다.

  1. Optimization-based inversion
  2. Encoder-based inversion
  3. Hybrid method

위 모델들은 모두 Generator가 충분히 real image x를 생성할 수 있다고 믿고, real image x를 latent space로 inversion을 하는 것을 목표로 한다.

따라서 (1) optimization 방식은 최적의 z를 찾고자 random에서 sampling된 latent code z를 계속해서 optimize하고, (2) Encoder based 방식은 효과적으로 z를 찾도록 encoder를 학습한다.

본 논문은 Generator를 고정시키는 것이 문제라고 주장한다.

  • Generator 자체가 다양한 이미지를 생성할 수 있도록 학습되어있지 않기 때문에
  • Encoder를 fix 시킨 채 Generator를 tunning 해야한다고 주장
  • SoTA인 (b), (c)보다 recon이 잘되고, editing도 잘된다.
    • (b), (c)의 recon이 안되는 건 Generator의 성능이 떨어지기 때문이라고 주장

Method

목표: latent code $z$로부터 query photo $x^*$를 recon하는 것

\[G(\mathbf{z})=\mathbf{x}^{*} \text {, with }\left\|\mathbf{x}^{*}-\mathbf{x}\right\|<\epsilon\]
  • 이전의 encoder/optimization based method들은 $x^*$가 Generator가 만든 manifold 위에 있다고 가정하기 때문에 완벽하게 recon이 안됐음
  • $x$는 G의 manifold에 가까이 있을 수는 있기 때문에 Fig 2(c)처럼 nearest projection $\hat{\mathbf{x}} \text { on } \mathrm{G}(\cdot)$
    • $\hat{\mathbf{x}}$ 는 off-the-shelf inversion model로 찾음
    \[G_{pre-trained}(z) = \hat{x}\]
  • 마지막으로는 $x^*$를 합성할 수 있도록 manifold $\mathrm{G}(\cdot)$를 locally tweak

Tweaking the manifold locally

$\mathrm{G}(\cdot)$의 manifold를 전반적으로 수정하는게 아니라 locally하게 수정

  • local하게 manifold를 수정해야지 이미지 editing이 가능해지고, 추가적으로 다른 이미지들도 합성이 가능해짐

두가지 loss

  1. Local loss
    • manifold가 $x$ 를 포함하도록 locally tweak하게 만들어주는 loss
    • $\mathcal{L}_{\text {recon }}\left(\mathbf{x}, \mathbf{x}^{*}\right)$
      • 저자들은 recon loss로 Laplacian pyramid loss를 사용했다고 한다. 다른 similarity loss 사용해도 되긴 함
      \[\mathcal{L}_{\text {recon }}=\text { LaplacianPyramid }(\mathbf{x}, G(\mathbf{z}))\]
    • $\mathcal{L}_{\text {adv-local }}$
      • tweaked manifold가 editable하면서 다른 특징들은 유지되도록 regularize term을 추가
      \[\mathcal{L}_{\text {adv-local }}=\log D(\mathbf{x})+\log (1-D(G(\mathbf{z})))\]
    • 최종 loss term
      • 이때 z는 존재하는 encoder 모델로 미리 찾아놓음
    \[\mathcal{L}_{\text {local }}=\mathcal{L}_{\text {recon }}+\lambda \mathcal{L}_{\text {adv-local }}\]
  2. Global cohesion
    • local loss에 adversarial loss를 추가하여 manifold의 남은 부분이 변하지 않도록 regularize를 해줬지만, 이것만으로 model이 원하는 부분만 tweaking되었다는걸 보장할 수 없기 때문에 global loss를 추가
    \[\mathcal{L}_{\text {global }}=\mathbb{E}_{\mathbf{x} \sim p_{\mathbf{x}}}[\log D(\mathbf{x})]+\mathbb{E}_{\mathbf{z} \sim p_{\mathbf{z}}}[\log (1-D(G(\mathbf{z})))]\]
  3. 최종 loss

    \[\mathcal{L}=\mathbb{1}_{p}\left[\mathcal{L}_{\text {local }}\right]+\mathcal{L}_{\text {global }}\]

Algorithm

Experiments

  • Datasets
    • Flickr-Faces-HQ Dataset (FFHQ), CelebA-HQ, Stanford Cars, LSUN-Cars, Animal Faces HQ in-the-Wild(AFHQ-Wild), LSUN-Horses
    • Resolution: 256 X 256, 1024 X 1024
  • StyleGAN2 latent space: W+ space
  • GAN Inversion: Optimization & Restyle-encoder

Results

Limitation

  • Note that this is not the same as re-training the GAN model. This local tweak is successfully completed in just a few iterations, taking typically several seconds to a few minutes
  • The almost perfect GAN inversion results shown above come at an additional small computational cost compared to previous methods. Since previous algorithms optimize h(·), their cost is associated to the number of iterations required to get good convergence.
  • The worse cases, where our algorithm’s solution x∗ is significantly far from xˆ, the Clone algorithm may take several minutes.

댓글남기기