일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- grad-cam
- Score-CAM
- 백준
- Interpretability
- meta-learning
- 기계학습
- GAN
- coding test
- Cam
- cs231n
- Deep learning
- 설명가능한
- python
- 인공지능
- AI
- 설명가능한 인공지능
- 코딩테스트
- 머신러닝
- Unsupervised learning
- 메타러닝
- 시계열 분석
- keras
- Artificial Intelligence
- 코딩 테스트
- 딥러닝
- SmoothGrad
- xai
- Machine Learning
- Explainable AI
- Class activation map
- Today
- Total
iMTE
CycleGAN 본문
CycleGAN
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
Zhu, Jun-Yan, et al. "Unpaired image-to-image translation using cycle-consistent adversarial networks." arXiv preprint (2017).
위의 그림에서 보는 것과 같이, cycleGAN은 서로 다른 domain의 이미지를 translate하는 'Image-to-Image translation' GAN이다. GAN이라는 단어가 사용되었기 때문에 당연히, Discriminator와 Generator는 서로 'Adversarial learning'을 시행한다.
CycleGAN에서 주목해야할 점은 두가지로 보이는데 첫번째, loss에 cycle-consistency loss를 추가해서 X, Y와 같은 서로 다른 domain 사이의 image를 translation의 image quality를 상승시켰다는 점, 두번째, pix2pix와 달리 unpaired training set을 요구해서 domain X set과 domain Y set이 있다면, clycleGAN은 이 둘 사이의 domain translation을 학습하게 된다.
G : X->Y를 학습해서 Y의 분포와 구분할 수 없는 fake image를 생성해내는 것이 cycleGAN이다. 이전에 'image-to-image translation'은 1. Grayscale to color, 2. Image to semantic label, 3. Edge-map to photograph와 같은 모델들이 제시되었다.
논문에서는 기존의 image-to-image translation의 문제점을 지목하는데,
1. mode collapse 으로 인한 문제.
2. x->y를 mapping하는 법이 무한한 솔루션이 존재할 수 있음.
이 문제를 해결하기 위해서 cycleGAN은 영어가 프랑스어로, 이 프랑스어가 다시 영어로 재번역이 되어도 그 차이가 없어야하는 것처럼 image들도 domain을 바꾸고 다시 original domain으로 돌아가면 image에 차이가 없어야한다. 이 점을 반영하기 위해서 이 논문에서는 'cycle-consistency loss'를 사용했다. 즉, 다음을 만족해야한다.
위의 사진 처럼, input이 다른 domain으로 translation된 이후 다시 원래 이미지로 복원이 될 수 있어야한다. CycleGAN은 두 형태로 loss함수를 구성하는데, adversarial loss와 cycle-consistency loss이다.
1. Adversarial loss
다시 한번더 주목할 점은 cycleGAN은 두개의 generator와 두개의 discriminator를 포함한다. 즉 domain의 수만큼 generator와 discriminator의 수가 결정된다. Generator G는 x를 받아서 허구의 y를 만들고 Discriminator D_Y는 fake와 real을 분류하면서 학습을 진행한다. Generator F는 y를 받아서 허구의 x를 만들고 Discriminator D_x는 fake와 real을 분류하면서 학습을 진행한다.
2. Cycle-consistency loss
reconstruction error를 L1 norm으로 계산한 expectation을 cycle-consistency loss로 정했다. 만약에 reconstruction이 잘된다면 loss 함수는 줄어들 것이다.
최종 loss function은 다음과 같이 계산된다.
학습은 alternative하게 진행이 되는데, 살짝 adversarial loss를 수정을해서, negative log likelihood대신에 least-square loss(MSE)를 계산하도록 했다. (이 논문은 더 stable하고 high quality를 얻을 수 있었다고 한다.)
Keras로 code를 구현하고, Monet2Photo image로 cycleGAN의 결과를 확인해보았다.
학습이 진행될 수록 더 잘 변환하고 복원하는 것을 확인할 수 있다.
'Deep learning > GAN' 카테고리의 다른 글
Pix2Pix (0) | 2018.07.21 |
---|---|
DiscoGAN (0) | 2018.07.20 |
Super-resolution GAN (SRGAN) (0) | 2018.07.19 |
Conditional GAN (0) | 2018.06.15 |
교재 : Learning Geneartive Adverarial Networks (0) | 2018.02.10 |