画像生成の最近流行り、DCGANを使ってみました。
これをポケモンで学習させれば、いい感じの新しいポケモン作れるのでないか、と思ってやってみました。
今回はTensorflowで実装された
DCGAN-tensorflow [ https://github.com/carpedm20/DCGAN-tensorflow ]
を使ってみました。

[追記]
既に試されている方がいらしたらしいです。
http://bohemia.hatenablog.com/entry/2016/08/13/132314
こちらではポケGOの画像から生成したようです。

インストール

Tensorflowがインストールされていれば、git cloneで取るだけです。
Tensorflowインストールはこちら
https://qiita.com/nagayosi/items/7ecd9ef446d255c7d866

サンプルデータ取得

デモ学習で使うデータ Mnist と セレブ(CelebA) をダウンロードします。

python download.py mnist celebA

デモ学習

Mnistの学習は下記らしいです。

python main.py --dataset mnist --input_height=28 --output_height=28 --train

CelebAの学習は下記らしいです。

python main.py --dataset celebA --input_height=108 --train --crop

オリジナル学習

自分で容易したデータでの学習方法です。

学習データの位置

dataディレクトリの中に、学習データを格納するディレクトリを作ります(今回はSampleという名前)。

$DCGAN-tensorflow --- data --- Sample --- data1.jpg
                                       |- data2.jpg ...

学習のコマンド

学習するには下記コマンドで行えます。

python main.py --train --dataset Sample --input_height 120 --output_height 120 --crop

--train で学習フラグを立てます。
--dataset の後に学習データを保存したディレクトリの名前をつけます。
--input_height の後に入力画像の縦幅をつけます。(多分、Discriminator)
--output_height の後に出力画像の縦幅をつけます。(こっちが多分Generator)
--crop は学習画像の中心から切り抜く、ということらしいです。

引数は他にも色々ありました。
詳しくはmain.pyのflagsという部分にありました。

ポケモンで学習させた

ポケモンの画像で学習させてみました。
https://kamigame.jp/%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3USUM/%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3/%E8%89%B2%E9%81%95%E3%81%84%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3%E4%B8%80%E8%A6%A7.html
こちらのサイトから画像を拝借しました。
容易したのは、カントー151匹のイロチありで、全部で302データです。

image.png

学習結果

2018.4.7(土)
Macbook AirのCPUでやらせた結果、100epochに31228秒(8時間)かかってしまいました。
これからは研究室のGPUを乱用するしかないです。

各パラメータは以下の通り、これ以外はデフォ値です。

--input_height: 120
--output_height: 120
--epoch: 100
--learning_rate: 0.0001
--crop

各エポックでの途中結果はこんな感じでした。
回数が進むとなぜか色が変わるんですよね笑
一応形っぽいものはできてきている感じですね。

  • 25epoch
  • 50epoch
  • 75epoch
  • 100epoch

もっと頑張りたいですね。
せめて、ポケモンの形はだしたい。。

<考察>
おそらくポケモンの画像だと値の分散が大きいのが、問題だと思います。
MNISTや人の顔だと、画像にある程度ベースの形があるのですが、ポケモンだと形、色などがバラバラすぎて対応しきれないのかもしれません。

学習結果v2!

2018.4.9(月)
前回より色々変えて試してみました。
今回はGPUを使ったので、前回よりゴリ押しでできました
各パラメータは以下の通り、これ以外はデフォ値です。

--input_height: 120
--output_height: 120
--epoch: 1000
--learning_rate: 0.0001

各エポックでの成果はこんな感じです!

  • 25epoch
  • 50epoch
  • 75epoch
  • 100epoch
  • 200epoch
  • 300epoch
  • 400epoch
  • 500epoch
  • 600epoch
  • 700epoch
  • 800epoch
  • 900epoch
  • 1000epoch

こんな感じです。

<考察>
200epochまでは、”形”を学習しているのでしょう。
色に関しては各epochで、一色にしかなっていませんが、形が段々できている印象です。
300epochくらいから、漸く”色”の学習ができているようです。
400epochくらいからポケモンっぽくなってますね。

前回より”ポケモンっぽい”画像になったかと思います。
まだ、画像が鮮明にならないのは、やはりポケモンの色・形の分散が大きいので、ネットワークが対応しきれてないのかもしれません。
ネットワークのアーキテクチャをいじれるようになれば、更にポケモンにできるのかもしれません。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.