StyleGAN

.·2023년 4월 22일
0
post-custom-banner

StyleGAN은 PGGAN구조에서 Style transfer 개념을 적용하여 generator architecture를 재구성한 논문이다. 이론 인해 PGGAN에서 불가능했던 style 을 scale-specific control이 가능하게 되었다.

SyleGAN의 핵심 아이디어

1. 맵핑 네트워크 (Mapping Network)

특징

  • 512차원의 z 도메인에서 w 도메인으로 맵핑을 수행.
  • 가우시안 분포에서 샘플링한 z 벡터를 직접 사용하지 않음.

이전 PGGAN의 문제점

그림 2는 학습 데이터셋을 시각적으로 보여주는 그림이다.
더 나은 이해를 돕고자 예시를 들어 설명을 해보면, 학습 데이터셋에는 검정 머리이며 안경을 착용한 동양인으로 구성되었다고 가정한다.
붉은색 화살표는 안경을 담당하는 차원이고 파란색 화살표는 머리카락 색을 담당하는 차원이다.
만약 학습 데이터셋에 없는 데이터 분포인 머리카락색이 검정색이며 안경을 미착용한 동양인을 생성하고 싶어도 학습 데이터의 고정된 분포를 latent space가 non-linear하게 mapping이 되어 버린 상태여서 생성하기 매우 어렵다.

GAN이 잘 학습이 된 상태라면 이제 생성 모델을 이용해서 이미지를 생성할 경우 latent variable 기반의 생성 모델은 가우시안 분포 형태의 random noise을 입력으로 넣어주게 됩니다. 학습 데이터셋의 특징에 mapping 되어있는있는 latent space Z는 n차원의 가우시안 분포로 구성되어서 그림 2(b)와 같은 형태입니다. (a)의 텅 비어있는 부분이 있는 상태에서 mapping을 시켜주니까 억지로 끼어맞추기 하는 형식으로 mapping이 이루어지다보니 wrapping이 발생하게 됩니다.

wrapping이 발생하게 되면 생성된 이미지의 머리카락 색깔이 갑자기 다른 형태와 색으로 급진적으로 변화되어 어떤 생성 이미지가 나올지 예측할 수 없을 정도로 급진적으로 변하게 되는 특징이 존재합니다.

StyleGAN에서 해결

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

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

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

2. Synthesis Network

AdaIN

AdaIN 의 기능을 설명하기전, Neural Network 을 한번 살펴보자.
Neural Network에서 각 layer을 지나가며 scale, variance 의 변화가 생기는 일이 빈번하게 발생하며 이는 학습이 불안정 해지는 현상을 발생한다.
따라서 이를 방지하기 위해 BN (Batch Normalization) 기법을 각 layer 에 사용함으로써 해결하곤 한다.

https://velog.io/@kong2520/Batch-Normalization (BN)

StyleGAN에서는 Mapping Network를 거쳐서 나온 W가 latent vector의 style 로 각 scale을 담당하는 layer에 일력으로 들어가게 된다.
위에서도 언급하다 싶이 Neural Network에서 layer를 지나가면 scale, variance의 변화가 발생하여 학습이 불안정하게 된다.
이를 해결하는 방법이 Normalization 기법을 사용한다고 언급했다.
따라서 논문에서는 W가 style에 영향을 주면서 동시에 normalization 해주는 방법으로 상요하게 된다.

AdaIN 수식

  • ys,i 라는 linear coefficient 를 곱해주고 상수를 더한다.
  • ys,i 와 yb,i는 W를 Affine Transformation을 거쳐서 shape을 맞추고 style을 입혀준다.

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

간단하게 정리해보자면,

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

Synthesis Network

  • 총 9개의 Block 이 존재한다. 저 해상도 이미지에서 출발해 (1번째 Block에서 출발) 점차 너비와 높이를 증가 시켜 고해상도 이미지를 만든다.
  • 각각의 Block에는 2개의 CNN과 2개의 AdaIN Layer를 가지고 있다.
  • 각 AdaIN Layer에는 latent W에서 나온 스타일을 Affine Transformation을 한번 거쳐서 총 18개의 AdaIN Layer로 스타일로 전달해준다.

