ゲームアプリの「ドット絵」をディープラーニングで自動生成する

  • 228
    いいね
  • 7
    コメント

monsters.png

Super Quest


DCGAN

  • Deep Convolutional Generative Adversarial Networks
  • ディープラーニングで画像(等)を自動生成する技術
  • データセットを学習して、データセットにありそうな画像を生成する


アイドルの顔画像生成

TensorFlowによるDCGANでアイドルの顔画像生成 - すぎゃーんメモ

  • アイドルの顔画像を大量に集めて学習 → アイドルっぽい顔を自動生成

sugyan.jpg


顔イラストの生成

Chainerで顔イラストの自動生成 - Qiita

  • 顔イラストを集めてきて学習 → 顔イラストを自動生成

illust.png


DCGAN-tensorflow

https://github.com/carpedm20/DCGAN-tensorflow

  • TensorFlowを用いた実装
  • READMEに書いてある通りに実行すれば簡単に試せる

試してみた

DCGAN-tensorflowで自動画像生成をお手軽に試す - Qiita

  • 付属のサンプルを実行
    • セレブ顔のデータセットをダウンロード → 学習
    • 「セレブっぽい顔」の画像を生成

train_01_1833.png


何か自前データを食わせてみたい


スーパークエスト

友人とプライベートでつくった放置系ゲーム

2017-05-24 07_46_50.gif


オリジナルのドット絵モンスター画像400枚

monsters.png


これをDCGANに食わせて、新しいドット絵モンスターを自動生成できないか?


ドット絵なので生成すべき画素数は少ない

これは結構いい題材なのでは・・・?

Screen Shot 2017-05-23 at 20.30.07.png


やってみた


データセットの前処理

  • ドットを1x1に正規化したりとか
  • 詳細は割愛

DCGAN-tensorflowに食わせる

  • 基本的にはフォルダに置いて指定するだけ
  • ちょっとハマりどころもあったけど詳細は割愛 1

途中経過を見ていきましょう


epoch1

train_01_0003.png


(なんかバグってる・・・?)


epoch3

train_03_0001.png


epoch5

train_04_0005.png


(なんか出てきた・・・!)


epoch16

train_16_0003.png


epoch24

train_24_0004.png


epoch29

train_29_0005.png


epoch49

train_49_0004.png


epoch133

train_133_0000.png


(何かになりつつある・・・!?)


epoch199

train_199_0004.png


ここらへんまで学習は順調に見えた



しかし・・・


epoch299

train_299_0004.png


epoch399

train_399_0004.png


epoch499

train_499_0004.png


epoch599

train_599_0004.png


同じような生成結果が目立つようになってきた

epoch699

train_699_0004.png


同じような生成結果が目立つようになってきた

epoch799

train_799_0004.png


どうやら過学習してるっぽい・・・


ここらへんでやっと気づきました


今回の試みは「失敗」ということに・・・


うまくいってた事例と何が違ったのか?


セレブ顔生成

学習データセット:セレブの顔 20万枚

  • いずれも目があって鼻があって口がある
  • 肌の色に多少の違いはあれど真っ赤や緑色はいない



アイドル顔画像生成

学習データセット:アイドル90人の顔画像からそれぞれ120件を抽出した合計10800件

  • 顔のみ
  • 90人に限定
  • 「日本人」かつ「女性」かつ「アイドル」に限定

→ 性別や国籍がバラバラな1万人の顔データではない


顔イラスト生成

データセット:約30万枚の顔イラスト

  • 顔だけに限定
  • 圧倒的な量

今回自分がやろうとしたことを考えてみる


Screen Shot 2017-05-24 at 8.40.35.png

  • 手足がある、尻尾がある、羽がある、顔しかない、武器を持ってる、etc...

Screen Shot 2017-05-24 at 8.45.24.png

  • 一つ目、三つ目、目なし、ザク目、兜で隠れている、etc...

Screen Shot 2017-05-24 at 8.52.18.png

  • 岩、花、木、火、本、etc...

多様過ぎる


それらを学習するにはデータが少なすぎる


せめてこうだったらよかったかもしれない

  • 顔だけ、とか領域を限定する
  • スライム系だけとか種族を限定する
  • そしてもっと大量にデータセットを用意する

まとめ

  • DCGANでゲームアプリのドット絵を自動生成しようとしてみた
  • 過学習っぽくなって全然ダメだった
  • 問題設定が悪かった & データ量が少なすぎた
  • 勉強になったのでやってよかった

  1. 本記事は5分のLT用の発表資料なので、割愛しました