[딥러닝] GAN

SSOYEONG·2022년 6월 11일
0

Deep Learning

목록 보기
13/14
post-thumbnail

Genrative Adversarial Networks

Generative

  • CNN과 다르게 가상의 이미지를 생성
  • CNN은 input에 비해 output은 dimension이 작다.
  • GAN은 input dimention은 작고, 점점 커져서 output은 크다.
  • 특정 condition. 작은 사이즈의 벡터. Random noise로 새로운 것을 창조
  • Input data를 보고 최대한 비슷하지만 새로운 것을 만들어 냄

Adversarial

  • 두 네트워크가 서로 경쟁하며 성능을 높임
  • Generator, Discriminator 두 가지를 학습시킨다.
  • 둘 다 처음엔 성능이 안 좋은데 backpropagation 두 번하여 점차 향상됨
  • 최종적으로, Generaetor는 real 같은 fake를 만듦
  • Discriminator는 구분을 잘 못함.
  • 이때까지 학습시킨다.

Generator : Generation of new data
Discriminator : Discrimination of real and fake data

GAN's architecture

  • z is some random noise. 근데 사실 random이 아니라 학습시킬 수록 의미를 갖는다.
  • Discriminator는 기존 CNN 아키텍처처럼 classification
  • Real은 최대한 real, fake는 최대한 fake로 backpropagation
    -> Discriminator 업데이트
  • Discriminator 고정 후, fake 데이터를 최대한 real로 출력할 수 있도록 loss를 반전한다.
    -> Generator 업데이트
  • 위 과정을 번갈아가며 진행

How to train two networks

  • Discriminator가 x에 대해 y로 output 출력 (x > y)
    1. real > real
    discriminator가 잘 동작. generator를 더 학습시켜야 한다.
    2. real > fake
    generator가 잘 동작. discriminator를 더 학습시켜야 한다.
    3. fake > real
    generaotr가 잘 동작. discriminator를 더 학습시켜야 한다.
    4. fake > fake
    discriminator가 잘 동작. generator를 더 학습시켜야 한다.

GAN training

Step 1

  • G를 고정하고 D만 backprop해서 업데이트

Step 2

  • D를 고정하고 G 업데이트
  • 둘 다 max 형태로 식을 통일하기 위해.

Conditional GAN

  • 조건을 줘서 내가 원하는형태로.
  • Give meaning to the noise vector
  • GAN이 그 input에 대응해서 학습되도록
  • 더하고 빼고, condition을 연산할 수 있다.

Pix2Pix

  • pixel를 새로운 pixel로 변환. Domain 변환
  • Training set은 pair여야 한다.

Cycle GAN

  • Paired image가 필요 없다.
  • Network, Loss가 각각 존재

Implementation

Requirements

Generator

  • Input dimension: random vector length
  • Output dimentsion: image size
  • Model: FC

Discriminator

  • Input dimension: image size
  • Output dimension: 1
  • Model: FC




Source code


profile
Übermensch

0개의 댓글