[Computer Vision] GAN (Generative adversarial network)

2023. 11. 28. 11:00ML&DL/CV

[ GAN (Generative adversarial network) ]

1. GAN?

 

* GAN은 이미지 생성에 주로 사용 하는 딥러닝 모델이다.

- CNN은 데이터셋이 어떤 클래스인지 분류하는 문제에서 주로 사용한다면, GAN은 데이터셋과 유사한 이미지를 생성하는 모델

 

[위조 지폐 vs 진짜 지폐]

- GAN의 이미지 생성 원리를 '위조 지폐' vs '진짜 지폐' 로 비유하여 설명할 수 있음

 

 

1) 생성자(위조지폐범)진짜 지폐와 헷갈릴만한 위조지폐를 만든다.

2) 판별자(경찰)은 생성자가 만든 지폐가 진짜인지 가짜인지 구분하려고 한다.

3) 생성자와 판별자는 적대적 관계 => 생성자는 가짜를 계속 생성해내고, 판별자는 진위여부를 계속하여 구분함

 

2. GAN의 특징

- 생성가능한 적대적 신경망

- 생성자(Generator)와 판별자(Discriminator)로 구성

 

1) 생성자 

- 입력 : 노이즈

- 출력 : 가짜 데이터

 

2) 판별자

- 입력 : 가짜 데이터 or 진짜 데이터

- 출력 : 입력이 가짜인지 진짜인지 진위 여부

 

 

3. GAN의 과정

- 검정색  선 : 실제 데이터의 분포

- 초록색 선 : 생성자가 생성한 데이터의 분포

- 파란색 : 판별자가 판단하는 값

 

* 생성자는 초록색 선이 검정색 선과 최대한 비슷하게 만드는 것이 목표

[GAN은 경쟁하며 학습한다]

- 생성자는 판별자를 속이기 위한 진짜와 유사한 가짜 데이터를 만드려고 한다.

- 반대로 판별자는 생성자가 만든 데이터가 진짜인지 가짜인지 구별하려고 노력한다.

- 계속해서 경쟁 과정 속에서 학습하면서 생성자는 점점 진짜와 유사한 데이터를 생성하게 되고, 판별자는 진위 여부를 더욱 정확하게 구별할 수 있을 것이다.

 

 

4. GAN 기반 모델

 

[DCGAN(Deep Convolution Generative adversarial network)]

- GAN에서 파생된 모델.

- GAN의 생성자와 판별자에서 합성곱 신경망을 사용했다는 특징이 있음

 

1) DCGAN 의 구조 

- 각각의 레이어에서 pooling을 사용하지 않음

- pooling 대신에 convolution 연산에서 스트라이드 옵션을 적용

- Generator 와 Discriminator에서 Batch Normalization 사용

- fully-connected 레이어가 없음

 

- Generator에서 ReLu 활성화 함수 사용, Discriminator에 넘겨주기 전은 output층에서는 tanh 사용 

- Discriminator에서는 Leaky Lelu 활성화 함수 사용, 마지막 출력층은 가짜와 진짜 (0,1) 을 판별하기 위해 sigmoid 사용

 

 

DCGAN - 1 epoch
DCGAN - 5 epoch

* 에포크를 돌릴 수 록 흐릿했던 이미지에서 선명한 데이터를 생성하는 것을 볼 수 있음 

 

 

2) DCGAN 의 특징

- 학습 데이터셋을 단순 암기하거나 복사 하지 않음.

-> 조금씩 변형하여 새로운 데이터를 생성한다.