Android
Design
iOS
機械学習
DeepLearning

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

More than 1 year has passed since last update.

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用の発表資料なので、割愛しました