何をしたいかで有名どころのGANの種類、派生を整理

GANZOOとかって形でGANまとまっているけど、GANの名前を見せられても困るでしょってのが正直なところ。初めてGANを見る人はどういうことができるのかで見たいのだと思う.

https://github.com/hindupuravinash/the-gan-zoo

ので、何ができるのかベースでGANを以下に列挙していく.

GANは確かに多すぎるので、適宜更新してGANを追加していきます.

にしてもGANの増え方は凄まじいですよね… 以下画像は上記アドレスより引用.

cumulative_gans

間違っているかもしれないので、鵜呑みにはせずどういった技術かは改めて確認してください.

あと,分類はアカデミックなものでなく直感的にわかりやすい形で分類していますので、悪しからず.

ぼんやりとお探しのGANが決まっている方にそれを絞り込むThothnatorを作りました↓
どうぞ使ってみてください!

有名なGANのThothnator

ベースのシンプルなGAN

GAN

概要

適当なベクトルから学習した画像を生成. GeneratorとDiscriminatorの二つのネットワークを勝負させて学習.Generatorは画像を生成するネットワーク、Discriminatorは画像が生成されたものか本物の画像かを判定するネットワーク.
ノイズを入力としてGeneratorにて画像を生成し、本物の画像と混ぜながらDiscriminatorに本物かGeneratorで生成したものかを判定させる.

ネットワーク構造

スクリーンショット 2018-07-08 14.29.48.png

このときには全結合層ですべてのネットワークが組まれている.

結果

スクリーンショット 2018-07-08 14.23.20.png

論文

https://arxiv.org/abs/1406.2661

画像を変換するGAN

一対一に対応してそうな画像間を変換するGAN

pix2pix

概要

画像の対応のペアを入力としてそれがペアとして正しいかどうかを判定することで、汎用的な画像の変換を行う GANを作成. 通常のGANはベクトルを入力に一枚の画像を判定していたのに対して、pix2pixでは画像を入力に(条件に)出力画像を得て、入力画像と出力画像のペアを本物かどうか判定しているのが特徴.画像を条件に画像を生成しているため、ConditionalGANの一種.

ネットワーク構造

スクリーンショット 2018-07-08 14.32.12.png

結果

スクリーンショット 2018-07-08 14.37.25.png

論文

https://arxiv.org/abs/1611.07004

参考

pix2pix

pix2pixHD

概要

2048×1024の高解像な画像を生成することができるGAN. Generatorでは以下のように二段構造になっていて、1024×512を生成するGeneratorとそれを囲むようにしてさらに解像度を2倍にするGeneratorを用意しています.Residual Blockも挿入されていますね. Discriminatorも複数のスケールを用意し、さらにFeatureMatchingを行うなど学習の工夫も含めて実現しています.

ネットワーク構造

スクリーンショット 2018-07-08 14.46.52.png

結果

スクリーンショット 2018-07-08 14.45.55.png

論文

https://arxiv.org/abs/1711.11585

参考

pix2pixHD

画像のドメインを変換するGAN

CycleGAN

概要

二つの例えばりんごの画像とオレンジの画像を変換するように学習したGAN.特徴的なのは学習時に対応する画像が必要なく、あくまでりんごの画像群とオレンジの画像群があればよい.りんごと同じ姿勢の似たような対応の取れているオレンジの画像が必要ではないということ.
ネットワークがぐるぐる回った形になっており、オレンジ画像からりんご画像を生成して、そのりんご画像を再度オレンジ画像に戻したときの精度が高くなるように学習させる.そのため評価関数もそれらを考慮するように変更している.

ネットワーク構造

スクリーンショット 2018-07-08 14.50.34.png

結果

スクリーンショット 2018-07-08 14.49.53.png

論文

https://arxiv.org/abs/1703.10593

StarGAN

概要

CycleGANの複数対応版. 複数のドメイン間を学習するようにAとBのCycleGAN, BとCのCycleGANとやっていると果てしない.そのため、このGANでは一つのGANで複数のGAN間を行き来できるような学習を行っている.

ネットワーク構造

スクリーンショット 2018-07-08 14.54.24.png

結果

スクリーンショット 2018-07-08 14.53.57.png

論文

https://arxiv.org/abs/1711.09020

画像を生成するGAN

シンプルに画像を生成するGAN

DCGAN

概要

ネットワーク全体をCNNにしているGAN.他GANの学習を安定させるための手法についてもまとめている.(今はもう行わない、参考にならないものもあるかもだが). 与えられたベクトルから画像を生成できるようになり、学習後はそのベクトルの値を徐々に変えていくことで画像も次第に変わっていくのを確認できる.

ネットワーク構造

(GANと大きくは変わらず)

スクリーンショット 2018-07-08 14.29.48

スクリーンショット 2018-07-08 23.08.14.png

結果

スクリーンショット 2018-07-08 23.08.27.png

論文

https://arxiv.org/abs/1511.06434

PGGAN(Progressive Growing of GANs)

概要

GANの学習において段階的に高解像度の学習がするように学習の過程を工夫することで1024×1024という今までからの結果からは想像できない高解像度な画像を生成.
他様々な学習の工夫が論文には記されている.

ネットワーク構造

スクリーンショット 2018-07-08 14.47.32

結果

スクリーンショット 2018-07-08 14.48.14.png

論文

https://arxiv.org/abs/1710.10196

参考

PGGAN

指定した種類の画像を生成するGAN

ACGAN

概要

