はじめに
Deep Learningの基礎を学習した人であればGAN(敵対的生成ネットワーク)をご存知でしょうか。Goodfellow氏によるGenerative Adversarial Nets(GAN)発表以来、特に画像生成の領域ではトレンドが続いています。画像を生成するGeneratorと画像の真偽を判別するDiscriminator。2つのネットワークは戦い続け、切磋琢磨します。
さて、毎月百以上の新しいGANが発表される昨今。2018年も終わった節目にこれまでに世界各国で生み出されてきたGANで打線を組んでみました。
p.s
ブログに載せても誰も読まなかったのでqiitaにも同じ記事を投稿しました。
Deep LearningのGANで打線組んでみた【画像生成】
打線発表
1(一) cGAN
2(遊) ACGAN
3(二) InfoGAN
4(中) DCGAN
5(右) starGAN
6(三) WGAN
7(左) LSGAN
8(捕) SAGAN
9(投) cycleGAN
解説
1.cGAN( Conditional GAN )
条件付きのGAN。入力する画像と共にラベル情報を追加することで、狙った条件の画像を生成できる。画像を条件として与えたpix2pixもcGANの一種である。
参考:pix2pix
2.ACGAN
Generatorに入力画像のclass情報を同時に与え、Discriminatorは、生成画像の真偽だけでなくclassの判別も行う。Imagenetの画像を対象に、通常のDCGANより高精度な画像生成を実現した。
3.InfoGAN
教師なし学習で、生成画像の中で利用価値の高い特徴を勝手に学習する。cGANのようにラベル付けをしたデータの準備は不要である。潜在変数と画像分布の相互情報量を評価関数に導入し、生成画像分布に大きな影響を与える潜在変数の獲得を目指す。
4.DCGAN
入力ノイズとして与えたベクトルzを元にDeepCNNを介して画像を生成する。Generatorが生成した画像の真偽の判別をDiscriminatorが行い、画像生成をターゲットとしたあらゆるGANのベースとなっている。
[参考]DCGANによってゼロから生成されたベッドルーム画像
5.StarGAN
複数のドメイン変換を単一のGeneratorとDiscriminatorで学習することができる。CycleGANとACGANを組み合わせた考え方で、G(x,c)→yを複数のドメインラベルのcでできるように学習する。ACGANで用いられるDomain Classification LossとCycleGANのReconstruction Lossを損失関数として導入する。
[参考]
6.WGAN
GANの学習の安定性を向上させるため、Wasserstein距離を導入。従来のJensen-Shannon Divergence(JSD)を指標とした場合、勾配消失問題が発生する。JSDの代わりにWasserstein距離を用いることで高速化と学習の安定が期待できる。
7.LSGAN
GANの課題である勾配消失、泥沼であるmode collapseを回避するために目的関数を工夫。従来のsigmoidクロスエントロピー誤差ではなく、二乗誤差を用いることで学習の安定を図ることができる。
8.SAGAN
GANの父Goodfellowも共著者に含まれる。画像全体の中で関連が強い領域を重視するSelf-attention機構をネットワーク内に導入し、畳込みでは受容野が限られるという弱点を克服した。
[参考]attention map の可視化
9.CycleGAN
「ウマ」↔「シマウマ」のように画像のドメインを変換することができるGAN。従来のように1体1で対応するペア画像を学習することなく、2つのドメイン分布間のマッピングを自動で学習することができる。X→YとY→Xという真逆の2つの変換器をサイクルで回しながら学習を進める。
[参考]多様な2つのドメイン変換の学習
さいごに
数百種類と発表されているGANの中から選りすぐりのラインナップとしました。毎年新たにおもしろいGANのアイデアが登場するので、適宜更新していきます。
打線に異議がある人はコメントを残してね!
おわり
参考
GAN model collections : https://github.com/hwalsuklee/tensorflow-generative-model-collections
The GAN zoo: https://github.com/hindupuravinash/the-gan-zoo
論文
GAN: https://arxiv.org/abs/1406.2661
cGAN: https://arxiv.org/abs/1411.1784
pix2pix: https://arxiv.org/abs/1611.07004
ACGAN: https://arxiv.org/abs/1610.09585
InfoGAN: https://arxiv.org/abs/1606.03657
DCGAN: https://arxiv.org/abs/1511.06434
StarGAN: https://arxiv.org/abs/1711.09020
SAGAN: https://arxiv.org/abs/1805.08318
LSGAN: https://arxiv.org/abs/1611.04076
WGAN: https://arxiv.org/abs/1701.07875
cycleGAN: https://arxiv.org/abs/1703.10593