Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

自前学習データで試す

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

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

shu223
フリーランスiOSエンジニア 著書:『iOS×BLE Core Bluetooth プログラミング』『Metal入門』『実践ARKit』『Depth in Depth』『iOSアプリ開発 達人のレシピ100』他 GitHubの累計スター数23,000超
http://shu223.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした