정보 : 범주형(Categorical) / 연속형
Input Image : 64x64x3(W x H x Channel)
범주형 - 남자/여자
연속형 - 25세, 36세
Semantic segmentation, Object detection, Facial Detection, Facial Landmark detection(localization), Pose estimation, etc
Latent Code(128-dimensional vector) -> Image(64x64x3)
Latent Code ~ N(0,1):Gaussian Distribution sampling
갈색말 -> 얼룩말
여름 -> 겨울
<생성모델의 분류>
Auto Encoder란?
auto(자기 자신) Nx1 벡터로 표현하게 되면 고차원 input이 되는데 이를 압축한 뒤(encode) 다시 원래의 크기로 복원(decode)하는 과정
압축하는 과정에서 여러 input들이 공통으로 갖는 특징을 위주로 추출하여 decoding 과정에서 사용
VAE(Variational Auto-Encoder)
학습 프로세스가 간단하면서 안정적이다
순수 생성을 위한 목적으로 사용될 수 있다
가끔은 흐릿한 이미지를 생성한다
얻게된 Loss값을 back propagation하여 train을 하고자 할 때, sampling 단계때문에 gradient update가 어려워진다.
이를 해결하고자 Reparametrization trick을 사용
Affine Transformation y = Ax + B
복잡하고 고차원적인 학습분포로부터 데이터를 샘플링하고자 하나, 직접적으로는 불가능 -> 간단한 분포 이용, NN 사용
각 sample z 가 어떤 학습 이미지로 매핑이 되는지 알 수 없음(학습 이미지를 복원하는 것으로는 학습이 불가능) -> Discriminator Network 사용하여 생성 이미지가 데이터 분포 내에 속하는지 판단
"Mini-Max의 최적화"
real, fake data를 입력받아 각각 1,0의 binary classification을 하도록 학습(with BCELoss), 최소화 하고자하는 것은 negative log likelihood
1-D(G(z)): negative class라고 맞출 likelihood
-> 왜냐하면 X~pdata(x) : real data not from G(z)
min(D) : gradient descent를 통해서 D를 업데이트
max(G) : gradient ascent를 통해서 G를 업데이트
min,max를 통해서 saddle point로 수렴하게끔 움직임
한가지 문제가 발생하는데, Generator과정이 오래 걸리기도 하고 초반에는 안 좋은 퀄리티의 이미지가 생성되기 때문에 real data와 discriminator의 과정이 비교적 쉬워지게 된다. 초기에 발견되는 gradient를 바탕으로 back propagation
Discriminator 학습에 binary cross entropy loss대신 least squares loss를 사용.
Sigmoid layer를 삭제하고 직접적으로 loss function의 input으로 간다.
-∞ < D(x) < ∞
WGAN with gradient penalty(regularization)
[본 포스팅은 주재걸 교수님의 이미지/영상 생성 클래스 강의를 수강하며 요약한 내용입니다.]