https://arxiv.org/abs/1804.04732
European Conference on Computer Vision (ECCV), 2018
1. Introduction
Computer Vision에서 다루는 task 대부분 하나의 domain에서 다른 하나의 domain으로 이미지를 translate 하는 것을 요한다. 따라서, 이러한 cross-domain image-to-image translation은 학계에서도 굉장히 관심도가 높았던 주제이다.
많은 scenario에서 cross-domain mapping은 multimodal이다. 하지만, 많은 모델들은 가능한 output의 full distribution을 무시하는 경우가 많고, noise를 따로 넣어도 모델이 noise를 무시하는 경우가 대다수이다.
즉, 기존의 Multimodal Image-to-Image Translation을 위 한 모델은 paired dataset에 대해서 학습을 했지만, 이 논문에서 새롭게 제시하는 framework는 Unpaired dataset에 대한 unsupervised image-to-image translation을 수행하게 된다.
Multimodal을 위해서 이미지에 대한 latent space는 content space와 style space로 decompose된다.
3. Multimodal Unsupervised Image-to-image Translation
3.2 Model
각각의 domain X_{i}에 하나의 Encoder E_{i}와 하나의 Decoder G_{i}가 있다.
먼저, 각각의 Autoencoder의 latent code는 content code와 style code로 decompose한다.
content code -> domain-invariant image의 속성 정보를 담고 있는 code로, 모든 도메인의 image들은 content space C를 공유한다.
style code -> domain-specific한 이미지의 style에 대한 정보를 담고 있는 code이다. 각 domain의 style space는 다르다!!
그다음, target domain에서 sampling 된 random style code와 source domain의 content code를 결합해서 새로운 이미지를 생성해내게 된다.
즉, (a)에서 x_1, x_2 이미지가 style과 content code로 나뉘고, 다시 원래의 이미지로 복구하는 Encoder와 Decoder구조로 이루어져 있는 반면, (b)에서는 x_1에서 뽑아낸 content에 x_2에서 뽑아낸 style을 입히면, x_1 -> x_2 image translation이 이루어질 수 있게 되는 것이다.
Bidirectional reconstruction loss
1. Image Reconstruction
Given a image -> Latent -> Image
2. Latent Reconstruction
Given a latent code (style & content) -> Image -> Latent
Content Reconstruction Loss
- Source Image의 속성을 학습하기 위해서 사용되는 loss로, 첫번째 수식에 해당한다.
Style Reconstruction Loss
- Image의 style을 학습시키기 위한 loss로, 두번째 수식에 해당한다. 기존 연구에서 사용되었던 latent reconstruction loss를 기반으로 한 loss이며, 다른 style code가 주어졌을 때, 다양한 output을 내기 위해서 사용된다.
(** L1 Reconstruction Loss를 사용하는 이유 -> sharp output image를 output 할 수 있기 때문이다.)
Adversarial loss
논문에서 제시한 모델로 이미지를 생성했을 때, target domain에 있는 실제 이미지들과 구분하기 어려울 정도의 이미지를 생성해내야 한다. 따라서 Adversarial Loss로 모델을 계속 학습시키게 된다.
D2는 X2상에서 translated image와 real image를 구분하기 위한 discriminator이다. 수식을 살펴보면, GAN에서 제시한 Adversarial Loss의 수식과 크게 다른 점은 없다.
Total loss
앞에서 설명한 loss를 다 합친 total loss로 final objective를 optimize한다.
(x1, x2는 비슷하게 정의 되어 있다고 생각하면 된다. 또한, (c1, c2), (s1, s2)도 마찬가지이다.)
5. Implementation Details
Content Encoder
Content Encoder = Strided convolutional layers (input downsampling 하기 위해 필요) + Residual Blocks (앞선 과정의 further processing을 위해 필요)
모든 convolutional layer 다음에는 Instance Normalization을 한다.
Style Encoder
Style Encoder = Strided convolutional layers + Global average pooling layer + FC layer
**Global Pooling layer와 FC layer를 통해서 spatial 정보를 없앤다.
Content Encoder와 다르게 Style Encoder에서는 Instance Normalization을 하지 않는다. 왜? Style Information이 사라지게 되므로, IN을 적용시키지 않게 된다.
Decoder
Content와 style code를 통해서 input image를 reconstruct한다. 여러 개의 upsampling과 convolutional layer를 통해서 reconstruction을 한다. 이때, Residual Block에 AdaIN layer를 넣게 되는데, AdaIN layer의 파라미터는 style code의 MLP로부터 생성된다.