본문 바로가기
Paper Review/Style Transfer

MUNIT : Multimodal Unsupervised Image-to-Image Translation (2018)

by HanByol Jang 2021. 10. 3.
728x90

Multimodal Unsupervised Image-to-Image Translation는 UNIT 논문을 발전한 형태로 unimodal이 아닌 multimodal로의 변환이 가능하도록 구현한 논문입니다. UNIT와 마찬가지로 unpaired한 데이터들간의 변환이고, 하나의 이미지는 content와 style을 가지고 있어 content는 유지한채 style만 변환해줌으로서 다양한 style로 자유로운 변환이 가능함을 보여준 논문입니다. NVIDIA에서 2018년에 발표한 논문으로, content와 style의 개념을 처음 소개함으로 이후에 나오는 Image-to-Image Translation 논문들의 baseline에 해당하는 논문입니다. 

MUNIT :https://arxiv.org/abs/1804.04732 


Content Space

본 연구진의 앞선 논문인 UNIT에서 중요 포인트는, source domain과 바꾸고자 하는 target domain간에는 공유하고 있는 latent space가 있다는 것입니다.

https://hanstar4.tistory.com/11

 

UNIT

Unsupervised Image-to-Image Translation Networks(UNIT)는 unpaired한 데이터들간 서로 공유하고 있는 중요 특징(shared latent space)을 이용해 style을 변환시켜주는 연구이다. NVIDIA에서 2017년에 발표한 논..

hanstar4.tistory.com

이 논문에서는 해당 latent space를 조금 더 구체적으로 정의했습니다.

 

Content + Style space

위의 figure (a)와 같이 source domain (X1)과 target domain (X2) 사이에는 공유하고 있는 Content sapce가 있고 각 domain의 특징을 나타내는 Style space (s1, s2)가 있다는 것을 가정합니다. 

그러므로 (b)와 같이 표범의 이미지를 가지고 style만 바꿔줌으로써 자세는 동일하지만 다양한 고양이의 형태를 띄고 있는 출력물을 만드는 것을 볼 수 있습니다.


Loss Function

Loss 요약

MUNIT 모델은 UNIT와 마찬가지로 Encoder - Decoder로 이루어지고 같은 domain내에서 발생하는 loss (a)와 다른 domain간에서 발생하는 loss (b)의 결합을 통해 학습이 이루어집니다.

 

1. Bidirectional reconstruction loss

1) Image reconstruction :  Image -> Latent -> Image

이미지 x1 이 있을때 Encoder를 통해 content (c1)와 style (s1) code가 나오고 이 두 code를 Decoder에 넣으면 x1'이 생성됩니다. 이 output x1'은 input으로 넣은 x1 이미지와 동일해야만 합니다. 

Image reconstruction loss

2) Latent reconstruction : Latent -> Image -> Latent

이미지의 복원뿐만 아니라 Latent의 복원도 동일해야만합니다. 위의 figure (b)처럼 두 domain간에 이루어지는 과정으로 먼저 x1 이미지의 content c1과 x2 이미지의 style s2를 결합하여 x2' 이미지를 생성합니다. 생성된 x2' 이미지를 다시 인코더 E2에 넣으면 content code c1'과 style code s2'이 생성됩니다. 여기서 c1'은 원본 이미지 x1의 content인 c1과 같아야만 하고, s2'은 target 이미지인 x2의 style인 s2와 같아야만 합니다.

그러므로 아래와 같은 loss를 추가할 수 있습니다.

Latent reconstruction loss

같은 방법으로 x2 이미지에 대해서도 동일하게 3개의 loss를 만들 수 있습니다.

 

2. Adversarial Loss

GAN을 사용하기 때문에 adversarial loss가 발생합니다. x1 이미지의 content code c1과 x2 이미지의 style code s2를 가지고 Decoder(Generator)를 통해 x2' 이미지를 생성합니다. 이 x2'는 Discriminator를 속여야만합니다.

아래는 x1->x2에 대한 Adversarial loss이고 x2->x1에 대해서도 같은 loss가 발생합니다.

Adversarial loss

 

3. Total Loss

MUNIT Total Loss

위는 최종 loss입니다. 두개의 GAN loss와 두개의 Image recon loss, 두개의 content recon loss, 두개의 style recon loss로 구성됩니다. 각 하이퍼 파라미터는 실험에 의해 결정되었다고 합니다.

 


Model 

Model Structure

MUNIT는 Auto-Encoder기반으로 총 3개의 subnetwork로 구성됩니다.

 

1. Content Encoder

몇개의 strided convolution layer를 통해 down sampling을 한 뒤, residual block를 통해 convolution 연산을 진행시킵니다. 그리고 모든 convoloution layer 연산 후에는 Instance Normalization(IN)을 적용하여 style을 제거한 content만 남도록 진행합니다. 

 

2. Style Encoder

Content Encoder와 마찬가지로 strided convolution layer를 통해 down sampling을 한 뒤, Global Pooling과 Fully Connected(FC) layer를 통해 content 정보를 없애줍니다. Content Encoder와는 다르게 style 정보만 남겨야하므로 style 정보를 없애는 IN을 적용시키지 않습니다.

 

3. Decoder

Decoder에서는 각각의 Encoder를 통해 추출한 Conten와 Style를 합쳐주는 역할은 합니다.

먼저 Style Encoder에서 추출한 Style code를 가지고 MLP를 통해 Adaptive Instance Normalization (AdaIN)에 사용할 parameter로 변환시킵니다.

AdaIN는 아래와 같은 수식으로 이루어집니다.  z는 content의 각 channel로서, channel별로 mean과 std를 이용해 normalization을 시킨 뒤, style code의 MLP를 통해 생성된 감마와 베타를 각각 곱하고 더해주는 작업을 통해 이루어집니다. 

AdaIN 수식

AdaIN를 통해 content는 유지한채 새로운 style만 입혀줄 수 있게됩니다.


Experiment Results

Unsupervised Learning이기 때문에 하나의 Input Image를 가지고 다양한 형태의 Output 이미지를 생성해내는 것을 알 수 있습니다. 

 

728x90

댓글