땡글이LAB

[논문리뷰] Image2StyleGAN : How to Embed Images Into the StyleGAN Latent Space? 본문

AI/논문리뷰

[논문리뷰] Image2StyleGAN : How to Embed Images Into the StyleGAN Latent Space?

땡글이B 2022. 6. 3. 03:36

1. Instruction

 

 본 논문에서는 StyleGAN에서 사용되는 latent space W 대신 latent space W+를 사용하면 조금 더 일반화된 StyleGAN 기능을 사용할 수 있다고 주장하고 있다.

 

 또한, 본 논문에서 주장하는 embedding 알고리즘은 사람의 얼굴 뿐만이 아니라 다양한 그림체의 얼굴(만화, 그림 등) 들에도 적용 가능하다고 주장한다.

  • 그리고 기술을 제안하는 것에 그치지 않고, 본 논문에서는 새롭게 제안한 embedding 기술이 얼마나 semantical하게 의미 있는 결과물이 나오는지 확인한다.

 또한 3가지 이미지 변환들로 추후에 StyleGAN에서 사용되는 W와 본 논문에서 제안한 W+를 사용했을 때의 Morphing, Style Transfer, Expression Transfer 기능들로 판단해보고자 한다.

 

2. Related Works

기존의 GAN 모델들은 모두 신경망의 내부동작에 대한 해석이 부족하기에 디테일하게 image를 modification하는 것에 아쉬움이 있었다.

 그래서 본 논문에서는 사용자 지정 이미지를 GAN latent space에 다시 embedding 하여 신경망의 내부동작을 해석하여 다양한 응용 application으로 이어질 것이라고 믿고 있다.

 

 Latent Space Embedding 을 이해하는 방법에는 2가지 방법이 존재

  • 첫 번째, encoder가 latent vector를 학습하는 것처럼 latent space를 이해한다.
  • 두 번째, random한 latent code를 가지고 gradient descent 방식으로 최적화시키면서 이해한다.
    • 첫 번째 방식은 훈련 데이터셋에서만 이해할 수 있고, 훈련데이터 셋 이외의 이미지에 대한 latent vector를 이해하는 것에는 어려움이 있었다.
    • 그래서 본 논문에서는 두 번째 방식을 토대로 StyleGAN에서의 latent space를 이해해보고자 한다.

 

3. What image can be embedded into the StyleGAN latent space?

3.1 Embedding Results for Various Image Classes

 다양하고 많은 클래스의 이미지들을 임베딩하는 것을 공부하는 것은 latent space의 구조와 특성을 이해하는 것에 도움이 되었다.

 본 논문에서는 사람의 얼굴과 전체적인 구조는 많이 비슷하지만 매우 다른 스타일로 묘사되는 고양이, 개의 얼굴, 그림을 선택해서 진행한다.

Figure 1

 

Figure 1을 보면,,,

  • StyleGAN latent space에 embedding된 오바마 얼굴은 나름 높은 퀄리티와 입력을 잘 재현해낸 것을 볼 수 있다.
  • 하지만, embedding된 얼굴을 자세히 보면, 약간 smoothing 처리가 되었고, minor한(사소한) detail이 사라졌다.
  • 또한, StyleGAN만으로도 고양이나 강아지, 그림 이미지에서는 얼굴 이미지보다는 latent space 상에서 embedding된 결과가 나빠지긴 했지만, 비교적 고품질 결과를 얻을 수 있었다.
    • 이 내용은 StyleGAN에서 사용된 효과적인 embedding 알고리즘과 학습된 Generator의 generality(일반성)을 나타낸다.
  • 여기서 본 논문에서는 StyleGAN에서 사전 학습된 latent space의 품질이 embedding에 미치는 영향에 대해 논의해보고자 한다.
  • 실제로, 자동차나 고양이, 강아지 이미지로 StyleGAN을 학습시켰을 때에는 품질이 굉장히 낮았다는 것을 확인했다.

 

3.2 How Robust is the Embedding of Face Images?

Affine Transformation

 Affine Transformation은 점, 직선, 평면을 보존하는 선형 매핑 방법이다. 즉, 아핀 기하학적 성질들을 보존하는 두 아핀 공간 사이의 함수이다.

 그런데, Figure 2를 보면, StyleGAN이 Affine Transformation에 굉장히 민감하게 반응하는 것을 알 수 있다.

