Re:ゼロから始めるML生活

ミスよりグズを嫌え

【論文メモ:DiscoGAN】Learning to Discover Cross-Domain Relations with Generative Adversarial Networks

論文

[1703.05192] Learning to Discover Cross-Domain Relations with Generative Adversarial Networks

著者

Taeksoo Kim, Moonsu Cha, Hyunsoo Kim, Jung Kwon Lee, Jiwon Kim

背景

我々人間は英語の文と、それを翻訳したフランス語の文の関係性を容易に認識する事が可能である。 また、スーツの上着を見たらそれと対になる同じドメインの服や靴を選ぶことができる。

このように、2つのドメイン間の関係性を認識することは人間にとってはたやすくも、コンピュータにとっては非常に難しい問題となっている。 2つのドメイン間の関係性を認識することは、一方のドメインに存在する画像からもう一方のドメインに適合する画像を生成するという問題に置き換えることができる。

この問題を解くためには、関係性を示した画像のペアを膨大に用意する必要がある。 一方で、ドメイン間で対になっている画像は通常手に入らない。 仮に手に入ったとしても、1対多の組になってしまうことも起こりうる。

目的とアプローチ

目的

アプローチ

  • Discovers cross-domain relations with Generative Adversarial Networks (DiscoGAN)
    • 2つのラベル無し画像の集合を用いた学習
    • 事前学習が不要な学習モデル

提案手法

DiscoGAN

f:id:nogawanogawa:20181110194121j:plain:w400

従来のGANのモデルの問題を(a)に示す。 従来のGANの手法では、入力画像からGeneratorを通すことで、別の集合に似せたフェイクの画像を生成する。 その結果を教師データと組み合わせてDiscriminatorの入力とするが、この時同じドメインに属する画像の集合であっても変換前と変換後の画像を対応付ける必要がある。

次に、提案手法を導入した場合を(b)に示す。 一方のドメインに属する画像をGeneratorに入力すると、他方のドメインに属する画像に変換する。(Handbag -> Shoe, Shoe->Handbag) このように2つのマッピング(A->B, B->A)を利用することで、双方向の変換が可能になる。

ネットワーク設計

DiscoGANのネットワークの概要を下記に示す。

f:id:nogawanogawa:20181110191209j:plain:w700

(a)に一般的なGANのモデルを示している。 もともとは、乱数を入力としてMNISTのような画像を出力していた。

ドメインAとドメインBを対応付けたものを(b)に示す。 このモデルではA->Bへの変換とB->Aとを組み合わせることで、画像をもとのドメインAに戻す。 これを初めの入力画像と比較することでConstruction Lossを取る。

提案手法では、(c)のように上記のモデルを対にすることで2つのドメインの双方向の変換を可能にする。

Loss

DiscoGANでのLossは下記のように表現される。

L_{G} = L_{G_{AB}} + L_{G_{BA}} =  L_{GAN_{B}} + L_{CONST_{A}} + L_{GAN_{A}} + L_{CONST_{B}}

L_{D} = L_{D_{A}} + L_{D_{B}}

ここで、

L_{G_{AB}} = L_{GAN_{B}} + L_{CONST_{A}}

となっており、 L_{GAN_{B}}がGenerative Adversarial Loss、 L_{CONST_{A}}が Reconstruction Lossと呼んでいる。

これらは、通常のGANのLossに対してReconstruction Lossを付加した形となっている事がわかる。

Generative Adversarial Loss

通常のGANでは、Generatorが出力した画像をDiscriminatorに入力して画像が教師データであるか複製データであるかを判断させることで学習を行う。

数学的には、各ドメインA, Bに属する画像x_{A}, x_{B}ドメイン間の関係性はG_{AB}, G_{BA}のように表される。

G_{AB}(x_{A})

G_{BA}(x_{B})

f:id:nogawanogawa:20181111103714j:plain:w400

このとき Generative Adversarial Lossは下記のように示される。

L_{GAN_{A}} = -\mathbb{E}_{x_A 〜 P_A}[log D_B(G_{AB}(x_A))]

L_{GAN_{B}} = -\mathbb{E}_{x_B 〜 P_B}[log D_A(G_{BA}(x_B))]

また、DiscriminatorのLossは

L_{D_{A}} = -\mathbb{E}_{x_A 〜 P_A}[log D_A(x_A)] - \mathbb{E}_{x_B 〜 P_B}[log (1-D_A(G_{BA}(x_B)))]

L_{D_{B}} = -\mathbb{E}_{x_B 〜 P_B}[log D_B(x_B)] - \mathbb{E}_{x_A 〜 P_A}[log (1-D_B(G_{AB}(x_A)))]

Reconstruction Loss

下記のように変換を行う場合、入力画像は変換を経てもとのドメインに戻ることになる。

G_{BA} \circ G_{AB}(x_{A})

これと入力画像の差分を計算することでLossとして取り扱うことができる。 厳密に同じ画像に戻るわけではないことを考慮すると、下記のようになる。

d(G_{BA} \circ G_{AB}(x_{A}), x_{A})

また、Mode Collapse問題にも提案手法は有効となる。下記の図のような変換が行われる。

f:id:nogawanogawa:20181110194226j:plain

(a)のように同じドメインの画像から別のドメインに属する画像を生成する。 一方で、Mode Collapseの現象が発生した場合は(b)のように単一の画像しか生成できなくなる。

