GAN (Generative Adversarial Network)
: Generator & Discriminator 두 개의 모델을 적대적으로 경쟁시키며 발전시킨다.
Generator -> 그럴듯한 가짜 데이터를 만들어 Discriminator를 속인다.
Discriminator -> 생성자가 만든 가짜 데이터와 진짜 데이터를 구분하는 것
--> 최종 목적) 이 둘을 함께 학습시키면서 진짜와 구분할 수 없는 가짜를 만들어내는 생성자를 얻는다.
generator
랜덤 벡터 z 를 입력으로 받아 가짜 이미지를 출력
z는 단순하게 균등 분포/정규분포에서 무작위로 추출된 값
-> 단순한 분포를 사람 얼굴 이미지와 같은 복잡한 분포로 매핑하는 함수
'z'벡터가 존재하는 공간 = Latent Space
-> 대상의 정보를 충분히 담을 수 있을 만큼 커야 한다.
-> 'z'벡터의 값을 이미지 속성에 매핑
Discriminator
-> 진짜 이미지 입력시 1에 가까운 확률값
-> 가짜 데이터 입력시 0에가까운 확률값 출력
-> 구분자의 Loss Function은 두 가지의 합으로 이루어짐
--> 진짜이미지 입력: 출력값과 1과의 차이/ 가짜 이미지 입력: 출력값과 0과의 차이
==> generator는 가짜이미지를 Discriminator에 넣었을 때 출력값이 1에 가깝게 나오도록 해야함
++단점
- Discriminator가 최적해로 수렴하지 못한다면 자동으로 Generator 도 최적의 해로 수렴하지 못한다.
- 수렴하지 못하고 계속 진동하는 경우
- mode collapsing: 학습 데이터의 분포가 multi-modal한 경우 이런 현상이 두드러짐
-> 여러 개의 mode중 하나로만 치우쳐서 변환시킬키는 경우 -> 같은 이미지만 계속 생성
(mode = 최빈값, 밀도가 제일 높은 부분, multi-modal = mode가 여러 개 존재함)
'공부일지 > Computer Vision & Image Processing' 카테고리의 다른 글
Tensorflow in Practice 1, Computer Vision (0) | 2020.06.21 |
---|---|
OpenCV, visual studio에서 시작 (0) | 2020.05.28 |
SIFT 절차 (0) | 2020.01.28 |
scale (0) | 2020.01.28 |
OpenCV 정리하기(1)_Finger Count (0) | 2019.10.16 |