Figure 2

 물론, 어느 정도 얼굴로 인식이 가능한 수준으로는 나왔지만, Affine Transformation을 수행하기 전의 이미지에서의 결과의 품질과 비교해보면 많이 안좋아졌다.

 즉, GAN은 Affine Transformation에 민감하다는 것을 알 수 있다.

 

Embedding Defective Images

 Figure3을 보면, StyleGAN embedding은 이미지의 결함(defects)들에 대해선, 굉장히 강건(robust)하다는 것을 알 수 있다.

 이런 현상은 이미지를 editing 하는 데에는 좋다. 하지만, latent space가 결함(defect)이 있는 이미지를 완전한 이미지로 만들어 주지는 않는다. 즉, 누락된 정보를 다시 그리진 않는다는 한계점이 있다.

 

Figure 3

 

 

3.3 Which latent space to choose?

 StyleGAN에서 사용되는 여러 개의 latent space들은 embedding에 사용된다. 그것은 처음의 latent space인 Z와 중간에 Fully Connected layer를 거쳐 생성된 latent space인 W 이다.

 하지만, 본 논문에서는 image에서 Z vector로 embed 하는 것이나 Z에서 W로 embedding 하는 것은 그리 쉬운 task가 아니라는 점을 강조한다.

 

그래서 본 논문에서는, 새로운 latent space가 아닌 기존의 latent space인 W 에서 확장된latent space인 W+ 를 제안한다. latent space W+ 는 서로 다른 512차원 w 벡터(StyleGAN 아키텍처의 각 레이어에서 AdalN을 통해 입력받는) 18개를 연결한 것이다.

 

Figure 5를 참고해보면, latent space W는 어떠한 의미있는 결과를 내지 못한다.

  • W와 W+에서 동일한 환경으로 weight를 바꿔가며 실험해본 결과 W와 W+ 사이에 큰 차이가 존재했다. (W+ 로 실험한 결과는 추후에 다루도록 한다)
  • 즉, 학습된 네트워크의 가중치가 결과에 큰 영향을 미친다는 것을 알 수 있다.

Figure 5

 

4. How meaningful is the Embedding?

Embedding이 큰 의미를 가지는지 확인하기 위해 총 3가지의 실험을 한다

  • Morphing
  • Style Transfer
  • Expression Transfer

 

4.1 Morphing

 Figure 4는 embedding된 image 두 개를 이용해서 선형 보간법(linear manipulation)을 통해, morphing을 해본 결과이다.

 

 Figure 4를 자세히 확인해보면 알 수 있듯이, 사람 얼굴에 대해선, high-quality로 이미지가 morphing 된다. 사람 이미지 2개 간 Morphing의 중간 이미지에서 사람 얼굴의 윤곽이 정확하게 관찰되는 것을 확인할 수 있다. 하지만, 다른 이미지(그림, 자동차, 강아지, 고양이 등)들은 low-quality를 가진다.

 

즉, Figure 4는 StyleGAN의 latent space 구조가 사람 얼굴 전용임을 입증한 셈이다.

Figure 4

 

4.2 Style Transfer

 Style Transfer 테스트 방식은 embedding된 latent code w1과 w2를 준 뒤, crossover operation을 통해 style transfer 연산을 한다.

 

 Figure 8에선, 하나의 이미지는 9개의 layer를 통해 latent code를 얻고, 다른 하나의 이미지는 마지막 9개의 layer를 통해 latent code를 얻어낸다.

  • 얼굴 이미지가 아닌 이미지로는 이미지의 내용물을 유지하지 못한다. (특히, 그림(painting)에서 그 현상이 가장 심하게 일어난다)

 즉, Figure 8을 보면, StyleGAN의 일반화 및 표현력이 더 높은 공간 해상도에 해당하는 스타일 레이어에 존재할 가능성이 더 높음을 나타냅니다.

 

Figure 8

 

4.3 Expression Transfer and Face Reenactment (표정 변화 및 얼굴 재연)

 

 input vector w1, w2, w3 3개가 주어지면, expression transfer는 다음과 같이 계산된다.

 w1 은 target image의 latent code, w2는 source image의 표정이나 다른 특징들을 표현하는 vector 이고, w3은 더 명확한 표현을 나타내는 vector이다.

 이해하기 쉽게 예시로 설명해보자면, w3 는 웃는 얼굴로 대응될 수 있고, w2는 표정이 없는 같은 사람의 얼굴을 나타낼 수 있다.

 

  •  noise(예: background noise)을 제거하기 위해 difference latent code의 channel 의 L2 - norm에 대한 lower-bound threshold를 경험적으로(heuristically) 설정합니다. (그리고 채널은 0 벡터로 대체된다)