ここでReconstruction Lossが含まれれば(c)のように、同条件のインプット画像からでも、画像の復元の経路によってReconstruction Lossが大きくなるため、一方向の画像生成よりmode Collapseに対して有効となる。

評価

単純評価

まず、単純なGANとreconstruction lossを使用したGAN、そして提案手法を使ったGANに関する単純評価を行う。 説明のためにドメインはA, Bの2つとし、Gaussian mixture modelsによってサンプルを描画する。

各モデルについて50000iteration 学習した結果について下記に示す。

f:id:nogawanogawa:20181110194240j:plain

上図に関し、色付きの背景はDiscriminatorによる出力 (0~1) を表しており、等高線はDiscriminatorの出力値が同じ部分を示している。 'x'印はドメインBの異なるサンプルを表している。 色付きの◯はドメインAからドメインBにマッピングした結果を表しており、その色は入力のサンプルを表している。

上図の(a)は初期状態を表す。ドメインAのモデルがすべて同一地点に対してマッピングされている事がわかる。

単純実装のGANの場合(B)は、複数のサンプルを入力としたGenerator の出力がドメインBで同じサンプルの近くにマッピングされている。 つまり、多対1のマッピングになってしまっている事がわかる。

reconstruction lossを使用したGANの場合(C)は、mode collapseが顕著に現れているが、ネイビー、緑、水色については2 ~ 3 のモデルに収束している。 等高線を確認すると、初期状態に比べてBの異なるモデルの周囲に等高線が確認できる。

また、(B)と(C)の両方に共通してマッピング単射になっていることが確認される。

提案手法(D)では、mode collapseは見受けられず、さらにマッピング全単射になっている。

この結果から、従来の手法より関係性を柔軟に学習したマッピングが可能になっている事がわかる。

実画像の評価

評価はの条件は下記の通りとなっている。

  • 画像 : 64×64×3
  • 学習率 : 0.0002
  • 最適化 : Adam Optimizer
    • \beta_1 = 0.5 , \beta_2 = 0.999
  • バッチノーマライゼーション
    • 初めと終わりを除いたすべてのConv, deconv 層に適用
  • decay regularization coefficient : 10^{-4}
  • ミニバッチ : 200
  • GPU : Nvidia Titan X Pascal GPU
  • CPU : Intel(R) Xeon(R) E5-1620 CPU

CAR to CAR

3Dの車のモデルに対してカメラの位置を15°ずつずらした画像に関して評価を行った結果を下記に示す。

※入力の角度に対して、教師データは中心で反転させた画像(鏡イメージ)となっている模様。

f:id:nogawanogawa:20181110194249j:plain

横軸が入力の画像の回転角、縦軸が変換後の画像の回転角を表している。 左から、単純なGAN(a)とreconstruction lossを使用したGAN(b)、そして提案手法のDiscoGAN(c)に関する結果を示している。

(a)(b)については赤の点がいくつかのクラスタを形成してしまっている事がわかる。 このことから、ほとんどの入力画像は同じ出力画像に収束してしまっている事がわかり、mode collapseが発生している事がわかる。

一方提案手法では、角度に対して均等に生成画像の角度が分布している。このことから角度の関係性を正しく認識できていると考えられる。

FACE to FACE

次に、上と同様に人間の顔でも同様の評価を行った。 結果を下記に示す。

f:id:nogawanogawa:20181110194257j:plain

(a)が入力画像、(b)が単純なGAN、(c)がreconstruction lossを使用したGAN、そして(d)が提案手法のDiscoGANに関する結果を示している。 こちらも車の画像と同様に、提案手法によるmode collapleが回避できている。

多数の特徴が共通する場合の変換

selebAデータセットを使用して、人間の顔が特徴を維持したまま変換できるかを検証した結果を下記に示す。

f:id:nogawanogawa:20181110194308j:plain

概ね特徴は維持できていることが確認できる。

完全に別のものを角度だけ共通に持つ場合の変換

椅子から車への変換、車から顔への変換の結果を下記に示す。

f:id:nogawanogawa:20181110194321j:plain

画像は角度を維持して変換されて生成されており、関係性を十分に認識できている。

EDGES to PHOTOS

線画から写真への変換の結果を下記に示す。

f:id:nogawanogawa:20181110194329j:plain

写真の色が無数に取りうる状況であっても変換できている事がわかる。

HANDBAG to SHOES, SHOES to HANDBAG

冒頭の画像が結果となっている。 概ね正しく変換できている。

結論

ドメイン間の関係性を自律的に学習するDiscoGANを提案した。これにより明示的に画像にラベルを付与することなく学習が可能になる。 DiscoGANによって構成度の画像生成が可能であることが評価によって示された。 今後の方針の一つとしては、Conditional系のGANとの組み合わせが考えられる。

感想

CycleGANとそっくり。

tsunotsuno.hatenablog.com

(個人的メモ)CycleGANとの違い:Lossのとり方

DiscoGANはこんな感じに別々に考える。

d(G_{BA} \circ G_{AB}(x_{A}), x_{A})

d(G_{AB} \circ G_{BA}(x_{B}), x_{B})

CycleGANはこんな感じに一括して考える。

f:id:nogawanogawa:20180402171021j:plain