Curaai00's Deep Learning Blog

DCGAN: Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

딥러닝/GAN
DCGAN

Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, DCGAN

기존의 GANs에서는 단순히 fully connected layer를 사용한 Model을 정의하였습니다. 그래서 여기서는 GAN의 문제점을 Deep Convolutional한 문제로 풀고, 새로운 장점과 방법을 연구하였습니다.

기존의 GAN의 문제점

Low Resolution

기존의 GAN에서는 단순한 fully connected를 사용하였기 때문에 Generator가 High Resoulution한 즉 높은 화질의 이미지를 생성해낼 수 없었습니다. 그래서 MNIST와 같이 단순한 (28,28)사이즈의 이미지 밖에 생성해 낼수 없었습니다.

Memorizations

Generator가 정말로 이미지를 만들어 내는 것이 아닌 학습한 데이터를 기억하여(Memorization) 하나를 골라내는 것이 아니냐? 라는 의문점이 있기도 하였습니다.

Unstable Train

학습이 항상 잘 되는것이 아니라, 어떤 때는 진짜같은 이미지를 만들어 내지못하기도 하고, 한가지 이미지만을 계속 만들어내는 등 안정적이지 못한다는 단점이 있었습니다. 흔히들 이 문제를 Mode collapsing(GANs이 실제 데이터의 분포를 따라 만들어 가지 못할 때 일어납니다)

Deep Convolution의 장점

Network에 convolution을 사용하게 되면서 아래와 같은 장점들을 얻을 수 있게됐습니다.

  • deconvolution을 통한 high resolution한 이미지를 생성할 수 있습니다.
  • filter visualization 통해 시각화하여 어떻게 만들고, 구별하는지 인지하며, 기존의 Black Box라는 문제점을 해소 할수 있습니다.
  • convolution을 통해 이미지의 특징을 학습하여 다양하고 실제같은 이미지를 학습 할 수 있다.
  • 안정적인 학습이 가능합니다.

Model Structure

All Convolution net

  • D의 max pooling과 같은 pooling function를 strided convolution으로 대체합니다.
  • G는 spatial upsampling(Deconvolution)을 적용합니다.

Eliminate Fully Connected Layer

  • G의 맨위 Fully Connected layer는 없애고, global average pooling으로 바꿉니다.
  • D의 flatten된 last convolution layer는 single sigmoid를 output으로 합니다.

Batch Normalization

DCGAN에서는 모든 Layer를 Batch Normalization을 사용합니다. D의 input layer와 G의 output layer는 batch norm을 사용하지 않습니다.

Experiment

Train Examples

  • epoch(1) 결과


  • epoch(5) 결과


위 결과들을 보면 epoch(1)에서는 bedroom이 성공적으로 만들어졌지만, 자세히 보시면 구조나 object들이 이상한 점을 발견할 수 있습니다. 하지만 epoch(5)에서는 그런 object의 불안정한 부분을 조금 완화시킨 것을 볼수 있습니다.

Walking on latent space

앞에서 얘기했던 GAN의 문제점인 Memorization은 학습을 할 때 학습의 데이터를 기억해서 generation할 때 그 학습한 데이터를 그대로 만들어내는 것이 아니냐는 의문점이 있었습니다.

Z(noise)를 천천히 변화시키면서 Data Distribution에 따른 Generation하는 이미지들이 천천히 변하는 것(walking on latent space)을 관찰합니다. 하지만 만약 generated 된 이미지가 noise를 따라 천천히 변하는 것이 아니라거나(sharp transition), 제대로 generate가 되지 않는다면 GAN이 이미지를 순수히 generate하는 것이 아니라 memorization한것이라고 할수 있습니다.


위의 이미지를 보면 noise를 천천히 변화시키며, generated 된 이미지들이 walking on latent space가 되는 것은 볼수 있습니다.

Discriminator Filter Visualizing

Discriminator의 Filter를 학습시키기 전과 학습시킨 후를 비교하였습니다. (Bedroom Dataset)


  • Random Filter는 주어진 이미지에 대해 아무런 반응이 없습니다.
  • Trained Filter는 Bedroom의 구조나 모형 같은 것에 반응을 하여 activate합니다.

Vector Arithmetic


DCGAN 논문에서는 noise Vector간에 연산이 가능하다는 새로운 연구가 있었습니다.

Vector(Smiling Woman) - Vector(Neutral Woman) + Vector(Neutral Man) = Vector(Smiling Man). 이런식으로 {Smile Woman - Neutral Woman} = Smile, Smile + Neutral Man = Smiling Man 이런식으로 미소짓는 남자를 만들어내는 Vector 연산을 했습니다.

Data Distribution에서 각각(남자, 여자, 선글라스, 미소)에 해당하는 부분(노이즈)를 찾아 그를 연산하며 만들어 낸것 같습니다.

참고

DCGAN 한글 설명 : http://jaejunyoo.blogspot.com/2017/02/deep-convolutional-gan-dcgan-1.html

Arxiv 논문 : https://arxiv.org/abs/1511.06434

 


'딥러닝 > GAN' 카테고리의 다른 글

Domain Transfer Network: Unsupervised Cross-Domain Image Generation  (0) 2018.06.25