Unsupervised Cross-Domain Image Generation読んだ

https://arxiv.org/abs/1611.02200

<h1>モチベーション</h1>
・教師無しで、顔写真→似顔絵みたいな変換をしたい（教師ありだと、顔写真と似顔絵のペアが大量に必要で、集めるのが大変）
<img width="745" alt="スクリーンショット 2017-03-14 1.27.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/b25f7da5-1d7b-c74b-84f3-4bd64e73cf72.png">
・（他のタスクもやってるけど顔写真→似顔絵のタスクを例として説明します）

<h1>手法</h1>
<h3>ベースライン</h3>
S : 分布DSからi.i.dでサンプリングされた顔写真集合
T : 分布DTからi.i.dでサンプリングされた似顔絵集合

生成モデル G : S → T を学習したい

ここで、Gを<img width="198" alt="スクリーンショット 2017-03-14 1.37.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/b26df404-cbe2-7fe1-1f73-695db340e418.png">を最小化するようなGとする。
ここで、αはパラメータ。そして、

<img width="689" alt="スクリーンショット 2017-03-14 1.39.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/02d16b2d-6d31-55c2-3fa5-3cce611270dc.png">

D : Sから生成されたものと、Tから来たものを見分ける関数　(生成された似顔絵と本物の似顔絵を見分ける関数)
このDを騙すようなGを学習すると、Sから生成されたものとTから来たものの区別が付きにくくなる → いい感じのGができる (GAN)

<img width="585" alt="スクリーンショット 2017-03-14 1.39.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/4e932ee7-023a-e442-4893-7f0709d55a36.png">

d : Mean Squared Error (Cosine とかHingeとかTripletでもいい)
<b>関数fはこの問題では不変。あらかじめ学習させておく。</b>問題に合わせて適切なものを選ぶ感じで、例えばfを、顔写真から個人を識別するようなネットワークにしたとき、f(顔写真)とf(G(顔写真))のギャップを小さくすることで、顔写真とG(顔写真)の両方が、同一人物だと判定されるようにできる。(Identity-Preservingになるように)

これで、GとDをDNNで構築して最適化すると・・

いい感じに生成できると思いきや、、、できません（って書いてあった）


<h3>Domain Transfer Network (DTN)</h3>
・ベースラインに２つの変更を加える

① Gの中にfを入れる

つまり、<img width="74" alt="スクリーンショット 2017-03-14 2.18.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/04163746-dbde-5dbf-73f4-ee7cdc535987.png">とし、gは何らかの生成関数とする。


②　学習の際、Gが似顔絵から似顔絵を生成するようにして、Dを2値分類から3値分類に変える (?)
<b>Sから生成されたG(S)</b> / <b>Tから来たもの</b>　の分類
↓
<b>Sから生成されたG(S)</b> / <b>Tから生成されたG(T)</b> / <b>Tから来たもの</b>　の分類
(顔写真から生成された似顔絵 / 似顔絵から生成された似顔絵 / 本物の似顔絵)
(順にclass=1/2/3とする)
に変える

このとき、

<img width="625" alt="スクリーンショット 2017-03-14 2.38.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/965c6eb8-59da-b7a0-7fe1-72eb3351d744.png">

を最小にするD (Diはclass=iである確率) と

<img width="213" alt="スクリーンショット 2017-03-14 2.41.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/491e00c1-10b0-105e-c533-c784d6b8f8fc.png"><img width="108" alt="スクリーンショット 2017-03-14 2.41.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/43fa2be7-0d8a-4850-3e94-4594e92cae8d.png">

を最小にするgを求めれば良い
ここで、

<img width="572" alt="スクリーンショット 2017-03-14 2.42.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/6c07a5e4-735e-21cf-1ffe-9b061ce9387f.png">
<img width="553" alt="スクリーンショット 2017-03-14 2.42.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/4437ad58-34b3-311c-97b2-89936acdac34.png">

(4)では、生成された似顔絵が,本物の似顔絵(class=3)である確率を最大化したい(Dを騙したい)
(5)は、(2)とおなじ
(6)では、似顔絵≒似顔絵から生成された似顔絵　にしたい。d2はMSEとか
(7)では、生成される画像をsmoothにするらしい(anisotropic total variation loss)

まとめると
<img width="726" alt="スクリーンショット 2017-03-14 2.56.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/159faa87-ad4c-e7cc-a1c9-84d4ccc327b0.png">



<h1>結果</h1>
・MNISTとかもやってるけど省略
・顔写真→似顔絵タスクの実験
・関数fには、DeepFace使った
・DNNの詳細
> Network D takes 152 × 152 RGB images (either natural or scaled-up emoji) and consists of 6 blocks, each containing a convolution with stride 2, batch normalization, and a leaky ReLU with a parameter of 0.2. Network g maps f ’s 256D representations to 64×64 RGB images through a network with 5 blocks, each consisting of an upscaling convolution,batch-normalization and ReLU. Adding 1 × 1 convolution to each block resulted in lower LCONST training errors, and made g 9-layers deep. We set α = 100, β = 1, γ = 0.05 as the tradeoff hyperparameters within LG via validation. As expected, higher values of α resulted in better f- constancy, however introduced artifacts such as general noise or distortions.

結果
<img width="707" alt="スクリーンショット 2017-03-14 2.57.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/170131/e2156ae0-1c2d-62e6-8439-b0fbe97c34fb.png">

左が顔写真、真ん中が人間が書いた似顔絵、右が提案手法が生成したもの
いい感じになった

<h1>感想</h1>
・ｆが大事
・色のバリエーションをもっと限定するときれいになるかも
・説明むずい。分かんないところあったらメールかコメントください