땡글이LAB

[논문리뷰] StyleGAN : A Style-Based Generator Architecture for Generative Adversarial Networks 본문

AI/논문리뷰

[논문리뷰] StyleGAN : A Style-Based Generator Architecture for Generative Adversarial Networks

땡글이B 2022. 5. 30. 18:10

[0. 본격적인 리뷰 전 간단한 설명]

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

  • image synthesis(이미자 합성) 과정에서 specific(특정)한 scale(크기)로 자유롭게 조절해가면서 style을 변경한다는 의미이다.

 

[0-1. PGGAN]

 PGGAN이란, 점진적으로 낮은 해상도부터 높은 해상도까지 차근차근 점진적으로 생성하는 대표적인 생성모델로써 StyleGAN의 base가 되는 모델로 latent vector z가 Normalize를 거쳐 모델에 바로 입력이 되는 학습이 진행된다. 이렇게 z가 Generator에 바로 입력으로 들어가면 GAN은 latent space가 무조건 학습 데이터셋의 확률분포와 비슷한 형태로 만들어지도록 학습을 진행한다. 이렇게 되면 latent space가 entangle하게 만들어지게 된다. 

 그리고 기존의 GAN은 저해상도 이미지를 생성해서 Discriminator를 속일 수 있는 단점이 존재했지만, PGGAN에선 고해상도 이미지를 생성함으로써 기존의 GAN모델을 개선시켰다고 볼 수 있다.

 

entangle?

  • 서로 얽혀 있는 상태여서 특징 구분이 어려운 상태를 의미한다.

disentangle?

  • 각 style 들이 잘 구분되어 있는 상태여서 어느 방향으로 가면 A라는 특징이 변하고 B라는 특징이 변하게 되어서 특징들이 잘 분리되어 있는 상태를 의미한다.
  • 즉, 선형적으로 변수를 변경했을 때 어떤 결과물의 feature인지 예측할 수 있는 상태를 의미한다.

PGGAN Architecture

 

 아래의 그림은 학습 데이터셋을 시각적으로 보여주는 그림이다. 예시를 들자면, 학습 데이터셋에는 검정 머리이며 안경을 착용한 동양인으로 구성되어있다고 가정한다. 붉은색 화살표는 안경을 담당하는 차원이고 파란색 화살표는 머리카락 색을 담당하는 차원이다. PGGAN처럼 latent variable을 기반으로 학습하는 생성 모델은 noise 상태에 있는 latent space Z를 학습 데이터 분포와  비슷하게 변화시키는 mapping을 학습하는 것을 목표로 한다. 

 하지만, 만약 학습 데이터셋에 없는 데이터 분포인 머리카락 색이 검정색이며 안경을 미착용한 동양인을 생성하고 싶어도 학습 데이터의 고정된 분포를 latent space가 non-linear하게 mapping이 되어버린 상태여서 생성하기 매우 어렵다.

 

 위의 이미지에서 비어 있는 부분이 의미하는 바는 데이터셋에 "머리카락이 검정색이며 안경을 착용하지 않은 동양인"의 데이터가 없다는 것을 의미한다.

[0-2. PGGAN으로 이미지 생성]

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

 wrapping이 발생하게 되면 생성된 이미지의 머리카락 색깔이 갑자기 다른 형태와 색으로 급진적으로 변화되어 어떤 생성 이미지가 나올지 예측할 수 없을 정도로 급진적으로 변하게 되는 특징이 존재한다. 즉, PGGAN에서는 특정 특징을 제어하기가 어렵다는 한계점을 가진다. 이 단점은 StyleGAN에서 개선된다.

 

 

