LoginSignup
12
10

More than 5 years have passed since last update.

Unsupervised Cross-Domain Image Generation読んだ

Last updated at Posted at 2017-03-13

モチベーション

・教師無しで、顔写真→似顔絵みたいな変換をしたい(教師ありだと、顔写真と似顔絵のペアが大量に必要で、集めるのが大変)
スクリーンショット 2017-03-14 1.27.12.png
・(他のタスクもやってるけど顔写真→似顔絵のタスクを例として説明します)

手法

ベースライン

S : 分布DSからi.i.dでサンプリングされた顔写真集合
T : 分布DTからi.i.dでサンプリングされた似顔絵集合

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

ここで、Gをスクリーンショット 2017-03-14 1.37.09.pngを最小化するようなGとする。
ここで、αはパラメータ。そして、

スクリーンショット 2017-03-14 1.39.48.png

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

スクリーンショット 2017-03-14 1.39.53.png

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

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

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

Domain Transfer Network (DTN)

・ベースラインに2つの変更を加える

① Gの中にfを入れる

つまり、スクリーンショット 2017-03-14 2.18.49.pngとし、gは何らかの生成関数とする。

② 学習の際、Gが似顔絵から似顔絵を生成するようにして、Dを2値分類から3値分類に変える (?)
Sから生成されたG(S) / Tから来たもの の分類

Sから生成されたG(S) / Tから生成されたG(T) / Tから来たもの の分類
(顔写真から生成された似顔絵 / 似顔絵から生成された似顔絵 / 本物の似顔絵)
(順にclass=1/2/3とする)
に変える

このとき、

スクリーンショット 2017-03-14 2.38.31.png

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

スクリーンショット 2017-03-14 2.41.12.pngスクリーンショット 2017-03-14 2.41.15.png

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

スクリーンショット 2017-03-14 2.42.11.png
スクリーンショット 2017-03-14 2.42.16.png

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

まとめると
スクリーンショット 2017-03-14 2.56.38.png

結果

・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.

結果
スクリーンショット 2017-03-14 2.57.46.png

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

感想

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

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10