shimopino / papers-challenge

Paper Reading List I have already read
30 stars 2 forks source link

Mode Seeking Generative Adversarial Networks for Diverse Image Synthesis #207

Open shimopino opened 4 years ago

shimopino commented 4 years ago

論文へのリンク

[arXiv:1903.05628] Mode Seeking Generative Adversarial Networks for Diverse Image Synthesis

著者・所属機関

Qi Mao, Hsin-Ying Lee, Hung-Yu Tseng, Siwei Ma, Ming-Hsuan Yang

投稿日時(YYYY-MM-DD)

2019-05-13

1. どんなもの?

潜在ベクトルのある領域から特定のモードの画像しか生成されないモード崩壊に対処するために、2つの潜在ベクトルとそれらに対応する出力画像が与えられた場合、潜在ベクトル間の距離に対する、出力画像間の距離の比率を最大化させる正則化手法 Mode Seeking Regularization を提案した。

2. 先行研究と比べてどこがすごいの?

cGANでは、条件にクラス情報やテキスト情報、画像を使用することで様々な応用が可能である。

条件付き生成タスクは、1つの入力に対して複数の出力が対応しており、車のクラス情報を使用して画像生成を行えば、様々な車の画像が生成される可能性がある。そこでガウス分布からサンプリングした潜在ベクトルをクラス情報と使用することで、大まかな内容をクラス情報を従いながら、画像にノイズを導入することで画像に変動を加えることができる。

しかしcGANには、単一あるいは少数のモードからしかデータを生成することができないモード崩壊という現象が知られている。

モード崩壊に対する対策は大きく2つ存在する。

  1. Divergenceや最適化手法を変える
    • WGAN, LSGAN, Unrolled-GAN, et
  2. 追加のネットワークを導入する
    • Coupled-GAN, et

本研究では、モード崩壊を回避するために、様々なタスクに適用可能な正則化手法 Mode Seeking Regularization を提案している。

image

本手法では、2つの潜在ベクトルとそれらに対応する出力画像が与えられた場合、潜在ベクトル間の距離に対する、出力画像間の距離の比率を最大化させる。

これにより、Generatorは学習中に異なる画像を生成するように促進され、結果としてTargetの分布を探索することが可能となり、異なるモードからサンプルを生成できるようになると期待される。

実験では、多様性評価だけでは実データ分布と生成分布が類似性を有しているか保証することはできないため、評価指標として Number of Statistically-Different Bins (NDB) と Jensen-Shannon Divergence (JSD) を採用している。

3. 技術や手法の"キモ"はどこにある?

潜在空間Zからサンプリングした潜在ベクトルと、それに対応する画像の空間Iを考えた際、モード崩壊とは潜在空間中で距離の近い潜在ベクトルから、同じモードの画像が生成されてしまう。

image

そこで潜在ベクトル間の距離と、対応する出力画像間の距離の比率を最大化させることを考える。

image

これでGeneratorは画像空間Iを探索することが可能となり、マイナーなモードから画像を生成できる可能性が向上する。反対にDiscriminatorはこうしたマイナーモードからの画像に対して識別を行う必要が出てくる。

本手法は、条件付き画像生成タスクやText2Imageタスクに単純に組み込むことが可能である。

image

あとはこの損失関数を、通常の敵対的損失関数に追加すればいい。

image

4. どうやって有効だと検証した?

4.1 評価指標

NDBとJSDはモード崩壊具合を評価するために使用する。

まず実データをK最近傍を使用して異なるビンにクラスタリングする。その後で生成画像を最も近いクラスタに割り当て、NDBかJSDを使用してビンの比率から実データ分布と生成分布の類似性を評価する。

4.2 Conditioned on Class Label

CIFAR10を使用してDCGANにクラス情報から条件付き生成を行い、本手法の有効性を評価した。結果からはモード崩壊を軽減できていることがわかる。

image

image

4.3 Conditioned on Image

次に画像変換タスクにおいてPix2PixとDRITを使用して本手法の有効性を評価した。

本手法では、追加のEncoderを導入しているBicyckeGANと同様の多様性を生成できていることがわかる。

image

評価指標を見ても、Pix2Pixを大きく上回る性能を発揮できていることがわかる。

image

Unpairedな画像変換タスクに関しても、すべてのデータセットに対して本手法が既存手法を上回る性能を発揮していることがわかる。

image

また実データ分布のクラスタに割り当てられたビンを見てみても、本手法により特定のモードに集中するのではなく、データセット全体に渡って画像を生成できることがわかる。

image

実際に生成された画像を見てみても、より多様性のある画像を生成できていることがわかる。

image

4.4 Conditioned on Text

Text2Imageタスクにおいて、StackGANを使用して本手法の有効性を評価した。ほほとんどの指標において既存手法を上回る性能を発揮していることがわかる。

image

生成された画像を見てみても、背景やポーズや角度など、より多様性のある画像を生成できていることがわかる。

image

4.5 Interpolation of Latent Space in MSGANs

潜在ベクトル間を線形補間した場合の出力画像を見ると、本手法によりよりスムーズに画像を生成できていることがわかる。

image

5. 議論はあるか?

shimopino commented 4 years ago

https://github.com/HelenMao/MSGAN

shimopino commented 4 years ago

他の損失関数は最小化を行っているため、Mode Seeking Lossに関しては逆数を最小化させるようにしている。

noise_1 = torch.randn((batch_size, nz), device=device)
noise_2 = torch.randn((batch_size, nz), device=device)

fake_images_1 = model(noise_1)
fake_images_2 = model(noise_2)

lz = torch.mean(torch.abs(fake_images_2 - fake_images_1)) / 
     torch.mean(torch.abs(noise_2 - noise_1))

eps = 1 * 1e-5
loss_lz = 1 / (lz + eps)