DCGAN は Deep Convolutional Generative Adversarial Networks の略で、超ざっくり言うと畳み込みニューラルネットワークを使って画像生成するアルゴリズムです。元論文以外に、日本語で噛み砕いて説明してくれている記事もたくさんあります。

これを使ってアイドルの顔画像を生成したり、イラストを生成したり、そういうことができるアレです。ググるとおもしろい事例がたくさん出てきます。

そんな「なんだかすごい」DCGAN、勝手に「使うのも難しそう」なイメージを持ってたのですが、TensorFlowを用いた実装が公開されてまして、

実はデモを試すだけであれば手順通りにコマンド実行するだけで簡単に実行できます。

以下手元で試した手順のメモです。(2017年5月更新)

データダウンロード

git cloneしてきて、ダウンロードスクリプトを実行します。

$ python download.py celebA

自分の環境では以下のようなエラーが出ました。

Traceback (most recent call last):
  File "download.py", line 20, in <module>
    from tqdm import tqdm
ImportError: No module named 'tqdm'

tqdmというモジュールがないそうなので、インストール。

$ pip install tqdm

再度 download.py を実行することでデータのダウンロードと解凍が始まります。

ちなみに上記コマンド例の引数にある celebA はセレブ顔生成デモ用のデータを指定するもので、手書き数字を生成するデモを試す場合は

$ python download.py mnist

とします。

学習

TensorFlowがアクティブな状態で、main.pyを実行するだけ。

(tensorflow)$ python main.py --dataset celebA --input_height=108 --train --crop

MNISTの場合は

(tensorflow)$ python main.py --dataset mnist --input_height=28 --output_height=28 --train

かなり時間がかかるのですが、samples フォルダに途中経過の生成サンプル画像を出力してくれるので、学習完了まで待たなくてもモデルが学習されていく様子を見ることができます。

train_00_0099_celeb.png

(CELEB, Epoch0, 100枚学習)

train_00_0498.png

(CELEB, Epoch0, 500枚学習)

train_00_1098.png

(CELEB, Epoch0, 1100枚学習)

train_01_0033.png

(CELEB, Epoch1)


train_00_0099.png

(MNIST, Epoch0)

train_01_0006.png

(MNIST, Epoch1)

train_06_0041.png

(MNIST, Epoch6)

train_08_0755.png

(MNIST, Epoch8)

学習が進む毎に画像生成の精度が向上していることがわかります。

テスト

学習完了したら、そのモデルを使用して次のように画像生成を実行できます。

$ python main.py --dataset mnist --input_height=28 --output_height=28
$ python main.py --dataset celebA --input_height=108 --crop

自前学習データで試す

こうなってくると自前データで試したくなります。別記事につづく(予定)

→ 試しました&書きました: ゲームアプリの「ドット絵」をディープラーニングで自動生成する

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