[1. Style GAN]

 Style GAN의 아이디어는 마치 화가가 눈동자만 다른 색으로 칠하거나 머리카락 색만 다른 색으로 칠하려고 하는 것처럼 PGGAN에서도 style들을 변형시키고 싶은데 Generator에 latent vector z가 바로 입력되기 때문에 entangle하게 되어서 불가능하다는 단점이 있었다.

 그래서 Style GAN 논문 저자는 style transfer처럼 원하는 style로 수치화시켜서 GAN에 적용하고자 하였다. 그래서 나온 StyleGAN의 아이디어가 각각 다른 style을 여러 scale에 넣어서 학습 시키는 방법이다.

 즉, latent space Z 를 그냥 Generator에 넣는 것이 아니라, Mapping network를 통해서 W 도메인으로 매핑한 뒤, 사용한다. 그러므로 StyleGAN에선 아래의 그림 "Mapping Network image"의 (b)의 Z 도메인이 아닌 W 도메인으로 매핑한 뒤 Generator를 수행한다. 이렇게 해야 각 특징들이 적절히 선형적으로 잘 분리된다.

 추가적으로 Stochastic Variation 을 잘 처리할 수 있게끔 noise를 넣어주었다. 바람의 세기나 사람의 컨디션에 따라서 stochastic variation은 변화가 생기는데 그것들을 컨트롤 할 수 있도록 별도의 noise input을 넣어준 것이다.

 stochastic variation 또한 별도의 Affine transformation인 B를 거쳐서 각각의 feature map에 noise값이 적용될 수 있도록 만들었다. 

  • stochastic variation은 머리의 세세한 결, 콧수염, 주근깨와 같이 perception of the image에 영향을 주지 않고, randomized 될 수 있는 부분들을 말합니다.
  • Affine Transformation점, 직선, 평면을 보존하는 선형 매핑 방법이다. 즉, 아핀 기하학적 성질들을 보존하는 두 아핀 공간 사이의 함수이다.

Affine Transformation Example

 

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

 

Style GAN Architecture

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

Mapping Network image

 

AdalN

AdalN의 기능을 살펴보기 전 Neural Network를 한 번 살펴보도록 한다. 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 해주는 방법으로 사용하게 된다. AdalN의 수식은 아래와 같다.

AdalN 수식

  • y(s,i)라는 linear cofficient를 곱해주고 상수를 더한다.
  • y(s, i)와 y(b, i)는 W를 Affine Transformation 을 거쳐서 shape을 맞추고 style을 입혀주게 된다.

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

 

 Convolution 결과가 n개의 channel로 구성된 하나의 tensor라고 한다면, 이 때 각각의 feature들을 x(i)라고 해보겠다. 그렇다면 512차원의 벡터 W가 있을 때, A 라고 불리는 Affine transformation을 거쳐서, 2 X n 크기의 결과를 만들어낸다. 이 말은  각각의 채널마다 두 개씩 style 정보를 만들어내겠다는 의미이다. 

 y(s, i)는 얼마만큼 scaling하고, y(b, i)는 얼마만큼 bias를 더할지를 의미한다. 여기서 y 값이 style 정보를 의미하게 되는 것이다.

 이렇게 feature의 statistic(통계 : 정규화시켜줌)을 바꿔주는 것 자체가 style transfer의 일환으로 볼 수 있고, 본 논문에서는 하나의 고해상도 이미지가 만들어지는 과정에서 다양한  style들이 반영되도록 만들어서 각각의 style이 합성된 결과 이미지를 볼 수 있게 된다.

 

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

 

[1-1. Latent Vector Meanings of StyleGAN]

 StyleGAN 논문에서는 각각의 style 정보가 입력되는 layer의 위치에 따라서, 해당 style이 미치는 영향력의 규모가 달라진다. 정확하게는 Coarse style, Middle style, Fine style로 나뉜다.

  • Coarse style : 세밀하진 않지만, 전반적인 semantic한 정보들을 바꿀 수 있는 것을 의미한다. 정확히는 Latent vector w는 18 X 512차원의 행렬로 볼 수 있는데, 앞 쪽에 들어가는 4개 latent vector가 Coarse style로 분류된다.
    • ex) 얼굴형, 안경의 유무 등 큰 
  • Middle style : 앞에서 5번째부터 4개의 latent vector가 Middle style로 분류된다.
    • ex) 헤어스타일, 눈 감았는지 여부 등 Coaser style보다 조금 더 세밀한 style
  • Fine style : 앞에서 9번째부터 10개의 latent vector가 Fine style로 분류된다
    • ex) 색상적인 정보나 미세한 구조와 같이 Middle style보다 훨씬 더 세밀한 정보를 담당하는 style

 앞 쪽에 적용되는 style image일수록, 나중의 결과이미지까지 많은 layer를 거쳐서 만들어지기에 결과이미지에 많은 영향을 준다. 하지만, 뒤 쪽에 있는 latent vector의 경우, Convolution 연산 측면에서 영향을 미칠 수 있는 patch의 크기가 작아지므로 세밀한 style 위주로 바뀔 수 있는 것이다.

 

[2. Properties of the Style-based generator]

[2-1. Style mixing]

Style Mixing

 Style Mixing (Mixing Regularization)은 인접한 레이어 간의 style correlation(상관관계)를 줄이는 기술이다. 이 기술은 FID 값을 낮추기 위해 적용한다기 보다 다양한 style들이 서로 잘 분리될 수 있도록 하기 위해서 적용하는 것이다. 

 Style Mixing 기법은 위의 그림과 같이 동작한다. 

  • 크로스오버(crossover) : interpolation 하는 것이 아니라, 특정 point를 기점으로 위아래로 나눠서 위는 w1 vector를 사용하고, 아래는 w2 vector를 사용하는 방법이다. 즉, 위 그림에서의 위 쪽 9개는 w1 vector 사용하고, 아래 9개는 w2 vector를 사용한다.

 위 그림에서의 vector 모양과 같은 style vector로 입력된다. 실제 결과를 보면 Mixing Regularization을 많이 적용할수록, 나중에 크로스오버(crossover)해서, 다양한 style이 섞인 이미지를 만들어낼 때, 더욱 그럴싸한 이미지가 만들어질 수 있음을 확인할 수 있었다.

 

single latent z 를 이용할 경우의 특징

StyleGAN에서 동일한 latent vector z가 Mapping network f 를 통해서 나온 W 하나만 계속 네트워크를 학습하다 보면 correlation이 발생하며 학습이 되는 문제가 발생할 수 있다.

  • 하나의 예시로, 학습 데이터셋에서 극히 드물게 대머리인 사람은 항상 선글라스를 착용하고 있는 데이터가 있을 때 GAN은 학습 데이터의 분포와 비슷한 분포를 갖도록 학습하다보니 Generator은 선글라스 == 대머리 라는 correlation이 발생하여 무조건 대머리인 사람은 선글라스를 착용한 상태로 생성하는 overfitting이 일어날 가능성이 많아집니다.

 

multi Latent z 를 이용할 경우의 특징

style correlation이 발생하지 않고 학습을 진행하기 위해서는 synthesis network을 학습시킬 때 하나의 Latent vector z에서 나온 W를 이용해서 학습하는 것이 아니라 latent space에서 뽑은 z1, z2 ... zn을 mapping network f에 통과시켜서 w1, w2 ... wn을 만든다. 

 예시로 아래의 (그림1)과 같이 50:50 비율로 나눠서 각 layer에 적용해도 되고 다른 비율로 상황에 따라 적용하면 된다. 

그림 1

 이런 style mixing 방법을 사용하면 다양한 style이 섞여서 synthesis network 학습이 된다. 따라서 Generator 을 이용해서 이미지 생성을 해보면 style correlation이 거의 없으며 입력할 때 AdalN을 통해 입력을 하게 되므로 regularization 효과도 볼 수 있게 된다.

 

 그 결과 아래의 그림처럼 style correlate되는 현상을 방지해서 각 layer 에 해당하는 style들이 잘 구분되면서 적용되는 것을 볼 수 있다.  

[2-2. Measure]

Disentanglement 관련 성능 측정 방법 2가지

latent space가 disentangle 하다는 것을 정량화하기 위해 본 논문에서는 다음과 같은 두 가지 measure(측정법)를 제안했다. 

  • perceptual path length 
  • linear separability 