너비와 높이를 증가시키기 위해 Upsampling이 이 있고 이어서 CNN연산을 수행 그 후 AdaIN 을 거쳐 다시 CNN 을 수행 다시 AdaIN을 수행하다. 이러한 방식을 거쳐 더욱 그럴싸한 이미지를 만든다.

AdaIN Layer에 동작 방식은 오른쪽(빨간색 네모 안)과 같다.
1 X 512 차원인 W 벡터는 Affine Transformation을 거쳐 2 X n 크기의 결과를 만들어낸다. 이는 각각의 channel마다 2개의 스타일을 만들어 낸 것이다.
xi 를 Normalization (각각의 채널에 대해서 mean 과 분산 = xi - u(xi) / eps(xi))을 통해 한 후 scale and bias (ys,i 를 곱하고 yb,i를 더해) 해줘 AdaIN 을 수행해준다.
(xi 는 CNN 의 output 이며, n 개의 channels 로 구성된 하나의 tensor에서 각각의 channel에 대한 feature들을 xi이다)

이렇게 feature 의 statistics만 바꿔주는 것 자체로 Style Transfer로 볼 수 있다.
각 Block 마다 Style 을 넣어줘서 이미지의 다양성을 보장 시킨다.

초기 입력을 상수(Constant)로 대체

각 Block 마다 Style 을 넣어줘서 이미지의 다양성을 보장 시킨다.
그래서 latent vector로 부터 Input image가 시작되지 않아도 충분히 좋은 결과를 낼 수 있다.

Stochastic Variation

  • 다양한 확률적인 측면 컨트롤
    한명의 사람을 사진을 여러번 찍는다고 해도 바람의 세기에 따라 머리카락이 달라보이고, 컨디션에 따라 피부색이 달라 보일 수 있는 확률적인 feature가 개입 될 수 있다. 그러한 Stochastic variation 을 컨트롤하기 위해서 별도의 Noise 를 집어넣는다.
    Noise Variation 또한 별도의 Affine Transformation 인 B 을 거쳐서 shape을 같도록해 Noise 값을 적용할 수 있도록 만든다.
    이러한 Noise 는 AdaIN Layer 을 수행하기 직전에 Noise 가 반영될 수 있도록 해준다.

아래 그림 예시를 보면 noise 를 추가 전 후를 쉽게 비교할 수 있다.

기타

PGGAN과 StyleGAN의 차이

세로 점선 왼쪽편 (a)이 PGGAN 의 네트워크이다.
이러한 PGGAN에서 mapping network 를 추가하고 style 과 noise를 추가해준게 StyleGAN의 아키텍처이다.

latent vector Meanings of StyleGAN

각각의 스타일 정보가 입력되는 레이어의 위치에 따라서 해당 스타일이 미치는 영향력이 다르다.
Coarse Style, Middle Styles, Fine Styles로 나눌 수 있다.

  • Coarse Styles : 전반적인 symentic feature를 바꿀 수 있는 style,
    얼굴의 포즈, 안경 유무, 얼굴의 형태 등과 같은 큼지막한 변화를 담당한다.
  • Middle Styles : 인물의 헤어스타일, 눈을 뜨거나 감은 여부 등 과 같이 조금 더 세밀한 정보를 컨트롤
  • Fine styles : 색상적인 측면이나 미세한 구조와 같이 훨씬 세밀한 정보를 컨트롤

그림에서 예를 보면 Image A에서 Image B의 스타일을 가져와서 이미지를 생성한다고 했을 때, 2행 4열은 1행 3열의 아기 사진의 스타일을 가져와서 이미지를 생성했는데 이 결과 이미지는 아기의 얼굴 전반적인 구조로 부터 스타일을 가져와 이미지를 생성한 것을 볼 수 있다.
Middle styles에서는 해당 5행 4열을 보면 머리 색깔과 같은 부분을 Image B에서 가져온 것을 확인할 수 있다.

profile
.
post-custom-banner

0개의 댓글