Home [ML 머신러닝] GAN - 정복하기 (5) GAN의 종류 - 3
Post
Cancel

[ML 머신러닝] GAN - 정복하기 (5) GAN의 종류 - 3

Preview

이전 시간에 이어 GAN의 종류에 대해서 조금 더 알아보겠다. 이전 GAN들과는 조금 다른 확장된 개념이 등장하니 집중하자.


CycleGAN

두 개의 Unpaired 한 이미지가 있을 때, 해당 이미지를 가지고 새로운 이미지를 만드는 방식이다. Unpaired 이미지와 Paired 한 이미지가 무엇인가? 다음 그림을 보면 한방에 이해가 갈 것이다.

https://mblogthumb-phinf.pstatic.net/MjAxOTA2MTBfODkg/MDAxNTYwMTQ4NjgzNTk1.rePWlu9KfTKm5Sf1zy-aSBXvLaaXJhNBeHV-vPlvzhYg.Lj5uqbcC7IhR4cyjIsJbS92qiRYc23KlxXEZAlX0G6Ug.PNG.euleekwon/image.png?type=w800

Paired 이미지의 경우 서로 어느 정도 쌍이 되는, 이미지를 말한다. 위 그림에서 Paired 이미지는 얼룩말의 윤곽과 얼룩말의 사진을 나타내고 있다.

하지만 실제 현실 세계에서 이와 같이 똑같은 모습의 데이터를 찾는 것은 매우 어렵고 비용 또한 많이 든다. 따라서 완전히 다른 Unpaired 데이터임에도 효과적으로 학습을 진행하는 방법이 바로 CycleGAN이다.

https://mblogthumb-phinf.pstatic.net/MjAxOTA2MTBfMjA2/MDAxNTYwMTQ4MDEwODI1.Gn1TX8dO42lhSv8D7s9-pzaluhmZ6CxB6if3oWpFqHUg.LAe9g53gS4P_1_watR0imAywCgmLrp7vBR1zMeCehIEg.PNG.euleekwon/image.png?type=w800

그렇다면 이제 Cycle GAN의 대략적 진행과정을 살펴보자.

사이클간

  1. 먼저 기존 GAN와의 차이점은 CycleGAN에는 Noise가 섞여 들어가지 않는다.
  2. 또한, D는 G로부터나온 이미지를 판별한다.
  3. D에는 domain B에 해당하는 (예를들어 G가 일반 말을 생성해낸다 하면 일반 말 사진으로 학습을시킨다.)

하지만 이때, 굉장히 큰 문제가 하나 발생한다.

G의 입장에서 생각해보자. G의 목적은 D를 속이는 것 이다 그렇다면 G는 D를 더 잘 속이기 위하여 이미지를 변형시킬텐데, 그 과정속에서 기존의 얼룩말의 형태가 바뀌고 (예를들어 가만히 서있던 말이 뛰는 말이 되는 경우 : 이 과정이 만약 D를 속이는데 더 유리하다면 G는 그렇게 진화할것이다.) 뒤틀릴 수 있다.

이러한 상황은 우리가 원하는 방향이 아니다. 우리는 얼룩말을 일반말로 바꾸고 싶은 상황이다. 그 상황속에서 얼룩말의 자세가 변하거나 하는 상황은 정말 의미가 없을것이다. (예를들어 당신이 기본말의 데이터셋이 필요하다고 하자, 이때 해본자는 알겠지만 데이터를 모으기는 어려운일이다. 때문에, 얼룩말 사진을 이용하여서 기본말의 사진으로 바꾸고 그 데이터또한 수집하자고 하자. 이때 당연히 구도가 변하면 곤란하겠지?)

때문에 CycleGAN이 필요한 것이다.이러한 변화를 해결하기 위하여 다음 이미지가 등장한다.

사이클간2

Generator 가 제일 처음 얼룩말 이미지를 가지고 말 모양의 Fake 이미지를 생성하는 데 이를 기반으로 다시 얼룩말 이미지를 생성해 보게 한다.

이렇게 함으로써 Generator 은 마구잡이로 모양을 변경할 경우 다시 얼룩말 이미지로 돌아오기 힘들다는 것을 학습하며, 모양은 유지하며 내부에 색과 같은 값들을 변화 시킨다.


Reference

  1. https://www.youtube.com/watch?v=odpjk7_tGY0 - youtube, 1시간만에 GAN정복하기
  2. https://m.blog.naver.com/euleekwon/221559102854 - EuleeKwon’s Blog
This post is licensed under CC BY 4.0 by the author.