GAN이 나온 2014년 이후 이미지 생성 모델 분야는
한 동안 GAN의 변형 모델들이 주름잡았다.
GAN의 아쉬운 점이라 한다면
다양한 이미지를 생성함에 있어서는 성공을 거두었지만
의도된 이미지를 생성하지는 못하였다는 점이라 할 수 있다.
입력 데이터 자체에 conditional한 부분이 존재하지 않았기 때문이다.
( 특정 경향성을 지니는 이미지를 모델이 내뱉게 시키기 위해서는, 입력에 그 경향성에 대한 정보를 추가적으로 전달해 주면 된다. )
의도된 이미지 생성 영역에 발을 내민 시도는
2014년 11월 Mehdi Mirza 등이 발표한
Conditional Generative Adversarial Nets 에서 확인할 수 있다.
cGAN
cGAN이라고 불리는 이 모델의 아이디어는 매우 간단하다.
모델을 conditional(이전 사건에 의존)하게 만들기 위해
GAN의 input에 label 정보를 함께 담아 MLP에 넘기는 것이다.
도식화 하면 아래와 같다.
Generator의 입력인 Latent Vector z에
우리가 원하는 출력에 해당하는 label 정보를 이어붙인다음
( label 이미지 자체, class label, label의 특성이 담긴 벡터(modality) 라던지, 아무튼 label로 부터 얻어낸 정보면 Okay다. )
Generator에 집어넣고,
실제 이미지 x에 대해서도
앞서 사용한 label 정보를 이어붙인다음
Discriminator에 집어넣는다.
논문에서는 아래와 같이 도식화 해 놓았다.
그럼 목적함수도 그에 따라
기존 GAN에 conditional한 부분 y( label로부터 얻어낸 정보 )만 추가된다.
| 성능 확인
각 행은 하나의 라벨에 대해 conditional하게 만든 모델의 output이고
각 열은 다른 생성 샘플들이다.
위에서 부터 0,1,2, ... 9까지 라벨을 input과 함께 넣어가면서
출력을 확인해보니
입력으로 함께 넣은 label에 해당하는 output들이 나옴으로 인해
의도된 이미지 생성이 가능함을 볼 수 있다.
추가적으로 왼쪽 2개의 열은
이미지와 그 이미지에 대해 사람이 직접 넣은 tag이고
맨 오른쪽은 해당 이미지를 출력 했을 때 모델이 생성한 tag인데
사람이 손수 넣은 tag와 비교했을 때, 꽤나 비슷한 성격을 지니는 tag들을 선택했음을 확인 할 수 있다.
'Computer Vision' 카테고리의 다른 글
[GAN 시리즈] StackGAN에 대한 모든 것 (논문 리뷰) (1) | 2023.02.05 |
---|---|
[GAN 시리즈] GAN(Generative Adversarial Networks)에 대한 모든 것 (0) | 2023.01.20 |