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

+ Recent posts