GAN Genrative Adversarial Networks
궁극적 목표: 세상에 있을 법한 이미지 만들기
Generative '생성적인, 생산하는'
Adversarial '적대적인' : 네트워크를 서로 대립시켜 서로 경쟁하면서 발전
DCGAN 구조
generator
생성자, 진짜 같은 가짜 이미지 만들기
discriminator
감별자, 이미지가 진짜인지 가짜인지 찾아내기
학습할 때만 사용하고 사용할 때는 사용 안 함.
감별자가 성능이 너무 좋아버리면 생성자가 힘들어져서 생성자가 학습을 하고 나중에 감별자를 넣는 방식도 있다.
CycleGAN
-
목적
- 이미지변환
- 페어가 없는 데이터를 사용할 수 있다.
- 말 따로 얼룩말 따로 가져와도 사용할 수 있따,
- 특성을 바꿔준다.
-
과정
- 얼룩말 이미지 -> 말로 바꿔줌 -> 다시 얼룩말로 바꿔서 원본과 비교, 정말 특성만 바꿔줬는지 확인, 중간에 생성됐던 말의 이미지는 디스크리미네이터를 써서 진짜 말인지 가짜말인지 확인. 학습이 순환해서 이뤄지는 거라 싸이클겐이라고 불러줌
-
서로 경쟁 > 동시에 성장 가능
Cyclegan
- 목적
- 특성변환
- 얼룩말 -> 말로 바꾼 이미지 생성
- 감별자: 진짜인지 아닌지 판별
- 생성자: 다시 얼룩말로 바꿈 -> 원본과 비교
QnA
- 이미지 정규화를 0~1로 하는 것과 -1~1는 무슨 차이가 있나요?
- 데이터 전처리와 관련된 것, 스케일러! 검색해보셈
- 제너레이터에서 만든 가짜 이미지를 분류하느데 제너레이터에서는 이 가짜 이미지를 어떻게 만들어내나요?
- dcgen기준으로 랜덤하게 노이즈를 만들어서 부여
- latent vector -> 랜덤한 노이즈