서로 관련없는 이미지로 바꿔버리는 CycleGAN의 핵심 아이디어

1. motivation

 

Pix2Pix에서는 pairwise data로 x에 대한 ground truth인 y가 필요한 supervised learning

 

문제는 항상 이런 pairwise data를 얻는 것이 쉽지가 않다. 사실상 불가능한 경우도 많다

 

그래서 서로 무관한 X라는 style의 image dataset과 Y라는 style의 image dataset을 활용하는 방법은 없을까?

 

직접적인 대응관계가 없는 X,Y 사이에서 image translation이 가능하도록 만든 것이 CycleGAN이다.

 

CycleGAN으로 image translation 예시

 

pairwise data가 필요하다는 제약사항을 뛰어넘으면서 응용범위가 늘어났다

 

 

2. CycleGAN loss

 

X에서 Y를 생성하는 GAN loss와 Y에서 X를 생성하는 GAN loss와 Cycle consistency loss의 합

 

 

X에서 G가 Y를 생성하고 $D_{y}$가 생성한 것이 진짜 Y 스타일에 부합한지 판별하는 $L_{GAN}(X -> Y)$

 

반대방향으로 Y에서 F가 X를 생성하고 $D_{x}$가 생성한 것이 진짜 X 스타일에 부합한지 판별하는 $L_{GAN}(Y -> X)$

 

 

 

3. Mode collapse

 

양방향으로 GAN loss만 쓰면 끝일 것 같지만

 

앞에서도 언급한 것처럼 GAN loss는 어떠한 input이 들어와도 하나의 real만 계속 출력시킬 수 있는 문제점이 있다

 

 

condition으로 sketch를 주고 이에 맞는 real bag을 생성하라고 GAN에 시켰는데

 

그거와 무관하게 real bag 하나만 찾아내서 계속 주면 discriminator를 속일 수 있고 더 이상 generator는 학습하지 않는다

 

최적화에서 local minimum에 빠진 것이다.

 

이게 왜 문제냐면 X에서 Y로 변경은 그렇다치더라도 Y에서 X로의 변경이 잘 안될 수 있다는 것이 문제다.

 

 

위에서 1,2에서 Y로 translation하고 반대로 Y에서 X로 다시 translation할려는데

 

1,2에서 하나의 검정색 가방으로 갔으니까 반대로 돌리면 둘 다 돌아갈 수 있다는 것

 

즉 빨간색으로 돌아가야하는데 파란색으로도 돌아갈 수 있다는 것이 문제

 

 

4. cycle consistency loss

 

이 문제를 해결하기 위해 양방향 loss의 합에 cycle consistency loss를 더했다.

 

스타일만 단순히 바꾸는게 아니라 그 안의 본질도 유지하면서 바꿔야한다는 것이다.

 

X에서 Y를 생성한 뒤 Y에서 다시 X를 생성할 때 얻은 x에 대하여 X와 x가 최대한 비슷해야한다는 것

 

반대로 Y에서 X를 생성한 뒤 X에서 Y를 생성할 때 얻은 y에 대하여 Y와 y가 최대한 비슷해야한다는 것이 cycle consistency loss의 핵심 아이디어

 

cycle consistency loss의 개념을 그림으로 나타냄

 

CycleGAN의 loss 계산과정에 어떠한 supervision도 들어가지 않는다.

 

X와 Y가 정답의 관계도 아닌데 cycle consistency loss를 보면

 

자기 스스로 목표(X와 x가 비슷해야한다)를 정해서 학습하는 self-supervised learning

 

 

 

TAGS.

Comments