Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
122
Help us understand the problem. What is going on with this article?
@shu223

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

自前学習データで試す

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

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

122
Help us understand the problem. What is going on with this article?
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
shu223
フリーランスiOSエンジニア 著書:『iOS×BLE Core Bluetooth プログラミング』『Metal入門』『実践ARKit』『Depth in Depth』『iOSアプリ開発 達人のレシピ100』他 GitHubの累計スター数24,000超
engineerlife
技術力をベースに人生を謳歌する人たちのコミュニティです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
122
Help us understand the problem. What is going on with this article?