728x90
반응형
데이터셋
- Google의 Quick, Draw! 데이터셋 사용
- 28 x 28픽셀 크기의 흑백 낙서 이미지로 주제별로 레이블되어 있다.
- 한 온라인 게임으로부터 수집
GAN 정의
gan = GAN(input_dim = (28,28,1)
, discriminator_conv_filters = [64,64,128,128]
, discriminator_conv_kernel_size = [5,5,5,5]
, discriminator_conv_strides = [2,2,2,1]
, discriminator_batch_norm_momentum = None
, discriminator_activation = 'relu'
, discriminator_dropout_rate = 0.4
, discriminator_learning_rate = 0.0008
, generator_initial_dense_layer_size = (7, 7, 64)
, generator_upsample = [2,2, 1, 1]
, generator_conv_filters = [128,64, 64,1]
, generator_conv_kernel_size = [5,5,5,5]
, generator_conv_strides = [1,1, 1, 1]
, generator_batch_norm_momentum = 0.9
, generator_activation = 'relu'
, generator_dropout_rate = None
, generator_learning_rate = 0.0004
, optimiser = 'rmsprop'
, z_dim = 100
)
판별자
- 판별자의 목표는 이미지가 진짜인지 가짜인지 예측하는 것
- 지도 학습 분야의 이미지 분류 문제
- 원본 논문에서는 합성곱 층 대신 완전 연결 층을 사용했지만, 합성곱 층이 판별자의 예측 성능을 크게 높여 준다고 한다.
GAN의 판별자 구조
생성자
- GAN의 생성자는 VAE의 디코더와 정확히 동일한 목적을 수행한다.
GAN의 생성자 구조
업샘플링(upsampling)
- GAN에서는 케라스의 UpSampling2D 층을 사용해 텐서의 너비와 높이를 두 배로 늘린다.
- 단순히 입력의 각 행과 열을 반복해 크기를 두 배로 만든다.
- 다음 스트라이드 1인 보통의 합성곱 층을 사용해 합성곱 연산을 수행한다.
GAN 훈련
- GAN의 핵심은 훈련 과정을 이해하는 것
- 훈련 세트에서 진짜 샘플을 랜덤하게 선택하고 생성자의 출력을 합쳐서 훈련 세트를 만들어 판별자를 훈련한다.
- 진짜 이미지의 타깃은 1이고 생성된 이미지의 타깃은 0이다.
- 입력은 랜덤하게 생성한 100차원 잠재 공간 벡터이고 출력은 1인 훈련 배치를 만들어 전체 모델을 훈련한다.
- 출력을 1로 지정한 이유는 판별자가 진짜라고 생각할 수 있는 이미지를 생성자가 만드는 것이 목표이기 때문
- 손실 함수는 단순하게 판별자의 출력과 타깃 1 사이의 이진 크로스엔트로피 손실
http://www.yes24.com/Product/Goods/81538614?OzSrank=1
728x90
반응형
최근댓글