해당 실험에서 threshold로 선택된 값은 결과 벡터를 정규화하여 특정 방향으로 표현(expression)의 강도를 제어합니다.

 

Figure 7을 보면, 위의 수식에서 만들어진 w 벡터는 상대적으로 source image에 있는 사람의 얼굴에는 독립적이며 표현(expression)을 변환하는데에 쓰일 수 있다.

 

Figure 7

 

 

5. Embedding Algorithm

 본 논문에서 주장하는 Embedding 방법은 pre-train된 Generator의 manifold에 주어진 이미지를 embedding 하기 위해 간단한 최적화 프레임워크를 따른다.

 

 아래의 pseudo code를 설명하자면, 우선 처음에 w 벡터를 적절하게 초기화(initialization)해주기 위해 최적화 프레임워크를 통해 최적화된 vector w* 를 찾아서 초기화해준다. w*는 주어진 이미지와 w* vector를 통해 만들어진 이미지와의 similarity를 근거로 loss function 값을 minimize하는 vector이다.

 

 그리고나서, Loss function 값이 수렴할 때까지, w* 벡터를 가지고 Generator를 통해 만들어진 이미지와 input 이미지와의 loss function 값(similarity 에 근거함)을 계산한다.

 

 그렇게 loss function 값을 계산한 뒤, 해당 Loss function을 w*로 편미분해서 w* 를 gradient descent 방식으로 최적의 w 벡터를 찾아나간다.

 

Embedding Algorithm 1 pseudo code

 

5.1 Initialization

위의 알고리즘에서 초기화(Initialization)을 하기 위한 방법에는 2가지 방법이 있다.

 

첫 번째 방법은, random하게 초기화하는 것이다! (-1, 1) 사이에서 uniform 하게 초기화한다.

 

두 번째 방법은, latent code의 평균인 vector에서 distance가 낮은 것이 낮은 품질(low quality)의 얼굴을 식별하는 데에 사용될 수 있다는 관찰에 의해 제안된 방법이다. 그러므로, 본 논문에서는 평균 vector를 초기화하는데에 사용하고, 최적화된 w* vector는 평균 vector와 가깝기 때문에 빠르게 최적화할 수 있을 것이라고 기대하고 있다.

 

 2가지 방법을 평가하기 위해, 본 논문에서 loss function 값과 w*와 초기화한 vector간의 거리를 비교해보았다. 그 결과는 Table 2에서 다루었다.

 

 Table 2를 보면, 사람의 얼굴이 data 일 경우에는 w를 평균 vector로 초기화한 것과 랜덤하게 초기화한 것중 평균 vector로 초기화한 것이 loss function 값도 낮고, w* 와의 거리도 낮았다는 것을 확인할 수 있었다.

 하지만, 다른 클래스(고양이, 강아지, 자동차)의 data의 경우에는 오히려 random하게 w를 초기화해준 것이 결과가 더 좋았다. 

 

즉, 사람의 얼굴 data들의 분포는 단 하나의 cluster로 매핑되지만, 다른 class의 data들의 분포는 명백한 패턴없이 이리저리 흩뿌려지는 것임을 알 수 있다.

 

Table 2

 

5.2 Loss Function

최적화하는 과정동안, input image와 embedding 된 image와의 similarity를 측정하기 위해 Loss function은 VGG-16-perceptual loss 함수와 pixel-wise MSE를 이용한다.

Eq 1
Eq 2

 위의 수식에서, Loss function 안에서의 F 함수는 VGG-16의 conv1_1, conv1_2, conv3_2, conv4_2를 의미한다. 또한 N은 이미지의 scalar 값들의 개수를 의미하고, w는 최적화하기 위한 latent code, λmse 는 좋은 성능을 내기 위해 경험적으로 얻어진 값 1이다.

 

다만, pixel 단위로 MSE 손실을 계산하는 것만으로는 좋은 quality의 embedding을 하기 어렵다는 것을 알았기에 본 논문에서는 high-quality의 embedding을 구현하기 위해서, perceptual loss와 pixel 단위의 MSE 손실을 같이 이용한다.

 

Figure 9를 보면, pixel 단위의 MSE 손실만으로 loss 값을 계산한다면, 일반 색상은 잘 포함하지만, 얼굴이 아닌 다른 클래스의 이미지의 특징은 포착하지 못하게 된다. 뿐만 아니라 사람의 얼굴의 detail 정보 또한 많이 잃게 된다.

 

 

