다시 이음

딥러닝(13) - GAN(DCGAN,CycleGAN) 본문

AI 일별 공부 정리

딥러닝(13) - GAN(DCGAN,CycleGAN)

Taeho(Damon) 2021. 11. 5. 22:08

안녕하세요.

 

오늘은 딥러닝 섹션의 마지막 GAN(Generative Adversarial Networks) 생성적 대립 신경망에 대해서 알아보도록 하겠습니다.

 

사실 코드에 대해서는 너무나도 어려운 부분이기 때문에 이론에 대한 부분만 다루도록 하겠습니다.

 

 

생성적 대립 신경망(Generative Adversarial Networks)

 

생성적 대립 신경망은 말 그대로 새로운 것을 생성하는 모델이면서 한 모델안에 대립구도를 가지는 모델입니다.

 

GAN의 목표는 있을 법한 이미지를 생성하는 것입니다.

 

 

1. GAN의 기본 구조

 

GAN은 생성자(Generator)감별자(Discriminator)로 이루어져 있습니다.

 

- Generator

  • Generator는 말 그대로 이미지를 생성하는 하는 모델인데, 그 무엇보다 진짜같이 만드는 게 목적입니다.
  • input vector는 랜덤에 노이즈가 많은 입력값입니다.
  • Generator을 통해 만들어지는 이미지는 Discriminator에게 감별을 받음(이진분류)으로써 학습을 하게 됩니다.
  • Conv2DTranspose (업샘플링) 층을 이용합니다.
  • 활성함수로 tf.keras.layers.LeakyReLU을 사용합니다.
  • 생성자의 손실함수는 감별자를 얼마나 잘 속였는지에 대해 수치화

- Discriminator

  • Discriminator는 Generator가 만든 이미지를 실제 이미지들과 비교하여 만들어진 이미지가 진짜인지 가짜인지를 구분합니다.
  • 그 과정에서 Discriminator 또한 학습을 진행하게 되어 생성자와 감별자 둘다 학습이 이루어집니다.
  • Discriminator는 합성곱 신경망(Convolutional Neural Network, CNN) 기반의 이미지 분류기입니다.
  • 감별자의 손실함수는 가짜 이미지에서 얼마나 진짜 이미지를 잘 판별하는지 수치화

 

2. DCGAN

 

Convolution Neural Network(CNN)을 기반으로한 생성모델인 Deep Convolutional GAN (DCGAN)입니다.

 

구조는 GAN과 다르지 않습니다.

 

3. Cycle GAN

 

변경이 되야하는 이미지, 변경이 이루어진 이미지를 입력값으로 가집니다.

 

즉, (말,얼룩말) , (가을,겨울), (사과,오렌지)과 같은 예시를 들 수 있습니다.

 

Cycle GAN의 목적은 두 입력데이터의 특성을 바꾼 이미지를 만들기 입니다.

 

예시로 말과 얼룩말 데이터를 통해 말의 이미지가 얼룩말의 특성을 가진 이미지로 변경되는 것입니다.

 

이렇게 입력되는 2개의 이미지는 같은 구도를 가지고 있지 않아도 되며, 결과값이 구도,생김새를 변환하지는 않습니다.

 

 

- 구조

  • input_1을 input_2로 변환해주는 Generator 1개 (결과값 output_1)
  • output_1값이 진짜인지 가짜인지 구분하는 Discriminator 1개
  • input_2를 input_1로 변환해주는 Generator 1개 (결과값 output_2)
  • output_2값이 진짜인지 가짜인지 구분하는 Discriminator 1개