Post

17. StyleGAN 이론

StyleGAN

StyleGAN의 아이디어는 마치 화가가 눈동자 색만 다른 색으로 칠하고, 머리카락 색만 다른 색으로 칠하고 하는 것 처럼 PGGAN에서도 style들을 변형시키고 싶은데 Generator에 latent vector $z$ 가 바로 입력되기 때문에 entangle하게 되어서 불가능하다는 단점이 있었다. 그래서 논문의 저자는 style transfer처럼 원하는 style로 수치화 시켜서 GAN에 적용하고자 하였다. 그래서 나온 아이디어가 각각 다른 style을 여러 scale에 넣어서 학습 시키는 방법이다.

하지만 latent variable 기반의 생성 모델은 가우시안 분포 형태의 random noise를 입력으로 넣어주는 특징을 갖고 있어 latent space가 entangle하게 된다. 따라서 StyleGAN은 학습 데이터셋이 어떤 분포를 갖고 있을지 모르니 GAN에 $z$를 바로 넣어주지 말고 학습 데이터셋과 비슷한 확률 분포를 갖도록 non-linear하게 mapping을 우선적으로 하고 mapping된 $z$ 를 이용하면 좀 더 학습하기에 쉽지 않을까? 하는 이이디어로 그림3 처럼 Mapping Network를 사용해 mapping 된 $W$를 각 scale에 입력으로 넣어서 학습을 시키게 된다.

그림3 StyleGAN Architecture


Mapping Network를 통해 나온 $W$는 정확하지는 않지만 학습 데이터셋의 확률 분포와 비슷한 모양으로 우선 mapping이 된 상태이기 때문에 그림4(c) 처럼 특징이 mapping된 latent space의 $W$가 disentangle하게 된다.

그림4



AdaIN

Neural Network에서 각 layer를 지나가며 scale, variance의 변화가 생기는 일이 빈번하게 발생하며 이는 학습이 불안정 해지는 현상을 발생하게 한다. 따라서 이를 방지하기 위해 Batch Normalization 방법같은 normalization 기법을 각 layer에 사용하므로써 해결하곤 한다.

StyleGAN에서는 Mapping network를 거쳐 나온 $W$가 latent vector의 style로 각 scale을 담당하는 layer에 입력으로 들어가게 된다. 위에서도 언급했다싶이 Neural Network에서 layer를 지나가면 scale, variance의 변화가 발생하며 학습이 불안정하게된다. 이때 해결하는 방법이 normalization기법을 사용한다고 언급헸다. 따라서 본 논문에서는 $W$ 가 style에 영향을 주면서 동시에 normalization 해주는 방법으로 사용하게 된다. AdaIN의 수식은 다음과 같다

\[AdaIN(x,y) = y_{s,i} {x_i - \mu(x_i) \over \sigma(x_i)} + y_{b,i}\]
  • $y_{s,i}$ 라는 linear cofficient를 곱해주고 상수를 더한다.
  • $y_{s,i}$ 와 $y_{b,i}$ 는 $W$ 를 Affine Transformation을 거쳐서 shape을 맞추고 style을 입혀주게 된다.

수식을 보면 표준편차로 나누고 평균을 뺀 값이니까 random variable을 정규화 시키는 것이다. 즉 , instance에 대한 normalization 해주는 것 이라고 볼 수 있다.

  • $W$ 가 AdaIN을 통해 style을 입힐 때 shape이 안맞아 Affine Transformation을 거쳐 shape을 맞춰준다.
  • layer를 거치면 학습이 불안정해져서 normalization을 각 layer에 추가하는데 StyleGAN에서는 그 역할을 AdaIN이 한다.
  • style을 입히는 개념은 $y_{s,i}$ 를 곱하고 $y_{b,i}$ 를 더하는 과정이다.
  • AdaIN에서 정규화를 할 때마다 한번에 하나씩만 $W$ 가 기여하므로 하나의 style이 각각의 scale에서만 영향을 끼칠 수 있도록 분리를 해주는 효과를 갖는다. 따라서 본 논문 저자들은 style을 분리하는 방법으로 AdaIN이 효과적이라고 말을 하고 있다.



요약

스타일 기반 생성 아키텍처

StyleGAN의 가장 큰 혁신 중 하나는 이미지 생성 과정에서 스타일을 별도로 제어할 수 있는 능력이다.

  • 스타일 파라미터: 입력 노이즈 벡터는 먼저 매핑 네트워크를 통해 내부 스타일 파라미터로 변환된다. 이 스타일 파라미터는 다양한 이미지 특성(예: 질감, 형태, 색상 등)을 제어한다.
  • 적응적 인스턴스 정규화(AdaIN): 각 컨볼루션 레이어의 출력에는 AdaIN이 적용된다. AdaIN은 스타일 파라미터에 기반하여 특정 레이어의 특성 맵을 동적으로 조정한다. 이를 통해 각 레이어에서의 스타일을 독립적으로 제어할 수 있게 되며, 이미지의 미세한 스타일 변화를 가능하게 한다.


분리된 노이즈 입력

StyleGAN은 각 레이어에 별도의 노이즈 입력을 제공한다. 이 노이즈는 생성 과정에서 무작위성을 추가하여, 예를 들어 머리카락이나 피부 질감과 같은 세밀한 디테일을 생성하는 데 도움을 준다. 이러한 접근 방식은 이미지에 자연스러운 변화를 추가하여, 더욱 현실적인 결과물을 만들어낸다.


로스 함수

StyleGAN의 로스 함수는 기본적인 GAN의 구조를 따른다. 여기에는 생성자와 판별자 간의 미니맥스 경쟁이 포함된다.

  • 생성자 로스: 생성자의 목표는 판별자를 속여서 생성된 이미지를 진짜처럼 보이게 하는 것이다. 이는 판별자의 예측과 진짜 레이블 간의 차이를 최소화하는 방식으로 이루어진다.
  • 판별자 로스: 판별자의 목표는 진짜 이미지와 생성된 이미지를 정확하게 구분하는 것이다. 이는 판별자의 예측을 실제 레이블에 가깝게 하는 것을 목표로 한다.


개선사항과 후속 버전

StyleGAN은 그 이후 여러 버전으로 개선되었다(예: StyleGAN2, StyleGAN3), 각각의 버전은 품질, 효율성, 그리고 사용성 면에서 중요한 개선을 제공한다.

  • StyleGAN2: StyleGAN의 초기 버전에서 발견된 몇 가지 문제점들, 예를 들어 이미지에 나타나는 특정 아티팩트와 불필요한 스타일 믹싱 문제를 해결한다. StyleGAN2는 또한 이미지의 품질을 향상시키고, 학습 과정을 안정화시킨다.
  • StyleGAN3: StyleGAN3는 특히 이미지의 회전이나 확대/축소 등의 변형에 대한 일관성을 개선하여, 생성된 이미지의 자연스러움과 실제감을 더욱 증가시킨다.
This post is licensed under CC BY 4.0 by the author.