LightWeight GANによる存在しない遊戯王カードの生成

LightWeight GANによる存在しない遊戯王カードの生成

遊戯王カードのイラストをディープラーニングにより学習

以前「Progressive GAN」を利用して遊戯王カードのイラストを自動生成する実験を行った。

それよりも優秀らしい「LightWeight GAN」というものを知ったので今回は「LightWeight GAN」による遊戯王カードの自動生成を試す。

定量評価はできないため主観だが「LightWeight GAN」の方がきれいな画像の生まれる割合が多いように感じた。
加えて、GitHubリポジトリのテストコードが便利で簡単なので「LightWeight GAN」を薦める。

以降、Windows10による環境構築と実験結果を記す。

1. LightWeight GANの環境構築

1.1. ダウンロード

GitHubリポジトリをダウンロード。
https://github.com/lucidrains/lightweight-gan

1.2. インストール

Anacondaが既にインストールされている前提。
入ってなければ以下を参考にして入れる。

以下のように「lightweightgan」という名前の環境を作り、必要なライブラリをインストール。

1
2
3
4
conda create -n lightweightgan python=3.6
conda activate lightweightgan
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
pip install lightweight-gan

これだけで終わり。

2. LightWeight GANの使い方

2.1. 画像準備

GitHubからダウンロードしてきたフォルダに移動。

新しいフォルダを作り事前に用意した画像生成の学習用画像を置く。
フォルダ名を「/data/monster_images」とした。

こんな感じ。



2.2. 学習

用意した画像を学習して画像生成モデルを作る。

GitHubからダウンロードしてきたフォルダに移動。
最初に作った「lightweightgan」の環境で以下のコマンドを実行すると学習が始まる。

1
lightweight_gan --data ./data/monster_images --image-size 512

–dataで学習用画像フォルダを設定。
–image-sizeで出力する画像サイズを設定。

上記のコマンドでは設定していないが
–nameで学習結果を保存するフォルダ名を設定できる。
設定しなかった場合はデフォルトの”default”という名前になる。

また、–num-train-stepsで学習するステップ数を設定でき、設定しないと200000になる。
これはあまりにも学習時間が長かったので途中で強制終了した。
学習結果は1000ステップごとに保存されるので問題ない。

学習されたモデルはmodelsというフォルダの中に自動的に保存される。
また、自動生成された画像のサンプルがresultsというフォルダに保存される。



これを見ると、どのモデルがきれいに画像生成できているか分かるのでいい感じのものを選ぶ。

2.3. 画像生成

作成した学習モデルを使って画像生成を行う。

先ほどと同様に「lightweightgan」環境で、以下のコマンドを実行。

1
lightweight_gan --generate --num-image-tiles 500 --load-from 88

学習時に–nameを設定していた場合は、今回も同じ名前を設定する必要がある。

–num-image-tilesは生成する画像の枚数。
–load-fromは使用したいモデルの番号、resultsを見て決める。



するとこのように画像が500枚生成される。
と思ったら倍の1000枚生成されている、理由はわからない。

3. 結果

前回試した「Progressive GAN」よりも崩壊した画像が少なく平均レベルが高い。

以前の実験で作った自動生成した遊戯王テキストと合成すると以下のようになる。
遊戯王カードっぽい。



テキストの自動生成はこれ。

4. Deep Yu Gi Oh!

自動生成した遊戯王カードを表示するWEBアプリを作った。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×