1. Unconditional GAN
앞서 설명한 일반적인 GAN의 경우 Unconditional한 생성 모델이며 데이터에 대한 제어를 위해 추가 정보를 사용하지 않는 모델이다. (The general GAN explained earlier is an unconditional generative model that does not use additional information to control the data generation.)
생성되는 데이터의 특정한 종류나 속성을 조절하기 위한 추가적인 정보 없이 데이터를 생성하게 된다.
2. Conditional GAN
Conditional GAN은 생성될 데이터의 특성을 지정하는 추가 정보를 사용하여 데이터 생성을 조절한다.
입력에 조건을 추가하여 원하는 특성이 반영된 데이터를 생성하게 되는 것이다.
데이터를 생성하는 조건 => conditioning
Unimodal일 경우 클래스의 라벨, Multimodal일 경우 태그나 이미지 변환(pix2pix, cycle gan)이 될 수 있다.
Generator input : noise pz(z) + y(one-hot encoding vector or Embedding)
Discriminator input : x+y
-> CGAN은 특정 클래스 레이블에 해당하는 MNIST 숫자를 생성하도록 학습하게 되는 것이다.
Objective function
위 수식에서 첫번째 수식처럼 기존의 GAN objective function과 비교했을 때 알 수 있듯이 조건으로 "y"가 붙게 됨을 알 수 있다.
3. MNIST 구현 - Embedding
코드 구현은 label emdbedding으로 10개의 클래스에 대해 정의, 모델 입력시 label_emb를 x와 같이 처리
MNIST 이미지 생성 결과 숫자 이미지를 잘 생성해 냄.
3. MNIST 구현 - One-hot-encoding
4. 추가 설명
gen_label
: Generator가 생성하는 이미지에 대한 레이블(무작위로 생성)
-> Discriminator와 Generator 모두 사용
학습 초반에는 Generator가 잘 학습되지 않았기 때문에 Generator가 생성하는 이미지와 그에 따른 레이블이 맞지 않음
학습이 진행됨에 따라 Generator는 Discriminator를 속이기 위해 실제 이미지와 유사한 이미지를 생성하도록 조정
-> 이 과정에서 Generator는 주어진 클래스 레이블에 해당하는 이미지를 생성하는 데 능숙해짐
'Deep Learning' 카테고리의 다른 글
VAE(Variational Auto-Encoder) (0) | 2024.11.03 |
---|---|
Cycle GAN (0) | 2024.10.11 |
GAN (Generative Adversarial Network) (1) | 2024.03.24 |
U-Net : Image segmentation | U-Net 구조 이해하기 (0) | 2024.02.04 |
[Deep learning] Image Segmentation (0) | 2024.02.04 |