Figure 9

 

아래의 Figure 10을 보면, pixel 단위의 MSE 값을 loss 값으로 사용할 때에는 feature space 상에서의 difference를 무시하기 때문에 얼굴이 아닌 다른 클래스의 이미지에 대한 embedding 결과는 사전 훈련된 StyleGAN으로 만든 얼굴 이미지쪽으로 수렴하는 결과를 가지게 된다.

 

 해당 문제는 image similarity를 측정하는 perceptual loss 로 인해 해결할 수 있다. 본 논문에서는 Embedding 작업은 embedding된 이미지가 모든 스케일에서 입력에 가까워야 하기 때문에 VGG-16 network(5열)의 여러 레이어에서 기능을 일치시키는 것이 단일 레이어(3열)만 사용하는 것보다 더 잘 작동한다는 것을 발견했다고 주장한다.

 

 위의 Figure 9의 6열은 다양한 알고리즘들 중에서 가장 좋은 성능을 달성한 알고리즘(pixel 단위의 MSE + multi-layer perceptual loss)의 Embedding 결과를 보여준다.

Figure 10

 

 

5.3 Other Parameters

 본 논문에서는 학습률이 0.01인 Adam Optimizer를 사용한다. 최적화를 하기 위해 5000번의 gradient descent 를 수행했다고 한다.

 

 Figure 10을 보면, 사람의 얼굴 이미지가 가장 빠르게 loss 값이 떨어지고, 약 1000번째 최적화 단계에서 수렴하게 된다. 하지만, 고양이나 강아지, 자동차 이미지는 약 3000번째 단계에서 수렴하게 되고, 그림(painting)의 이미지의 경우에는 가장 느리게 5000번째 단계에서 수렴하게 된다. 그렇기에 본 논문에서는 Loss function을 5000번 반복하며 최적화하기로 결정했다고 한다. 

 

Iterative Embedding

 본 논문에서 주장한 Iterative Embedding의 강건함(Robustness)을 테스트하기 위해, 계속 반복적으로 새로운 입력 이미지로 embedding을 수행해봤다.

 본 논문에서는 위에서 말한 과정을 7번 반복해봤고, Figure 11에서 볼 수 있듯이, 첫 번째 Embedding 이후 모델 분포에 input image가 존재함을 보장하지만, 제안한 방법의 성능은 Iterative Embedding의 횟수에 따라 천천히 저하된다.

 

 본 논문에선 Figure 11에서 볼 수 있듯이 반복적으로 Embedding해주니 detail한 부분이 사라지게 관찰되는 이유는 채택된 Optimization 접근 방식이 local optima에 천천히 수렴하게 되면서 이런 문제를 겪을 수도 있다고 얘기하고 있다. 사람의 얼굴 image가 아닐 경우에는 stochastic initial latent code 또한 성능 저하 요인이라고 볼 수 있다고 주장한다.

 

 즉, 완벽한 Embedding 방식에는 도달하기 어렵지만, 본 논문에서 주장한 Embedding 접근 방식이 모델의 분포도에서 합리적으로 "좋은 성능"을 가지는 Embedding에는 쉽게 도달할 수 있음을 보여준다. 

Figure 11

 

6. Conclusion

 본 논문에서는 StyleGAN에서 input image가 어떻게 embedding 되어 latent space W 대신 본 논문에서 주장한 embedding 알고리즘을 통해 더 일반적인 image들에도 잘 embedding 될 수 있도록 하는 latent space W+를 제안했다.   

 

 하지만, 본 논문에서의 한계점 또한 몇 가지 존재했다. 첫 번째로는, 사전 훈련된 StyleGAN에서 조금 변형된 이미지를 사용했다는 점이 있다. 두 번째로는, 본 논문에서 주장한 Embedding 방식은 최적화에 시간이 꽤 오래 걸린다(약 몇 분정도)는 점이다. 대화형 프로그램에서 사용되기에 좋은 Embedding 알고리즘이 너무 많은 시간을 소모하게 된다.

 

 

7. Additional Materials on Embedding

드디어 본 논문에서 주장한 Embedding 기술을 테스트하도록 해보겠다. 테스트해보기 위해서, 본 논문에서는 5개의 다른 카테고리로 분류되는 25개의 image들을 dataset으로 사용한다. (5개의 카테고리 : human face, cat, dog, car, painting)

 

