StyleGAN 2019 - 고해상도 이미지를 고퀄로 생성해보자

반응형

https://arxiv.org/pdf/1912.04958.pdf

논문 본문의 링크입니다. 

 

Contribution

  1. 본 논문에서 제안된 style-based generator로 고해상도 이미지를 높은 퀄리티로 생성합니다.
  2. Disentanglement를 측정하는 지표 두가지를 제안합니다.
  3. 1024 x 1024 고해상도 사람얼굴 데이터셋 “FFHQ” 발표

 

Style-based generator

  1. StyleGAN 논문에서는 Discriminator나 loss에 관한 설명은 자세하게 나와있지 않고 style-based generator에 대한 설명이 대부분입니다. Style-based generator를 사용한 GAN 구조를 StyleGAN 이라고 합니다. generator를 제외한 다른 부분은 대체로 PGGAN의 구조를 그대로 사용합니다.baseline으로 사용된 PGGAN을 간단히 설명하자면, 학습 과정에서 layer를 추가하는 방식의 고해상도 이미지 생성에 잘 동작하는 GAN model 입니다. 

baseline으로 사용된 PGGAN을 간단히 설명하자면, 학습 과정에서 layer를 추가하는 방식의 고해상도 이미지 생성에 잘 동작하는 GAN model 입니다.

 


PGGAN - Progressive Growing of GANs for Improved Quality, Stability, and Variation

PGGAN 논문 간단 정리 

 

Progressive Growing of GANs for Improved Quality, Stability, and Variation

We describe a new training methodology for generative adversarial networks. The key idea is to grow both the generator and discriminator progressively: starting from a low resolution, we add new layers that model increasingly fine details as training progr

arxiv.org

real과 fake를 너무 구분하기 쉽다는 의미입니다. 또한 메모리 제약과 같은 computation 문제도 있습니다.

PGGAN은 이를 해결하기 위해 학습을 하면서 4x4 resolution 부터 1024 x 1024 까지 점차 키워나갑니다.

⭐️ Problem

PGGAN(Progressive Growing of GANs)이 나오기 전 GAN들은 고해상도(High Resolution) 이미지를 만드는 것이 매우 힘들었는데, 이 논문이 새로운 접근 방법으로 고해상도 이미지 생성하는 것을 해결했다.

  • 고해상도 이미지를 만드는 것이 어려운 이유는 High Resolution일수록 Disriminator는 Generator가 생성한 Image가 Fake Image인지 아닌지를 구분하기가 쉬워지기 때문이다.
  • 고해상도 이미지를 잘 만든다고 해도, 메모리 제약 조건 때문에 mini-batch size를 줄여야 한다. batch size를 줄이면 학습 과정 중 학습이 불안정해지는 현상이 발생하게 된다.

⭐️ Approach

  • 이 논문에서 제안하는 중요한 점은 점진적으로 Generator와 Discriminator 를 키우는 것이다. Low Resolution에서 High Resolution 으로 키우기 위해서 layer를 점진적으로 add 해주는 것이다.
  • 이렇게 점진적으로 layer를 추가해서 학습을 해주는 과정을 통해서 점점 High Resolution image를 만들어내게 된다.

 

Layer를 추가해서 학습할 때의 장점?

Image Distribution에서 Large Scale 구조를 먼저 발견하도록 도움을 준다.

Large Scale 이란 사람 얼굴에 대한 데이터 세트가 있다고 할 때, 이 데이터 세트에서 Large Scale 이란 전반적인 전체 얼굴의 형태를 의미한다.

아래의 그림과 같이 모든 Large Scale 를 동시에 학습을 하지는 않는다.

맨 처음에는 저해상도에서만 보여질 수 있는 Feature인 Large Scale 을 보면서 사람 얼굴에 대한 전반적인 내용들을 학습을 진행하고 점차 레이어를 쌓아 올려갈수록 세부적인 Feature들 ( 눈, 코, 입, 모공, 머리카락 등 )을 보면서 학습을 진행한다.

 

https://miro.medium.com/v2/resize:fit:4800/1*tUhgr3m54Qc80GU2BkaOiQ.gif 

 

해당 논문에서는 점진적으로 Model에 Layer를 추가할 때 새로 추가하는 레이어를 smooth하게, fade in 하게 넣어준다고 한다. 이 말은, 이미 잘 학습된 이전 단계의 layer( n-1 layer )들에 대한 sudden shock를 방지한다고 한다.

 


 

