LoginSignup
151
120

More than 3 years have passed since last update.

Deep LearningのGANで打線組んでみた【画像生成】

Last updated at Posted at 2019-02-07

はじめに

Deep Learningの基礎を学習した人であればGAN(敵対的生成ネットワーク)をご存知でしょうか。Goodfellow氏によるGenerative Adversarial Nets(GAN)発表以来、特に画像生成の領域ではトレンドが続いています。

さて、毎月百以上の新しいGANが発表される昨今。2018年も終わった節目にこれまでに世界各国で生み出されてきた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の一種である。

スクリーンショット 2019-01-27 1.25.59.jpg

参考:ペアで2つのドメインの画像変換を学習させるpix2pix 
teaser_v3.jpg

2.ACGAN

Generatorに入力画像のclass情報を同時に与え、Discriminatorは、生成画像の真偽だけでなくclassの判別も行う。Imagenetの画像を対象に、通常のDCGANより高精度な画像生成を実現した。

スクリーンショット 2019-01-27 1.26.07.jpg
参考:Imagenetで学習した対象クラスの画像の生成
スクリーンショット 2019-02-07 22.34.38.jpg

3.InfoGAN

教師なし学習で、生成画像の中で利用価値の高い特徴を勝手に学習する。cGANのようにラベル付けをしたデータの準備は不要である。潜在変数と画像分布の相互情報量を評価関数に導入し、生成画像分布に大きな影響を与える潜在変数の獲得を目指す。

スクリーンショット 2019-01-27 1.26.12.jpg
参考:教師なし学習だが潜在変数を変化させることで回転角や幅を連続的に変化させられる。
スクリーンショット 2019-02-07 22.43.04.jpg

4.DCGAN

入力ノイズとして与えたベクトルzを元にDeepCNNを介して画像を生成する。Generatorが生成した画像の真偽の判別をDiscriminatorが行い、画像生成をターゲットとしたあらゆるGANのベースとなっている。

スクリーンショット 2019-01-27 1.25.51.jpg

[参考]DCGANによってゼロから生成されたベッドルーム画像
e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2018-07-08-23-08-27.png

5.StarGAN

複数のドメイン変換を単一のGeneratorとDiscriminatorで学習することができる。CycleGANとACGANを組み合わせた考え方で、G(x,c)→yを複数のドメインラベルのcでできるように学習する。ACGANで用いられるDomain Classification LossとCycleGANのReconstruction Lossを損失関数として導入する。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f35313637332f36356235666435312d336532632d383864352d326132372d6264386262386165353565662e706e67.png
[参考]入力画像に対して任意のラベル特徴を反映させて出力できる
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f35313637332f38356332383737642d376438372d633165662d393235382d3862343563333734653431612e706e67.png

6.WGAN

GANの学習の安定性を向上させるため、Wasserstein距離を導入。従来のJensen-Shannon Divergence(JSD)を指標とした場合、勾配消失問題が発生する。JSDの代わりにWasserstein距離を用いることで高速化と学習の安定が期待できる。

スクリーンショット 2019-01-27 1.56.22.jpg

7.LSGAN

GANの課題である勾配消失、泥沼であるmode collapseを回避するために目的関数を工夫。従来のsigmoidクロスエントロピー誤差ではなく、二乗誤差を用いることで学習の安定を図ることができる。
スクリーンショット 2019-01-27 1.56.29.jpg
参考:生成画像の比較
スクリーンショット 2019-02-07 22.56.27.jpg

8.SAGAN

GANの父Goodfellowも共著者に含まれる。画像全体の中で関連が強い領域を重視するSef-attention機構をネットワーク内に導入し、畳込みでは受容野が限られるという弱点を克服した。
スクリーンショット 2019-02-07 22.49.29.jpg

[参考]attention map の可視化
スクリーンショット 2019-01-27 1.49.11.jpg

9.CycleGAN

「ウマ」↔「シマウマ」のように画像のドメインを変換することができるGAN。従来のように1体1で対応するペア画像を学習することなく、2つのドメイン分布間のマッピングを自動で学習することができる。X→YとY→Xという真逆の2つの変換器をサイクルで回しながら学習を進める。
スクリーンショット 2019-02-07 22.58.00.jpg

[参考]多様な2つのドメイン変換を実現
e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2018-07-08-14-49-53.png

さいごに

数百種類と発表されているGANの中から選りすぐりのラインナップとしました。毎年新たにおもしろいGANのアイデアが登場するのでまた違う記事もあげたいと思います。

ブログでも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

151
120
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
151
120