latent space에서 아래의 그림처럼 blue point 에서 red point로 변화를 주면서 생성한 이미지들의 특징들이 사람이 봤을 때 "어떤 특징들만 변화하였는지"를 잘 구분을 할 수 있는지에 대한 방법을 자동화시켜서 perceptual path length라는 개념을 제안했다.

 

[Perceptual path length]

 우선 Perceptual path length를 살펴보기 전, latent vector interpolation 하는 방법 2가지에 대해 알아보도록 한다. 

interpolation 방식 2가지

 

측정방법

지금까지 생성된 이미지들간 거리가 얼마나 떨어져 있는지 알아보는 방법으로 L2-distance 방법을 이용했지만, perceptual path length는 이미지들을 잘 구분하도록 학습된 pretrained model을 이용해서 입력 이미지가 들어오면 그 이미지가 어떤 이미지인지 처리하기 위해 본 논문에서는 VGG16 모델을 사용한다.

 

이미지가 어떤 이미지인지 잘 구분하는 pretrained model의 중간 레이어의 feature map은 마지막 레이어 보다 이미지에 대한 더 많은 정보들을 가지고 있으니 embedding된 중간 레이어의 feature map을 사용하여 perceptual path length을 구하게 된다. 이 역할은 사람이 여러 이미지들에서 어떤 특징들이 변화하였는지 잘 구분하는 과정과 동일하다고 이해하면 된다.

 

 아래의 그림에서 (b)는 학습 데이터셋의 분포를 억지로 끼어맞춰서 만든 latent space Z이다. 그림을 보면 선(line)이 규칙적이지 않고 불규칙하게 좁았다가 넓었다가 하는 것을 볼 수 있다. 저런 latent space 에서 z를 변형하면 남자였다가 여자로 변하는 등 많이 변하게 된다. 이런 상태를 latent space가 entangle하다 라고 말을 한다.

 하지만, 본 논문에선 latent space가 disentangle하게 하기 위해서 Mapping network f 를 거쳐서 학습 분포와 비슷한 형태로 처음부터 mapping 한 latent space W를 이용해서 모델을 학습하게 된다. 이 때 더 disentangle하게 만들기 위해서 style mixing 기법도 사용한다. disentangle한 latent space 에서 w 값을 변화해주면 특징 각 scale 마다 담당하고 있는 특징들만 변하게 된다. 이를 latent space가 disentangle하다라고 말한다.

 

[Linear Separability]

 Linear Separability도 Path length와 마찬가지로 선형적으로 얼마나 잘 분리될 수 있는지를 평가하는 지표이다. 

 

[2-3. 원하는 부분을 미세하게 변형하기]

 전통적인 Generator은 z 하나로 입력되기 때문에 미세한 특정 부분만 변경을 해줄 수 없다는 특징이 있다. 하지만 StyleGAN은 각 해상도마다 style을 담당하는 layer에 Mapping network을 거쳐서 나온 w을 넣어주는 형식으로 구성 되어있어서 가능하다.

 

 위에 존재하는 (그림1)을 보면, style을 담당하는 w를 AdalN을 통해 입력해줄 뿐만 아니라, Noise가 별도로 입력되는 것을 볼 수 있다. 이는 랜덤하게 noise를 입력시켜주면서 아래의 그림과 같이 현재 style에서 화가가 리터칭 하듯이 인공지능이 리터칭하는 것처럼 만들어 준다.

 

[한계점]

 StyleGAN의 한계점은 생성된 이미지들을 살펴보면 물방울 형태의 blob들이 관측이 된다는 점이다. 이 점은 StyleGAN2에 언급되어있다.

 

[결론]

 High resolution Image Generation하는 GAN 논문 중 StyleGAN은 전통적인 방식과 다르게 각 style을 담당하는 layer에 style w을 AdaIN을 통해서 입력해주는 방법으로 학습함으로써 원하는 style로 변형을 시켜줄 수 있는 모델이며 특히 높은 성능 향상을 보여주었다. 또한 latent space가 disentangle하게 되기 위해서 Mapping Network를 사용한 점 또한 인상 깊은 부분이다.

 

 

References

 

 

 

 

 

Comments