2023. 11. 28. 11:00ㆍML&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 사용


* 에포크를 돌릴 수 록 흐릿했던 이미지에서 선명한 데이터를 생성하는 것을 볼 수 있음
2) DCGAN 의 특징
- 학습 데이터셋을 단순 암기하거나 복사 하지 않음.
-> 조금씩 변형하여 새로운 데이터를 생성한다.
'ML&DL > CV' 카테고리의 다른 글
[GAN] Face 생성 모델 만들기 (0) | 2023.11.28 |
---|---|
[GAN] CIFAR-10 데이터셋을 이용한 이미지 생성 모델 만들기 (0) | 2023.11.28 |
[Object Detection] COCO 데이터셋을 이용한 food 객체 인식 (0) | 2023.11.27 |
[Object Detection] COCO 데이터셋을 이용한 교통수단 객체 인식 (0) | 2023.11.24 |
[Computer Vision] COCO 데이터셋 (2) | 2023.11.24 |