Additional Embedding Results

 본 논문에서 주장한 latent space W+를 이용해서 Embedding한 결과를 Figure 13에서 보여준다. Figure 13에서 첫 번째 column은 원본 이미지고, 두 번째 column은 latent code w를 처음에 초기화할 때 random하게 초기화했을 때의 Embedding 결과 이미지이고, 세 번째 column은 latent code w를 처음에 초기화할 때 평균 vector로 초기화했을 때의 Embedding 결과 이미지이다.

 

 Figure 13에서 알 수 있듯이, 사람 얼굴이 아닌 이미지는 random하게 latent code w를 초기화해서 최적화 과정을 수행하는 것이 좋지만, 사람 얼굴 이미지의 경우에는 latent code 의 평균 vector로 초기화해서 최적화 과정을 수행하는 것이 조금 더 좋은 결과를 보여준다. 

Figure 13

 

Quantitative Results on Defective Image Embedding

 Table 3에서는 latent space W+를 사용했을 때에 결함(defect)가 있는 이미지와 결함이 없는 이미지를 Embedding 했을 때의 결과를 비교해서 보여준다.

 

 결과에서 알 수 있듯이, 평균 얼굴의 주변에 유효한 얼굴이 cluster를 생성하는 것을 재확인 할 수 있었다.

 

Table 3

 

Inherent Circular Artifacts of StyleGAN

 Figure 21을 보면 알 수 있듯이, 본 논문에서 주장한 embedding 알고리즘을 통해 얻은 W+ space를 사용했을 때에도 StyleGAN에서 나온 blob 문제가 여전히 존재함을 알 수 있었다. 이 부분은 추후에 개선되야 할 부분이라고 본 논문에서 말하고 있다.

Figure 21

 

Additional Results on the Justification of Latent Space Choice

 본 논문에서 주장한 latent space W+를 선택해야 되는 이유에 대해서 Figure 14에서 보여준다. Figure 14에서 latent space W를 사용했을 경우에는 사람의 얼굴 이미지에 대해선 나름 좋은 퀄리티로 embedding을 해주지만, 다른 클래스의 이미지에 대해선 잘 embedding 해주지 못한다. 

 

 하지만, W+ space를 사용했을 때에는 사람의 얼굴 이미지 뿐만이 아니라 다른 클래스의 이미지에도 잘 embedding 해주는 것을 확인할 수 있었다. 

 

 

Figure 14

 

 

Justification of Loss Function Choice

Figure 22는 주요 논문에서 선택한 Loss function을 검증한다.  앞서 언급했듯이, VGG-16 네트워크의 multi-layer에서 image feature들을 matching시키는 것보다는 single-layer에서 더 잘 작동한다는 것을 알 수 있고, 픽셀 단위의 MSE loss와 perceptual loss의 조합이 가장 잘 동작한다는 것을 알 수 있다.

 

 

 

 

Influence of Noise Channels

Figure 16은 다른 noise로 embedding 해도 비슷한 결과가 나온다는 것을 보여준다. 그뿐만이 아니라, embedding 과정에서 noise를 다시 resampling 하게 되면 결과의 품질이 현저히 떨어지게 되는 것을 확인했다. 따라서 Embedding을 하는 동안에는 noise 채널을 일정하게 유지시켜주는 것이 좋다라는 것을 알게 된다.

Figure 16

 

8. Additional Results on Applications

본 논문에서는 추가로 latent space W+를 활용해서 Image Morphing과 Style transfer를 실험해보았다. Figure 15는 Morphing의 결과를 보여주고, Figure 23은 다른 클래스 이미지 간의 style transfer 을 수행한 결과를 보여준다.

 

Figure 15에서의 결과들을 보면, 사람 얼굴 이미지로 Morphing을 한 결과는 원래의 StyleGAN과 큰 차이가 없고, 단지 다른 클래스의 이미지로 Morphing을 할 때에는 W+ space로 Morphing하게 되면 다른 클래스의 이미지를 Morphing하더라도 윤곽을 유지하면서 바뀐다는 점이 다른 점인 것 같다. 하지만 이 또한 그리 높은 quality를 자랑하진 못한 것 같다.

Figure 15
Figure 23

 

한 줄 리뷰

본 논문은 StyleGAN을 향상시켰다기 보다는 얼굴 이미지 이외의 다른 클래스의 이미지를 Embedding 하는 법에 초점을 뒀고, 또한 StyleGAN에서 사용된 latent space W를 이해해보고자 여러 실험들을 한 재미있는 논문이었던 것 같다.

 

 

 

References

 

 

https://greatjoy.tistory.com/51

 

 

Comments