Paper: https://arxiv.org/abs/1703.10593
image-to-image Translation은 보통 pair-image를 이용해 학습합니다.
다만, 같은 이미지에 대해 2개의 특성을 갖는 이미지 쌍은 구하기 쉽지 않습니다. 가령, 사계절 내내 고정되어 있는 CCTV가 아닌 이상 같은 구도의 여름-겨울의 pair image는 많이 구할 수가 없겠죠.
Cycle-GAN은 이런 pair-image를 사용하지 않고 단지 X 도메인 데이터세트와 Y 도메인 데이터세트만을 이용해 두 도메인 간에 이미지를 변환하는 법을 학습합니다(아래 그림).
이렇듯, 다이렉트한 방식으로 translation task를 수행하기 위해 저자들은 아래와 같은 Loss를 사용합니다.
즉, 도메인 를 도메인 로 변환하는 함수 외에도 도메인 를 도메인 로 변환하는 역방향 함수 도 학습하며, 두 과정을 거쳤을 때 원본 이미지가 다시 복원될 수 있도록 cycle consistency loss를 사사용해 학습합니다.
그렇다면, CycleGAN은 단지 특징이 다른 두 도메인 데이터만 가지고 온전하게 변환하는 법을 어떻게 배우는 걸까요?
우선, 저자들은 학습을 위해서 도메인 간 근본적인 관계가 존재한다 고 가정합니다.
즉, input 와 output 가 의미 있는 방식으로 짝지어져야 합니다.
이를 위해 우선 가장 간단한 방법을 생각해봅시다.
위처럼 학습하면 적어도 input 에 해당하는 output 가 도메인 에 속하는 이미지인 것처럼 학습할 수 있습니다.
다만, 와 가 의미 있는 방식으로 짝지어지지 않을 수도 있습니다. 입장에서는 단지 가 에 속하게끔 이미지를 변환하면 되기 때문에 mode collapse가 일어날 수 있습니다.
이런 문제를 해결하기 위해 저자들은 주기적 일관성(cycle consistent)을 도입했습니다.
예를 들어, 여름 이미지 를 겨울 이미지 로 변환했다면, 겨울 이미지 를 다시 역변환할 경우 여름 이미지 가 되게끔 학습합니다.
즉, 아래와 같이 세 부분으로 나누어 학습을 바라볼 수 있습니다.
mapping function 2개(), Discriminator 2개())
Possible mapping function의 space를 줄이기 위해서 cycle-consistency loss를 사용했다고 말 할 수도 있습니다.
더욱 자세히 살펴봅시다.
Adversarial Loss
즉, 두 개를 합하면 아래와 같습니다.
정방향, 역방향 모두 일반적인 GAN Loss를 적용합니다
Consitency loss
각각의 Translator 에 대해 원본을 복원하는 능력을 향상시키는 cycle consistency loss는 아래와 같이 쓸 수 있습니다.
output을 다시 input으로 대응될 수 있게끔 학습하면서 다양성을 최대한 제공해주게 됩니다.
학습이 잘 된다면 아래와 같이 가 를 원본 이미지 에 최대한 가깝게끔 변환하게 됩니다.
Full Objective Function
위의 Adversarial Loss와 Cycle consistency loss를 합치면 아래와 같습니다.
이 때 consistency loss앞에 붙는 가중치 는 GAN Losses와의 상대적 중요도에 따라 결정됩니다.
CycleGAN은 연구 Perceptual losses
for real-time style transfer and super-resolution의 아키텍처를 기반으로 합니다.
저자들은 모델 학습을 안정화시키기 위해 아래와 같은 테크닉을 추가로 적용합니다.
모델 진동을 줄이기 위해 최근 생성 이미지를 한 꺼번에 분류하는 건 직관적으로 와닿을 것입니다.
분류기에 왜 Least-sqaure loss를 사용할까요?
한 마디로 Generator의 업데이트를 위해서입니다.
이에 대한 내용은 LSGAN을 참고하면 됩니다.
여기서는 간단히만 살펴보겠습니다.
(원래 Discriminator는 이보다 더 고차원이지만) 간략히 2차원을 표방하면 결정경계를 위와 같이 나타낼 수 있습니다.
이 때, 아래에 보면 진짜 데이터 샘플과 거리가 먼 가짜 데이터 샘플이 존재합니다.
즉, Generator의 입장에서는 이미 Discriminator를 잘 속이고 있기 때문에 학습할 필요가 없습니다.
NLL Loss를 사용한다면요.
즉, Vanishing Gradient가 일어나기 때문에, Discriminator를 잘 속인다는 이유만으로, 안 좋은 샘플을 생성하는 것에 대해 패널티를 줄 수가 없게 됩니다.
이 때, LS GAN을 사용한다면 실제 데이터 분포와 가짜 데이터 샘플이 거리가 먼 것에 대해서도 패널티를 주게 됩니다.
Generator는 Discriminator를 속이는 것을 넘어서, 실제 데이터 분포와 유사한 분포를 가지게끔 해야합니다.
LSGAN paper 중
Specifically, minimizing the objective function of regular GAN
suffers from vanishing gradients, which makes it hard to update the generator.
LSGANs can relieve this problem because LSGANs penalize samples based on
their distances to the decision boundary, which generates more gradients to update the generator.
Evaluation Metrics
모델 성능의 평가를 위해 저자들은 아래와 같이 세 개의 지표를 사용합니다.
Scores
Image quality
Application
여기서 뒤에 있는 값 는, cycleGAN을 하는 과정에서 해가 뜨는 것을 해가 저무는 것을 구분하기 위한 loss입니다.
즉 인풋과 아웃풋의 색구성을 보존하기 위해 추가한 loss입니다.
당연히 한계도 있습니다.
Ref
https://velog.io/@yoonj98/CycleGAN
https://velog.io/@tobigs16gm/Image-Translation-pix2pix-CycleGAN
http://jaejunyoo.blogspot.com/2017/03/lsgan-1.html
LSGAN PAPER