Deep LearningのGANで打線組んでみた

はじめに

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

シェアする

フォローする