今日、ちょっとstarGANのお勉強したら、なんとなんと。。。
昨日提案のpix2pix_multiGANは、以下のようにトポロジカル的にはstarGANだし、同一のGeneratorとDiscriminatorで学習するという意味でも同一のモデルのようだ。そこで、これ以降pix2pix_multiGAN改めpix2pix-starGANと改名することとする。
今回のコードは以下に置いた
MuAuan/multiGAN
starGANとpix2pix-starGANの類似性
【参考】
StarGAN:UnifiedGenerativeAdversarialNetworks forMulti-DomainImage-to-ImageTranslation
存在は知っていたが、モデルが複雑に見えて違うものと思っていた。しかし、トポロジカル的な意味では、同じだということに気が付いた。
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のプロセスが増加したことによる効果は線形に増えた程度である。そのことからも、相対ペアを決め打ちで選んでいるようにしか見えない。しかし、今回も相対ペアは見事に本人(ここは若い人が見わけつかないし、変顔などもあるので残念ながらたぶんなのだが)のペアを選んでいるように思う。何より本人から始まるチェーンは、本人に戻ってきている。
素顔⇒変顔⇒泣き顔⇒不満顔⇒怒り顔⇒笑顔⇒素顔
上段:入力
中断:出力
下段:ターゲット元画像
素顔⇒変顔
変顔⇒泣き顔
泣き顔⇒不満顔
不満顔⇒怒り顔
怒り顔⇒笑顔
笑顔⇒素顔