LoginSignup
5
10

More than 5 years have passed since last update.

ひょっとするとすごいぞ!。。。改めpix2pix-starGANなのだ♬

Last updated at Posted at 2018-02-28

今日、ちょっとstarGANのお勉強したら、なんとなんと。。。
昨日提案のpix2pix_multiGANは、以下のようにトポロジカル的にはstarGANだし、同一のGeneratorとDiscriminatorで学習するという意味でも同一のモデルのようだ。そこで、これ以降pix2pix_multiGAN改めpix2pix-starGANと改名することとする。
今回のコードは以下に置いた
MuAuan/multiGAN

starGANとpix2pix-starGANの類似性

【参考】
StarGAN:UnifiedGenerativeAdversarialNetworks forMulti-DomainImage-to-ImageTranslation
存在は知っていたが、モデルが複雑に見えて違うものと思っていた。しかし、トポロジカル的な意味では、同じだということに気が付いた。
starGAN無題.png

pix2pix-starGANはGeneratorとDiscriminatorで収束させるが、ラベル等外部情報は一切無し

そして上図のキャプションにも記載されているが、基本的に同じ発想だ。
しかし、StarGANでは、Labelを使っているというのが大きな差である。
こちらはpix2pixを用いる構造であり、そのような外部的な要素は存在せず、単にGeneratorとDiscriminatorが連続するドメイン間変換の中で学習していく。
しかも、巷で記載されているようにStarGANやCycleGANが苦手とする、大きな構造変化のドメイン間の変換も特に制限なく学習できる。
【参考】
StarGANで顔イラストの表情変換
[DL輪読会]StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation

昨日のお約束通り、今回は6連続変換、つまり6連ガチャ(GAN)を試みた。

モデルの学習について

ドメイン・データはStarGANにちなんで、表情を選んだ。
①すまし顔 ②笑顔 ③怒り顔 ④悔しい顔 ⑤泣き顔 ⑥変顔 を集めて6グループとした。
しかし、なかなか怒りや悔しい顔はなかったので、ちょっと違っていてもご容赦願いたい。データ数は10個/カテゴリだが、1個/一人である。つまり、一つ一つのデータは、ユニークデータである。
また、以下のように6つの連続的なGANのフィッティングは以下のようなイメージで学習する。

j 1100, Epoch1 1100/8001, Time: 4816.475056648254
10/10 [==============================] - 1s - D logloss: 0.5653 - G tot: 4.0634 - G L1: 0.2641 - G logloss: 1.4228
10/10 [==============================] - 1s - D logloss: 0.5687 - G tot: 4.1672 - G L1: 0.2815 - G logloss: 1.3523
10/10 [==============================] - 1s - D logloss: 0.5558 - G tot: 3.8783 - G L1: 0.2498 - G logloss: 1.3799
10/10 [==============================] - 1s - D logloss: 0.5596 - G tot: 3.9424 - G L1: 0.2587 - G logloss: 1.3558
10/10 [==============================] - 1s - D logloss: 0.5605 - G tot: 3.8764 - G L1: 0.2463 - G logloss: 1.4132
10/10 [==============================] - 1s - D logloss: 0.5578 - G tot: 4.6342 - G L1: 0.3240 - G logloss: 1.3942

結果

驚くべきことに、フィッティングのペアは相対ペアが事前というか、瞬間に首尾一貫して同一で決まっている。今回は顔表情ということで、それぞれの人の表情をユニークに使っている。もし、相対ペアがランダムに決定されているのであれば、異なった人の表情で変換されてもよさそうなものである。また、計算時間は363*60sec/5000epoch≒4.356sec/epochであり、前回までの計算時間と比べて特に増加しておらず、GANのプロセスが増加したことによる効果は線形に増えた程度である。そのことからも、相対ペアを決め打ちで選んでいるようにしか見えない。しかし、今回も相対ペアは見事に本人(ここは若い人が見わけつかないし、変顔などもあるので残念ながらたぶんなのだが)のペアを選んでいるように思う。何より本人から始まるチェーンは、本人に戻ってきている。

素顔⇒変顔⇒泣き顔⇒不満顔⇒怒り顔⇒笑顔⇒素顔

上段:入力
中断:出力
下段:ターゲット元画像
素顔⇒変顔
current_batch_training5_4900.png
変顔⇒泣き顔
current_batch_training4_4900.png
泣き顔⇒不満顔
current_batch_training3_4900.png
不満顔⇒怒り顔
current_batch_training2_4900.png
怒り顔⇒笑顔
current_batch_training1_4800.png
笑顔⇒素顔
current_batch_validation0_4800.png

まとめ

1.pix2pix_multiGANはpix2pix-starGANである

2.1つずつはユニークな画像を使って、10個/カテゴリで6連ガチャ達成

3.ラベル無しドメイン間のランダム無作為フィッティングで、素顔⇒変顔⇒泣き顔⇒不満顔⇒怒り顔⇒笑顔⇒素顔の順に人を間違えずに変換できた

課題

1.データを増加していったとき、汎化はどのように進んでどの程度できるのだろうか

2.データを増加していったとき、どこまで間違えずに行けるのだろうか

5
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
5
10