[CVPR 2018 Tutorial on GANs] Multimodal Unsupervised Image-to-Image Translation

CVPR 2018 Tutorial on GANsにおけるPart3 Ming-Yu Liuのパートの読解メモ。Ming-Yu LiuのECCV 2018での採択論文、Multimodal Unsupervised Image-to-image Translation　(MUNIT)の解説です。本記事はYoutube動画とスライドの読解メモをスライドに沿って日本語で書き留めたものです。理解に誤りもあるかと思います。その際はぜひコメントなどでご教授頂けましたら幸いです。

# 出典

## チュートリアルホームページ
https://sites.google.com/view/cvpr2018tutorialongans/
## 発表資料
[[slides](http://www.google.com/url?q=http%3A%2F%2Fefrosgans.eecs.berkeley.edu%2FCVPR18_slides%2FMUNIT_by_Liu.pdf&sa=D&sntz=1&usg=AFQjCNFKzriTao7MowTFw9h2FUEHK1h0bw)] [[video](https://youtu.be/5R28W5FnSxM?t=28m30s)]

## 発表者
Ming-Yu Liu, NVIDIA

# 概要
Image to Image translationにおいてMultimodal(唯一の結果を出力する(Unimodal)ではなく複数の多様性のある生成結果を出力)で、且つUnsupervised(学習時に正解として入力画像と正解出力画像のペアを必要としない)な手法。

従来のUnimodalなUnsupervised手法(Cycle GAN, UNIT(Unsupervised Image-to-Image Translation Networks))に比べてMultimodalを実現しつつ、Qualityも向上させることに成功。

技術的なポイントは本発表者のNIPS2017で発表したUNITをMultimodal化するにあたり、UNITではdomain-invariantな内容(contents)もdomain-specificな画風(style)もごっちゃになっている単一のlatent space(潜在変数空間)であったのをcontents spaceとstyle spaceに分離したこと。これにより任意のcontents space上の変数とstyle space上の変数を組み合わせて多様な出力を実現できるようにした。

# 内容
## Image-to-Image Translation
domain Aに属する入力画像をdomain不変な内容を維持しつつdomain Bに属する画像に変換する関数Fを導くこと。(図1)

domain A→Bの例(晴れ→雨, 昼→夜, エッジ画像→実写画像...)応用例(図2)

<img width="811" alt="スクリーンショット 2018-10-14 22.47.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/d6beab89-3317-4d70-89e8-d298e07e5f5d.png">
図1

<img width="843" alt="スクリーンショット 2018-10-14 22.56.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/03819a8e-f59f-e613-0e4f-e0b5dd039a54.png">
図2

## Supervised vs Unsupervised
学習時にdomain変換前の入力画像と、その入力画像に対するdomain変換後の画像のペアを多数使用する方式をSupervisedと呼ぶ。図3左側

学習時にペアではなく単にdomain　Aの多数の画像とdomain Bの多数の画像を使用する方式をUnsupervisedと呼ぶ。図3右側

<img width="815" alt="スクリーンショット 2018-10-14 23.02.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/8bb7859f-4495-4ef1-e154-f1fcefd3d498.png">
図3

## Unimodal vs Multimodal
出力画像として単一例しか出力しない方式をUnimodalと呼ぶ。図4上側

出力画像として多様な複数例を出力する方式をMultimodalと呼ぶ。図4下側

<img width="832" alt="スクリーンショット 2018-10-14 23.03.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/aa3249be-ad6f-c2a5-4d0c-77e786e3bb52.png">

## 従来手法とその分類
Supervised vs Unsupervised、Unimodal vs Multimodalという観点でImage to Image translationに関する従来技術を分類。図5

<img width="803" alt="スクリーンショット 2018-10-14 23.06.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/3162abf9-66c3-e7c1-7cd8-f9886a405006.png">
図5

## Cycle-Consistency Constraint
GANをImage to Image translationに適用する場合はcontentを保存した生成を行わせるために工夫が必要。

Supervisedの時はdiscriminatorの入力をペア画像とすることで解決(pix2pix)。

以降はUnsupervisedの時を考える。Unsupervisedの時には少なくともCycle-Consistency Constraintを導入することが必要。

Cycle-Consistency Constraintとはdomain Aに属する入力画像$x$をdomain A→domain Bに変換するGenerator A→Bと逆変換のGenerator B→Aに順次かけて生成した画像$\hat{x}$と元の入力画像$x$との差(L1ノルム)。

しかし、Cycle-Consistency ConstraintだけではImage to Image translationを学習するのに十分ではない。

例えば図6のような変換を行えるようなGeneratorを学習したいとする。

<img width="835" alt="スクリーンショット 2018-10-14 23.49.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/51934a68-cd7b-9c29-f3db-b82cc7c16edd.png">
図6

ここでなにかの拍子でGeneratorが図7のように学習をしてしまってもConsistency Constraintだけではそれを正すことはできない。（なぜなら図7においても入力画像を二つのGeneratorに順次かけると元の画像に戻るという条件は満たされているため。）

<img width="834" alt="スクリーンショット 2018-10-14 23.55.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/da24bf7c-4cf7-2c32-ff33-503873c39e3f.png">
図7

このようにImage to Image translationにおいてCycle-Consistency Constraintは必要ではあるが十分ではない。つまりUnsupervisedの時にGeneratorを学習するにはCycle-Consistency Constraintという考え方と+αが必要。

## Shared-latent Space for Unsupervised Imageto-Image Translation
Unsupervisedの時にCycle-Consistency Constraint+αで(Unimodalな)Generatorを学習する手法にはCycle GANとUNITがある。

両者ともCycle-Consistency Constraintに加えて+αとしてGANのフレームワークを導入することで学習できるようにしている点では一緒。Cycle GANとUNITとの差異はlatent spaceを明に設けているか否かと言える。で、設けている方がUNIT。(図8)

<img width="811" alt="スクリーンショット 2018-10-15 0.08.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/08b6653b-bbec-a02c-5c86-2e5501f583ab.png">
図8

## Shared-latent Space for Multimodal Unsupervised Image-to-Image Translation (MUNIT)
そしてこの発表の本題であるUnsupervised手法のMultimodal化。本発表の発表者らはUNITをMultimodal化した手法であるMUNITを提案。

UNITでは単一のlatent spaceであった$Z$を、MUNITではcontent　space　$C$と、各styleのstyle space $S$に分離している。(図9)

<img width="809" alt="スクリーンショット 2018-10-15 0.14.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/321ce3bf-1cb9-f4b1-4a8e-01d85d7ce2d2.png">
図9


## Model
MUNITのモデルは各ドメインにおけるドメイン内再構成モデル(図10(a))とクロスドメイン変換モデル(図10(b))から構成される。

<img width="794" alt="スクリーンショット 2018-10-15 0.18.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/0c9daa2f-5000-7cb8-0e62-94ef37e2db00.png">
図10

ドメイン内再構成モデルは各ドメインにおいて定義されるauto encoderのことを指す。図10(a)の左側赤線で書かれた矢印がそれぞれdomain 1のauto ancoderに相当する。同様に青矢印がdomain 2のauto encoderに相当する。

クロスドメイン変換モデルは先ほどのドメイン内再構成モデルに出てきたencoder, decoderを組み合わせることでドメイン変換を行うもので例えばdomain 2からdomain 1への変換は図10(b)の左側のようにdomain 1のスタイル変数$s1$とdomain 2の画像$x_2$からencodeしたコンテンツ変数$c_2$をdomain 1のdecoderにかけることでdomain ２からdomain 1に変換した画像
$x_{2\rightarrow1}$を生成する。さらにこの$x_{2\rightarrow1}$をdomain 1のstyle encoder, content encoderにかけることで再度スタイルコード$\hat{s}_{1}$, 

$\hat{c}_{2}$に戻す。

## Bidirectional Reconstruction loss
このモデルにおいてまずドメイン内再構成モデルのauto encoderにおいて次のような画像$x$に関する再構成誤差が定義できる。
<img width="554" alt="スクリーンショット 2018-10-15 22.21.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/79704d12-f091-42f6-3db2-9db209168bc6.png">
これはすなわち各ドメインにおいて入力画像$x$を当該ドメインのstyle encoderとcontent encoderでstyle code $s$, content code $c$にエンコーディングし、さらにstyle decoder, content decoderで画像$\hat{x}$に戻した時に$x$と$\hat{x}$のL1誤差である。上記式に表した添数字1はdomainの番号に相当し、各domainについてこのような再構成誤差を計算する。

次にドメイン内再構成モデルにおいて次のようなスタイルコード$s$, コンテンツコード$c$に関する再構成誤差が定義できる。
<img width="573" alt="スクリーンショット 2018-10-15 22.22.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/e66624f4-4f61-bb9c-4da3-46f204ddbca8.png">
一行目は図11における$s_1$と$\hat{s}_1$とのL1誤差、二行目は図11における$c_2$と$\hat{c}_2$とのL1誤差である。上記式に表した添数字1はdomainの番号に相当し、各domainについてこのような再構成誤差を計算する。

<img width="792" alt="スクリーンショット 2018-10-15 0.18.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/9fe0305f-6246-4d58-1852-27a5e84ddac8.png">
図11

## GAN Loss
以上の誤差だけだと先に説明した「Cycle-Consistency Constraintは必要ではあるが十分ではない」という話になり正しく学習できないのでさらに次のようにGAN　lossを導入する。
<img width="835" alt="スクリーンショット 2018-10-15 23.25.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/180ba444-356c-4a94-3aa0-7a694197d8ec.png">
これは図12(b)において$x_1$と$x_{2\rightarrow1}$に対して真贋比較をするdiscriminatorを用意してdiscriminatorが騙されるほど値が大きくなるような一般的なGANのlossである。

<img width="801" alt="スクリーンショット 2018-10-15 0.19.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/2139d2a1-1bf2-b89e-3bd0-13f7d53d861a.png">
図12

以上にあげた全てのlossの総和を最小化するようなencoder, decoder及びGAN lossを最大化するようなdiscriminatorを見つけるのが本問題における学習である。

## 実装上の具体的なArchitecture
encoderはcontent encoderと　style encoderに分けている。またstyle encoderの出力$s$はさらにMLPを使ってAdaIN Parameterに変換してからContent codeと合流し、最後にアップサンプリングして結果画像にするということである。(図13)

MLPはMulti Layer Perceptionのことと思われる。 AdaINはこのMUNITの論文の1st authorであるX. Huangが以前発表した論文( https://arxiv.org/pdf/1703.06868.pdf )で提案したもののようだがここでは割愛。

<img width="800" alt="スクリーンショット 2018-10-15 0.19.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/9f3af7ba-46f3-a43b-7a36-2a18995a3d0f.png">
図13

## Example-Guided Image-to-Image Translation
本論文で提案する手法は例示画像を使って表す所望のスタイルに画像を変換することもできる。その場合は先に説明したArchitectureににおいてstyle encoderにはスタイルを指定するための例示画像を入力として入れればよい。(図14)

<img width="791" alt="スクリーンショット 2018-10-15 0.19.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/b2ae12c9-881d-3191-afcb-a7c9e70eaa37.png">
図14

## 結果
https://github.com/NVlabs/MUNIT
を参照。

## 評価
評価は著者のUnimodal, Unsupervisedな手法であるUNIT, 及びCycle GAN、そしてMultimodalなSupervisedな商法であるBicycle GANをベンチマークに評価している。

UNIT, Cycle GANに対してはMultimodalを実現しつつ、Qualityも向上させることに成功。Unsupervisedなのにも関わらずSupervisedな手法であるBicycle GANに肉薄するqualityを達成している。

詳しくは著者論文を参照のこと。

## Github
本論文のコードはGithubで公開されている。
https://github.com/NVlabs/MUNIT

ライセンスは2018/10/15現在
Attribution-NonCommercial-ShareAlike 4.0 International
となっている。

<img width="791" alt="スクリーンショット 2018-10-15 0.20.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/0a3478fb-d02e-5af3-070f-e4d3a16b323c.png">
図15