Task : Multimodal Img2Img Translation (Paired dataset)
Idea & Assumption
이 논문에서 제시한 가장 중요한 가정은 요즘 image translation 분야에서 자주 등장하는 disentangled representation입니다. Disentangled representation이란 어떤 이미지를 나타내는 latent variable이 여러 개로 분리 되어 각각 다른 이미지의 특성에 관한 정보를 담고 있는 것을 의미합니다.
예를 들어, 남성 얼굴과 여성 얼굴 이미지가 있다고 가정해보겠습니다. 남성 얼굴과 여성 얼굴은 우선 눈, 코, 입이 있고 위 쪽에 머리카락이 있는 등의 공통적인 특징을 갖습니다. 그리고 남성 얼굴에는 머리카락이 짧고 수염이 있는 등의 남성만이 갖는 특징이 있고 여성 얼굴에는 머리카락이 길고 화장을 했고 등의 여성만이 갖는 특징이 있습니다.
이렇게 각 domain의 이미지는 모든 domain이 공통으로 갖는 특징이 있고 각 domain이 고유하게 갖는 특징이 있는데 공통으로 갖는 특징을 나타내는 latent variable을 이 논문에서는 shared representation, 각 domain이 고유하게 갖는 특징을 나타내는 latent variable을 exclusive representation이라고 부릅니다.
이 shared representation과 exclusive representation을 잘 학습하여 source image의 shared representation과 임의의 exclusive representation을 이용해 multimodal image translation을 하고자 하는 것이 이 논문의 목표입니다.
우선 이 섹션에서는 이 논문의 핵심이 되는 부분인 exclusive representation을 학습하는 방법에 대해 간단하게 알아보겠습니다. 여기에 사용된 핵심 아이디어는 $X$의 exclusive representation을 이용해 만든 이미지는 $Y$의 discriminator가 쉽게 가짜임을 알아볼 수 있어야한다 입니다. $X$의 exclusive representation은 $Y$의 정보가 전혀 담기지 않고 $X$의 정보만 담겨야 하니 직관적으로도 충분히 납득할 수 있는 아이디어입니다.
이제 어떻게 학습하는지 자세하게 알아보도록 하겠습니다.
Training objective
* Overview of model
1. Exclusive representation
Domain $X$와 $Y$가 있고 각 domain의 이미지를 $x$, $y$라고 하겠습니다. $x$를 Encoder $G_e$에 넣어 exclusive representation $E^x$와 shared representation $S^x$를 만듭니다. $E^x$만을 보고 이미지를 생성하는 작은 decoder $G_d^x$를 만들어 $E^x$를 통해 이미지 $\tilde{y}$를 만듭니다. 주목해야할 점은 $x$의 exclusive representation을 이용해 $Y$의 이미지를 만들었다고 가정한 것입니다. $\tilde{y}$와 $y$를 이용해 $Y$의 discriminator $D^Y$를 학습합니다. 그리고 $G_e$는 $D^Y$가 $\tilde{y}$를 진짜로 착각하도록 adversarial loss를 걸어주는데 gradient에 -를 붙여 오히려 $D_Y$가 더 쉽게 가짜임을 알아차릴 수 있는 $E^x$를 만들도록 학습합니다(GRL).
왜냐하면 $E_x$는 domain $X$만이 가지고 있는 exclusive latent variable이므로 이를 이용해 $Y$의 이미지 $\tilde{y}$를 만드는 것은 불가능 해야하고 이는 다시 말해 $D_Y$가 $\tilde{y}$는 가짜임을 쉽게 알아차릴 수 있어야함을 의미하기 때문입니다. $D_Y$가 쉽게 가짜라고 구분할 수 있는 $E^x$를 만들도록 학습함으로써 $E^x$는 $Y$의 정보가 전혀 담기지 않는 exclusive latent variable이 되는 것입니다.
2. Shared representation
Shared representation은 이 논문에서 paired dataset을 사용하기 때문에 아주 쉽게 구현할 수 있습니다. Paired dataset으로 가령 똑같은 이미지의 color image와 gray image를 생각해보겠습니다. 두 이미지가 공통으로 갖는 특징은 물체의 모서리 등일텐데 이전의 Unpaired인 남여 예시와 다르게 이번에는 완전히 똑같은 특징을 갖게 됩니다. 따라서 Shared representation도 완전히 동일할 것입니다.
다시 말해서 $x$를 Encoder $G_e$에 넣어 나온 shared representation $S^x$와 $y$를 Encoder $F_e$에 넣어 나온 shared representation $S^y$가 같으면 됩니다. 이를 수식으로 표현하면 아래와 같습니다.
$L_S = E_{x \sim X, \, y \sim Y}[\parallel S^X - S^Y \parallel] \tag{1}$
하지만 이 loss를 그대로 사용하면 $L_S$를 줄이기 위해 $S^X$와 $S^Y$의 값 자체를 최대한 작게 생성하도록 학습이 됩니다. 따라서 $S^X$와 $S^Y$에 $N(0, 0.1)$의 작은 noise를 더해 이 현상을 완화시켰습니다.
3. Reconstructing the latent space
Test 시에 Exclusive representation에 주로 $N(0, 1)$에서 sample된 random vector $z$를 이용해 diverse 한 image translation을 하게 됩니다. 하지만 학습해보면 generator는 이 $z$를 무시하고 diverse 한 이미지가 아닌 하나의 이미지를 만들게 됩니다. 이러한 문제 때문에 generator로 하여금 random vector $z$를 강제로 사용하도록 하는 힘이 필요합니다. 이를 위해 reconstructing the latent space을 사용합니다.
이는 random vector $z$를 이용해 이미지를 만들었으면 그 이미지를 encoder에 넣었을 때 다시 그 random vector가 나와야한다는 논리를 이용합니다. 구체적인 수식은 아래와 같습니다.
$L^X_{recon} = E_{x \sim X}[\parallel G_e(G_d(S^X, z)) - (S^X, z) \parallel] \tag{2}$
4. WGAN-GP loss
WGAN-GP 는 GAN에서 좀 더 안정적인 학습을 가능하도록 하는 Loss입니다. Discriminator와 generator의 loss를 $L^X_{Disc}$와 $L^X_{Gen}$이라고 표기 했습니다.
5. Cross-domain autoencoder
Cross-domain autoencoder는 shared representation에 좀 더 도움을 주는 부분입니다. Domain $X$의 가짜 이미지는 $Y$의 shared representation과 $X$의 exclusive representation으로 만들어집니다. 그리고 paired dataset에서 $X$의 shared representation과 $Y$의 shared representation은 정확히 같을 것을 가정합니다.
따라서 이미지 $y$의 shared representation과 이미지 $x$의 exclusive representation으로 만들어진 가짜 이미지 $x'$는 $x$와 정확히 일치해야합니다. $y$의 shared representation은 $x$의 shared representation과 정확히 일치하기 때문입니다. 이를 수식으로 나타내면 아래와 같습니다.
$L^X_{auto} = E_{x \sim X}[\parallel x' - x \parallel] \, where \, x' = F_d(S^y, E^x) \tag{5}$
6. Bi-directional image translation
지금까지의 loss들은 모두 한 방향의 translation에 대해서만 정의했습니다. Training 때는 이제 양방향으로 모두 translation 하여 동시에 학습을 진행하게 됩니다. 이를 수식으로 쓰면 아래와 같습니다.
$\begin{align}
L &= w_{GAN}(L^X_{GAN} + L^Y{GAN}) + w_{E_X}(L^{G_d^X}_{GAN} + L^{F_d^Y}_{GAN}) \nonumber\\
&+ w_{L1}(L_S + L^X_{auto} + L^Y_{auto} + L^X_{recon} + L^Y_{recon}) \tag{6}
\end{align}$
L &= w_{GAN}(L^X_{GAN} + L^Y{GAN}) + w_{E_X}(L^{G_d^X}_{GAN} + L^{F_d^Y}_{GAN}) \nonumber\\
&+ w_{L1}(L_S + L^X_{auto} + L^Y_{auto} + L^X_{recon} + L^Y_{recon}) \tag{6}
\end{align}$