DCGANでundertaleのアマルガムを作る試み

#**注意：この記事にはゲーム「Undertale」のネタバレが含まれています。**
~~7月10日までSteamサマーセールで382円なのでUndertaleをやろう！~~

環境
Windows10
Anaconda 2019.03
Tensorflow-gpu　1.14.0
CUDA 10.1 update1

##動機、目的
###undertaleのアマルガム
ゲーム「Undertale」にはアマルガムと呼ばれるモンスター群がいる。
ゲームに出てくるモンスターの一部分をつなぎ合わせたり混ぜ合わせたりしたもので、
「ぐちゃぐちゃ」という言葉がぴったりの形状をしている。
![1 (41).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/82612e64-9f1a-85f3-9f53-2804968b8363.jpeg)
こんなの。

###DCGAN
DCGANは流行りのディープラーニングを利用した画像生成手法の一つ。
[DCGAN-tensorflow github](https://github.com/carpedm20/DCGAN-tensorflow)
ソースコードが公開されており、データを用意して入力するだけで画像生成ができます。（チューンナップとかもできそう）
多くの方がアニメやゲームの画像で試されています。
（参考にさせていただきました。ありがとうございました！）
[GANについて概念から実装まで　～DCGANによるキルミーベイベー生成～](https://qiita.com/taku-buntu/items/0093a68bfae0b0ff879d)
[DCGANでポケモンとアイマスを作成したった](https://qiita.com/yoyoyo_/items/4df8d78b5118190bbcd2)

データが少ない状態で学習すると、過学習を起こしたり、名状しがたい画像が生成されるようです。

##この2つから
-Undertaleのモンスター画像でDCGANしたら新しいアマルガムが生成できるのでは？
-教師データを超少なくすることで名状しがたいぐちゃぐちゃが生まれる？
と考えた

#データセット
https://gamepedia.jp/undertale/archives/97
こちらからモンスター画像を拝借しました。
全50枚で動かそうとしたところ、
####「データ画像は最低64枚以上必要」
と言われたので、50枚をそれぞれ複製して100枚に（何か加工すべきなんだろうなと思うがひとまずこれで）

#結果
Epoch数は5000でやりました。

200Epoch
![train_00000200.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/67381f0d-7012-0ea0-de78-5f41702af92f.png)
ぐちゃぐちゃはしてますが、モンスター感が無い。

800Epoch
![train_00000800.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/ed7f009f-c006-32e0-e931-eafccf247f31.png)
よく見ると頭、胴、足のように分かれている？


1400Epoch
![train_00001400.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/e2332ca9-a1a4-af09-96bf-150ec32867cb.png)
過学習し始めたのか、「これあのモンスターそのものじゃん！」って画像が出てきた。


1600Epoch

![train_00001600.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/bb0bee01-a392-fcf5-d2fd-38db322aa720.png)

アマルガムのようなものができた。

2000Epoch、3000Epoch、4000Epoch
![train_00002000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/bfd661c6-8c5f-e0b8-3158-85ec7e0d4fcb.png)![train_00003000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/74ca5291-ce29-ebf8-4dce-692353bba8ea.png)![train_00004000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/a2a6f874-9842-4ce1-6297-6cc627a92574.png)

Epoch数上げても大きな変化が見られなかった地帯。

4600Epoch
![train_00004600.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/b6011514-c2aa-e64d-4aa4-1e9c6689cc8c.png)
4400Epochと4800Epochは上述の2000,3000,4000Epochのような画像だったが、4600だけ得体の知れない画像が生成されていた。何が起こったのだろうか。

5000Epoch
![train_00005000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/88bdd9ea-c89a-9e50-36db-bfd554caf237.png)
ノイズがすごい。


#結論
###アマルガムっぽいのは作れたのか？
それらしきものは作れたが、ノイズが結構乗っている
![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/73308323-9d48-8240-403d-026592c4968d.png)![名称未設定s.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/2203d4d2-7ae5-73bd-f590-6310c46f900b.png)![s.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269845/ad712892-72bf-16f1-0756-84faa40d4179.png)

#改善案
-出力をグレースケールにする
-教師データをゲームのスクリーンショットから取ってくる（モンスターは細かく動いている→頑張ればもっと多くのデータとれる）
-パラメータのチューニング（これはぐちゃぐちゃなものを作りたい目的なのでチューニングを狂わしたらどうなるのかな？）