Discriminatorに真偽を判定させるだけでなく、クラスも当てるように訓練させてクラスを指定して画像生成することで、今までのDCGANより綺麗な画像生成を実現している.

ネットワーク構造

スクリーンショット 2018-07-08 14.41.00.png

結果

スクリーンショット 2018-07-08 23.24.01.png

論文

https://arxiv.org/abs/1610.09585

SAGAN

概要

Spectrum Normalizationを使用し、またSelf Attentionの機構も導入することで指定したクラスの画像生成で今まで最も高画質な生成を実現.局所的な情報だけでなくSelf Attentionで大域的な視野もネットワークが持つようになった.論文ではImageNetの画像で訓練した場合の結果を示している.学習の過程でGeneratorとDiscriminatorで別の学習率を加える等その他工夫に関しても言及.

ネットワーク構造

ネットワーク構造というよりAttention機構の構造

スクリーンショット 2018-07-08 23.48.28.png

結果

スクリーンショット 2018-07-08 23.40.30.png

論文

https://arxiv.org/abs/1805.08318

参考

SAGAN

自分で特徴や種類を調整できるGAN(もちろん上と同様にクラスもできる)

ConditionalGAN

概要

生成して欲しい画像のラベルも入力に与えることで指定した画像を生成できる.条件付き画像生成.

ネットワーク構造

スクリーンショット 2018-07-08 14.39.31.png

スクリーンショット 2018-07-08 23.15.51.png

結果

スクリーンショット 2018-07-08 23.16.22.png

論文

https://arxiv.org/abs/1411.1784

InfoGAN

概要

相互情報量を評価関数に導入することで、可能な限り画像の何らかの特徴と意味の取れた関係を持つように学習する.Gの入力にCがありDの出力にも同様のCがあるため、DはCが何かを当てられなくてはならない.zはDCGANの時と同様に通常のノイズでよい.特にCのパラメータにこちらで意味を与えることはしないが、例えばMNISTなら回転に対応したものや線の太さに対応したものが自ずと学習される.

ネットワーク構造

スクリーンショット 2018-07-08 14.40.33.png

結果

スクリーンショット 2018-07-08 23.19.33.png

論文

https://arxiv.org/abs/1606.03657

テキストから画像を生成するGAN

StackGAN

概要

pix2pixHDでもありましたが、StackGANも二段のGANで構成されています.一つ目は文章から画像を生成するネットワーク、二つ目は一つ目で大方書かれた画像を高精度にするGANです.かなり高精度に文章から画像を生成できていそうです.

ネットワーク構造

スクリーンショット 2018-07-08 14.58.47

結果

スクリーンショット 2018-07-08 14.59.28.png

論文

https://arxiv.org/abs/1612.03242

その他のGAN

画像の異常検出を試みるGAN

AnoGAN

概要

GANを学習させることでサンプルデータからの生成モデルを生成することができる.そのとき本物の正常入力画像が与えられたら、それを生成するGeneratorの入力z*がたぶん存在するはず.でももし近しいと見つけたz*を使ってG(z*)したものと入力画像を比較して差があったら異常、そうでなければ正常として異常検出をしている.

ネットワーク構造

DCGANと同様

結果

赤い部分が異常として出ている.

スクリーンショット 2018-07-08 23.10.58.png

論文

https://arxiv.org/abs/1703.05921

学習の方法を工夫する提案のGAN

WGAN

概要

GANの損失関数を設計し直して、JSダイバージェンスを使っていたところをWasserstein距離に変更することで、学習を高速化及び安定させることができた重要な論文. 大元のGANの作者も注目していてここでいろいろと議論していました. Discriminatorは通常のGANでは本物か偽物かの確率を出力していましたが、WGANではWasserstein距離を計算できるように学習していきます.

このサイトは英語ですが、丁寧にGANの問題点とWGANによる解決等がまとまっています.

ネットワーク構造

通常のGANと特に変わりません.

結果

GANはベッドルームがよく出てきますが、LSUN bedroomsのデータセットを用いているためです.

スクリーンショット 2018-07-08 22.30.42.png

論文

https://arxiv.org/abs/1701.07875

WGAN-gp

概要

WGANでのクリッピングの問題等を解決するために、評価関数にペナルティ項を加えることで、よりよいWGANの学習を提案した.

ネットワーク構造

通常のGANと変わりません.

結果

スクリーンショット 2018-07-08 22.47.38.png

論文

https://arxiv.org/abs/1704.00028

SNGAN

概要

Spectrum Normalizationの正則化を損失関数に加えてより学習の精度あげたGAN.上記の導入によって学習が安定する.計算を高速に行う方法に関しても提案.(そこまでGANに特化した話題でもない?)

ネットワーク構造

—-

結果

スクリーンショット 2018-07-08 23.25.01.png

論文

https://arxiv.org/abs/1802.05957

まだ上記に含められていないGAN

  • LAPGAN : 多段にしたGANで高解像度な画像を生成(比較的古い論文 )
  • 3DGAN    : 画像ではなく3次元のボクセルを生成 (http://3dgan.csail.mit.edu/)
  • DRAGAN : WGAN-gpをより表現力を高めるように改良 したGAN(https://arxiv.org/abs/1705.07215)
  • CartoonGAN: アニメ調に特化させているGAN

いずれまとめます.

About the author

Comments

  1. お世話になります。GANがガンガン出てきていますが馬が走ったり、中国人男性女性が話す動画がありますよね。あれはCycleGANが適用していると思いますが2019年5月現在では動画に対する適用事例としてはどのGAN手法が適していると思われますか?

コメントを残す