이 논문의 baseline이 되는 PGGAN의 generator에 StyleGAN에서 사용된 기능을 추가하며 비교합니다. 

 

Network

 

출처 - Style GAN 논문

 

Style-based generator는 크게 두가지 network로 이루어져 있습니다.

  1. Mapping Network
  2. Synthesis Network

 

1. Mapping Network

baseline인 PGGAN의 문제점은 세부적인 attribute를 조절하지 못한다는 것입니다. 이 단점을 해결하기 위해 latent space Z (Gaussian)에서 sampling 한 z를 intermediate latent space W의 w로 mapping 해주는 non-linear mapping network를 사용합니다.

 

이 mapping network는 8-layer MLP 로 구성되고 , 512차원 z를 512차원의 w로 mapping 해주는 역할을 합니다. 이러한 mapping network를 사용하는 이유는 feature 들의 disentanglement를 보장하기 위해서 입니다.

 

⭐️ Latent란 데이터가 가지고 있는 잠재적인 변수입니다. Latent vector는 한 이미지가 가지고 있는 잠재적인 벡터 형태의 변수입니다. 그리고 이런 latent vector들이 모여서 latent space가 형성됩니다. Latent space에는 우리가 학습시킬 이미지들이 latent vector의 분포 형태로 존재하게 되고 우리는 모델을 통해서 이미지가 가지고 있는 latent의 분포를 학습하게 됩니다.


Disentanglement ?? 

Disentanglement의 뜻은 영어 사전으로 직역하면 “얽힌 것을 푸는 것”입니다.

GAN에서 말하는 disentanglement란 latent space가 선형적인 구조를 가지게 되어서, 하나의 팩터를 움직였을 때 정해지 하나의 특성이 바뀌게 만들고자 하는 것입니다.

예를 들어 z의 특정한 값을 바꿨을 때 생성되는 이미지의 하나의 특성( 성별, 머리카락의 길이, 바라보는 방향 등)만 영향을 주게 되면 disentanglement라고 합니다.

이전에 사용하던 방법은 고정된 분포를 따르는 latent space Z를 바로 학습 데이터의 분포에 끼워맞추고자 했습니다. 따라서 실제 데이터가 아래의 (a)와 같은 분포를 가지고 있더라도 (b)처럼 Z의 분포에 맞게 억지로 끼워맞춰지는 방향으로 따라하게 됩니다.

 

예를 들어 랜덤 벡터(z)로 생성한 이미지가 왼쪽의 수염이 없는 여성이라고 합시다.

여기서 수염을 추가하려면 z1축을 조절하여 수염을 추가할 수 있는 랜덤 벡터(z’)를 찾았다고 가정해보겠습니다.

이 여성의 그림에 수염을 추가할 수 있을까요? 물론 가능합니다.

그러나 오른쪽 아래의 수염을 가진 남성의 사진이 나오게 됩니다. 즉, 수염을 추가한 것 뿐만 아니라 다른 피처들이 동시에 바뀐 것입니다.

 

coursera - Build Basic Generative Adversarial Networks (GANs), 'Challenges with Controllable Generation’

이러한 결과가 나오는 것은 z1이 수염에 관련된 특징뿐만 아니라 다른 어떤 특징과도 연관이 되어있기 때문입니다.

이 예시로 볼 때 머리 길이, 눈매, 그리고 눈썹 정도일 것 같습니다. 다시 말하면, 하나의 축이 하나의 특징을 의미하는 것이 아닙니다.

이를 entanglement (뒤얽힘, 꼬여있음) 혹은 축이 entangle 되어 있다고 표현합니다.

수염(bread)을 조작하였을 때, 이 특징과 연관된 ‘머리’ , ‘눈매’ 등이 함께 바뀌는 것을 보면 이들은 서로 entangle 되어있다고 할 수 있습니다. 내가 원하는 feature 들 이외에 나머지는 고정한 상태로 조작하고 싶다면, 축을 disentangle하게 만들면 됩니다.

축이 꼬여있는(entangle) 이유 중 한 가지는 일반적으로 z의 차수가 충분하지 않을 때 발생하지만, 이외에도 여러가지 이유가 있습니다.

 


