Multimodal Unsupervised Image-to-image Translationの簡単な解説


# 概要

ドメイン変換を行う際に、見た目を変えずにスタイルを変換する手法。既存手法でもドメインを変換するものはあったが、one-to-oneのマッピングであった。すなわち、犬を猫に変換しようとした時に、猫の種類は犬種に応じて決定的であった。これに対して、Multimodal Unsupervised Image-to-image Translation (MUNIT) を提案。MUNITでは、画像をdomain-invariantなコンテンツと、domain-specificなスタイルに分解する。コンテンツをキープしたまま、任意のスタイルをサンプルして合成することで、ドメインを変換する。

# 手法詳細

## 原理

ドメイン1の画像$x_1 \in \mathcal{X}_1$をドメイン2の画像$s_2 \in \mathcal{S}_2$に変換することを考える。ドメインを変換するために、ドメイン1用のエンコーダ$E_1$・デコーダ$G_1$、ドメイン2用のエンコーダ$E_2$・デコーダ$G_2$を用意する。ドメイン1の画像$x_1 \in \mathcal{X}_1$を、エンコーダ$E_1$を用いて、スタイル$s_1 \in \mathcal{S}_1$、コンテンツ$c \in \mathcal{C}$に分解する。ターゲットドメイン2において、コンテンツ$c$の値を維持したまま、スタイル$s_2 \in \mathcal{S}_2$の値を用い、デコーダ$G_2$を通して復元することで、ターゲットドメインの画像$x_2 \in \mathcal{X}_2$を生成できる。

![Kobito.5OFgZD.png](https://qiita-image-store.s3.amazonaws.com/0/146529/d9827394-a599-d3c5-a8d9-9152808fe269.png "Kobito.5OFgZD.png")

## 学習

学習においては、bidirectional reconstruction lossというエンコード・デコードが反対の動作になるようなロスを提案。具体的には、画像->latent->画像が一致するようにしつつ、latent->画像->latentも一致させる。

画像$x_1$からエンコーダ$E_1$を用いてコンテンツ$c_1$・スタイル$s_1$に変換し、そこからデコーダ$G_1$によって同じ画像に戻す。なお、確率での表記が苦手な人のために補足しておくと、$x_1 \sim p(x_1)$は、画像$x_1 \in \mathcal{X}_1$から一つをランダムに選ぶ操作である。

![Kobito.HPVLMX.png](https://qiita-image-store.s3.amazonaws.com/0/146529/401c3121-3a61-7ce7-8153-5b36a8ba34ed.png "Kobito.HPVLMX.png")

また、特徴についても同様にデコード・エンコードして同じ特徴に戻るようにする。$c_1$は、$x_1$から$E_1^c$でエンコードした特徴とし、$s_2$は$q(s_2)$からサンプルした値とする。$q$は平均0、分散1の正規分布とする。

![Kobito.JE3ihv.png](https://qiita-image-store.s3.amazonaws.com/0/146529/3437aaf9-f3eb-37d9-b48f-c493af6faf21.png "Kobito.JE3ihv.png")

さらに、画像を鮮明にするためのAdversarial lossを用いる。これは通常のGANと同様である。ドメイン毎にそれぞれDiscriminator（$D_1, D_2$）を用意する。スタイルを変換しても画像が本物になるように学習。

![Kobito.8oNsuV.png](https://qiita-image-store.s3.amazonaws.com/0/146529/76097734-070d-adcc-0f35-5ca631680427.png "Kobito.8oNsuV.png")

トータルのロスは以下となる。なお、AdaINはAdaptive Instance Normalizationである。

![Kobito.23TxfT.png](https://qiita-image-store.s3.amazonaws.com/0/146529/e6525802-c738-50fe-0779-533446bff014.png "Kobito.23TxfT.png")

## ネットワーク

最終的にネットワークの構成は下記のようになる。

![Kobito.aUty4c.png](https://qiita-image-store.s3.amazonaws.com/0/146529/bcfb79ce-16e0-4d72-66e6-0df9ce1120e2.png "Kobito.aUty4c.png")

## Theoretical Analysis

夜も遅いので省略。

# 実験結果

エッジからくつの画像への変換に関する、定性比較。最も左の列が入力とground truthの出力。各手法についてランダムにサンプルした結果。なおBycicle-GANはSupervisedな方法。

![Kobito.IqZxCK.png](https://qiita-image-store.s3.amazonaws.com/0/146529/91da19a0-bbbd-40eb-8765-65814e1f6a37.png "Kobito.IqZxCK.png")

エッジから靴/鞄に変換しランダムにサンプルした結果。

![Kobito.LyHGuc.png](https://qiita-image-store.s3.amazonaws.com/0/146529/6c358974-bd35-e864-e0c5-54b04d60b524.png "Kobito.LyHGuc.png")


動物画像の変換。

![Kobito.TIR9fU.png](https://qiita-image-store.s3.amazonaws.com/0/146529/1fdd4070-c323-55c1-ed63-f563cd778db5.png "Kobito.TIR9fU.png")

ストリートシーンの変換

![Kobito.8Q334j.png](https://qiita-image-store.s3.amazonaws.com/0/146529/34bacb23-977a-e238-9f2e-68537835af51.png "Kobito.8Q334j.png")

Yosemite画像の昼夜変換

![Kobito.c1US3s.png](https://qiita-image-store.s3.amazonaws.com/0/146529/8f84d8e7-d99d-12a4-94f9-cbee801b4341.png "Kobito.c1US3s.png")


スタイルを固定したままコンテンツを変換、コンテンツを固定したままスタイルを変換した結果。

![Kobito.w2DtCx.png](https://qiita-image-store.s3.amazonaws.com/0/146529/e82d8cb4-9baf-706b-3020-1259c972c02d.png "Kobito.w2DtCx.png")

既存のスタイル変換手法との比較

![Kobito.R9nGzl.png](https://qiita-image-store.s3.amazonaws.com/0/146529/f65d9c43-a65f-61a6-2489-5623b012a3df.png "Kobito.R9nGzl.png")

# まとめ

結果が凄いし、応用範囲が広いように思う。次回は実装してみたい。