DeepLearning
Keras
GANs

DCGAN

Input,z(ランダムなベクター)からdiscriminator,D(画像がデータセットからかどうか判定)を騙すような画像を作る。GANは訓練が大変なため、Dropout, BatchNormalization, LeakyReLUの使用が必要。

論文:https://arxiv.org/abs/1511.06434

LAPGAN

低解像度な画像を生成するGANを訓練することはもっと簡単なとき、LAPGANは使用される。低解像度と高解像度の画像の差を学習し、画像を高解像度にする。訓練時、Generator,Gに低解像度の画像を入力し、低解像度と高解像度の画像の差を生成し、Discriminatorが本物か生成されたものか判定。

論文:https://arxiv.org/abs/1506.05751

Conditional GAN 

Conditional vector(ラベルや画像など)を入力と、Dropoutからのノイズで画像を生成する。通常のGANの訓練方法(大きな特徴を学習)に加え、PatchGAN、L1 loss(小さな特徴)を使う。Conditional vaectorと画像がペアであるデータセットが必要。

論文:
https://arxiv.org/abs/1611.07004
https://arxiv.org/abs/1411.1784

以下を参考にDCGAN、LAPGAN、Conditional GAN の実装
https://elix-tech.github.io/ja/2017/02/06/gan.html
https://qiita.com/miyamotok0105/items/8ed0a8943f5318e826e0

Cycle GAN

画像変換を行うためのGAN。画像AからB、BからAを生成するgenerator, G1, G2と画像が生成されたものか判定するdiscriminator, D1, D2を訓練しながら、G2(G1(A))がAに戻るように訓練(PatchGAN)。画像AとBがペアである必要はない。

https://qiita.com/itok_msi/items/b6b615bc28b1a720afd7

Conditional Cycle GAN

低解像度の画像とconditional vectorから高解像度な画像を生成するgenerator, G1と高解像度から低解像度の画像を生成するG2を使い、Cycle GANのように訓練する。Conditional vaectorと高解像度の画像はペアである必要がある。

Conditional Cycle GAN の実装
論文:https://arxiv.org/abs/1705.09966

Info GAN

ランダムな入力ベクターの一部(隠れ符号c)に意味を持たせるGAN。DCGANに画像から隠れ符号を推測するQを加える。Discreteな隠れ符号の場合、クロスエントロピーを使い、continuousな場合、gaussian lossを使う。教師なしで生成する画像を操作できる。

以下を参考にInfo GAN の実装
http://akmtn.hatenablog.com/entry/2017/05/29/204414
https://github.com/tdeboissiere/DeepLearningImplementations/blob/master/InfoGAN/src/model/train.py
論文:https://arxiv.org/abs/1606.03657