Latent space W에서 바로 이미지를 생성하는 것이 아닌, inetmediate latent space W로 mapping 하는 이유는?

 

 

만약 "머리가 짧은 남성"에서 "머리가 긴 여성"으로 interpolation을 점점 수행한다면, 남성에서 여성으로 성별이 바뀌면서 머리가 점점길어지는 양상을 확인할 수 있습니다.

머리가 긴 남성은 데이터셋에 존재하지 않는다고 가정하여 위와같은 모양입니다.

만약 interpolation과정에서 성별이나 머리길이에 상관없는 feature들이 갑자기 나타난다면 space가 linear하지 않다는 의미입니다. 즉, entangle되어있다는 것이죠.

 

기존 GAN 모델은 Latent vector에서 바로 mapping 하여 세밀한 style 조정이 어려웠습니다.

또 latent vector가 학습 데이터의 확률 분포를 따를 수 밖에 없었다. 따라서 Gaussian 또는 Uniform을 latent space로 하여 sampluing 하였습니다. 이걸 entanglement 라고 하는 것 같습니다. ( PGGAN은 Gaussian에서 Sampling 한다 )

이 논문에서 강조하는 부분은 itermediate latent space 입니다.

 

 

(b)는 PGGAN의 경우입니다. 데이터의 분포를 Gaussian으로 가정하기 때문에 Z space는 원래의 분포가 Gaussian에 맞춰 구부러져 모델링될 것입니다. 때문에 원래 분포보다 뒤틀림이 생기고, 보다 engtangle 될 수 밖에 없습니다.

 

(c)는 이러한 entanglement를 방지하고자 mapping network를 통해 imdeiate latent space로 한 번 보내서 less entangle하도록 만들었습니다. latent space Z보다 less entangle한 imediate latent space W에서 이미지를 생성하게 되어 style을 interpolation하는 과정에서 더 linear하게 동작할 수 있습니다.

 

즉, 맵핑 네트워크를 통해 얻은 w가 latent space의 역할을 한다고 보면 됩니다. 이게 바로 intermediate latent space이고 이게 이 논문에서 가장 중요한 점인듯 싶습니다.

 

⭐️ Intepolation (내삽) : 마지막 매개변수인 interpolation은 이미지의 크기를 조절할 때 사용할 보간법을 지정한다. 이미지를 확대하거나 축소하는 함수와는 다르게 설정해야 하는 크기와 보간법이 존재합니다. 이미지 크기 조절 함수는 어떤 크기로 변환될지 알 수 없으므로 보간법을 활용합니다.

 

2. Synthesis Network

mapping network를 통해 sampling한 z vector를 w vector로 만들었습니다. 이제 w vector로 이미지를 Synthesis하는 방법을 알아보겠습니다.

PGGAN는 4x4부터 1024x1024까지, 총 9개의 layer가 있는 progressive growing구조입니다. 낮은 resolution의 layer에서는 얼굴형이나 피부색, 머리 스타일 같은 대략적인 특징을 만들고, 높은 resolution으로 갈 수록 머리 색이나 세부적이고 세밀한 특징을 만들게 됩니다. 이러한 동작으로 고화질의 이미지를 잘 생성할 수 있는 것입니다. StyleGAN에서도 이 progressive growing 구조를 유지하여 고화질의 이미지를 만들어냅니다.

synthesis network는 4x4부터 1024x1024 resolution feature map을 만드는 총 9개의 style block으로 이루어져있습니다. 마지막에는 RGB로 바꿔주는 layer가 있어 이미지 channel에 맞춰줍니다. Style block의 input은 전 style block의 output인 featuremap입니다. 하나의 style block당 두번의 convolution을 진행합니다.

Style block의 세부 구조는 크게 세가지로 나누어 설명드리겠습니다.

 

 

mapping network로 만들어진 w는 affine transform을 거쳐 style vector로 변합니다.

A는 “learned affine transform” ( fully connected layer ) 으로 학습되는 parameter입니다.

convolution 다음에 들어가기 때문에 총 18번 들어가게 됩니다.

A로 스타일 벡터를 만들고 AdaIN의 style scailing factor와 style bias facor의 역할을 하게 됩니다.

 

⭐️ AdaIN은 content 이미지 x에 style 이미지 y의 스타일을 입힐 때 사용하는 Normalization으로 style transfer에 거의 공식적으로 사용됩니다.기존 AdaIn과 비교하면, convolution을 거친 featuremap이 AdaIN의 content이미지의 역할이고 w 가 style이미지의 역할입니다. feature map은 statistic하게 normalization되고 w으로 부터 나온 scaling factor와 곱해지고, bais factor가 더해집니다. normalize연산은 AdaIN,IN과 동일하게 당연히 channel specific하게 진행됩니다.

 

2. Constant input

style-based generator는 w를 입력으로 받기 때문에, 더이상 PGGAN이나 다른 GAN과 같이 z 에서 convolution연산을 하지 않아도 됩니다. 때문에 synthesis network는 4x4x512 contant tensor에서 부터 시작합니다.

 

3. Stochastic variation

Progressive growing구조와 AdaIN으로 고해상도의 이미지를 생성할 수 있습니다. 여기에 세부적인 attribute를 추가하기 위해 Noise를 추가해줍니다.

Gaussian에서 sampling한 nosie를 Convolution의 output인 featuremap에 더해줍니다(sum) B block을 통해 featuremap 사이즈에 맞게 변형됩니다. B 역시 학습되는 parameter입니다.

이를 통해 stochastic variation을 추가할 수 있습니다. 여기서 Stochastic variation이란 머리카락의 배치이나 모공, 주근깨 같이 아주 세밀하고 때에 따라 달라지는 특징들을 말합니다.

이러한 Noise추가는 stochastic variation에만 영향을 주고, Styleblock과 AdaIN으로 만드는 high-level attribute에는 영향을 주지 않습니다.

 

Style mixing

StyleGAN의 특징 중 하나는 localizaiton 입니다. 여기서 localization은 style의 특정 subset을 변경하는 것이 이미지의 특정 부분을 변경하는데 효과를 낸다는 의미입니다.

즉, layer의 특정한 부분을 바꾸는 것이 이미지 어떤 부분을 바꾸는 것에 영향을 줍니다.

StyleGAN의 progressive growing 구조의 장점을 앞에서 언급하였습니다. mapping network로 만들어진 w 는 synthesis network의 모든 layer에 적용될 style을 표현하도록 학습합니다. 낮은 resolution의 Style block에서는 symentic한 정보를 만들고 높은 resolution으로 갈 수록 세밀한 attribute에 영향을 준다는 것이었습니다.

이 성질을 이용하여 style의 localized network(Synthesis network의 block)을 조절하여 (scale-specific 수정) 이미지를 생성할 때 style attribute를 조절하는 것이 가능합니다.

 

⭐️ Mixing regularization

mixing regularization은 style mixing으로 만든 이미지도 discriminator에 “fake”로 넣어주는 기법입니다.

mixing regularization을 사용하면 각 Style이 더 잘 localization되어 다른 style에 correlation되지 않도록 합니다.

 

Conclusion

이 논문은 이미지 합성을 위해 style에 기반한 새로운 generator 구조를 제시하였고 높은 성능 향상을 보여주었습니다. 합성되는 이미지의 구성요소를 조정하는 것이 가능하며, 나아가 CNN에서 다양한 visual attribute를 어떻게 encoding하는지에 대한 이해도 증가에도 기여했습니다. generator 구조에만 집중하였기 때문에 dicsriminator 구조나 loss function등의 변경을 통해 더욱 개선될 여지도 보여진다고 결론 지을 수 있습니다.

 

Reference 

 

https://airsbigdata.tistory.com/217

 

[논문 리뷰] StyleGAN: A Style-Based Generator Architecture for GANs

이번에 소개해 드릴 논문은 A Style-Based Generator Architecture for Generative Adversarial Networks으로 StyleGAN으로 자연스러운 고해상도 이미지를 만들면서 많이 알려지게 된 논문입니다. 해당 논문은 NVDIA 팀이

airsbigdata.tistory.com

 

https://velog.io/@minjung-s/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0StyleGAN-A-Style-Based-Generator-Architecture-for-Generative-Adversarial-Networks

 

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

이번에 리뷰할 논문은 2019 CVPR에 발표된 "A Style-Based Generator Architecture for Generative Adversarial Networks"입니다. 흔히 StyleGAN으로 불리는 모델입니다. 논문에서 제안된 style-bas

velog.io

 

 

반응형