2018年1月11日 更新

Python + tensorflow でGANを試してみた.

今回兼ねてからやってみたかったGANを触ってみました。実際に画像が生成されていく様は楽しかったです。

299 view お気に入り 0

今回兼ねてからやってみたかったGANを触ってみました。 とは言っても、githubにあったコードを実行するだけですが、実際に画像が生成されていく様は楽しかったです。

GANとは

GANは敵対的生成ネットワークGenerative Adversarial Networksの略です。

ざっくりやっていることを説明して行きます。
generatorとdiscriminatorというものがあり、generatorは与えられたデータと同じようなものを生成しようとし、discriminatorはgeneratorによって作られたデータが本物かどうかを判定します。
これを繰り返すうちに与えられたデータそっくりのものができます。
しかもこれは与えられたデータの一部を切りはりしているわけではないのです。
非常に面白くこれからに期待ができます。

詳しい解説はこちらをみてください。

実際にやってみた

では、実際に試してみましょう。
このリンクに書いてある通りにやれば問題ないですが、一応手順を書きます。

クローンかダウンロードをして、その後

cd DCGAN-tensorflow-master/

そのディレクトリに入り

python download.py mnist celebA

でmnistとcelebAのデータ両方をダウンロードするか

python download.py mnist

のように片方だけダウンロードするかします。

その後はtrainingをさせます。

python main.py –dataset mnist –input_height=28 –output_height=28 –train
python main.py –dataset celebA –input_height=108 –train –crop

いい結果が出るまでにはかなり時間がかかります。
Macbook proでそれっぽいのが5,6時間、割といいのが12時間ぐらいかかったような記憶があります。

これでどんどん画像ができてきます。

このgithubのコードで自前の画像を学習させられるそうですがエラーがたくさん出て私はできませんでした。
画像のサイズに問題があったりしたと思います。

MNISTの画像生成です。

 (4450)

始まったばかりの状態です。
まだなんなのかわかりません。
 (4451)

しばらくするとなんか出てきた感があります。
 (4452)

なんか3と5っぽいものはちらほら
 (4453)

だんだん鮮明になってきた
 (4454)

数字だー!!
 (4455)

それからしばらく続けた結果

なんか1多くない?
多分過学習です。
やっぱりAIも0-9の中だと単純な棒一本の1が生成しやすいのでしょうね。

次に、celebAです。
セレブの画像を生成していきます。
アメリカのセレブなのでお金持ちじゃなくて有名人の意味だと思います。

 (4457)

なんかボヤけたものがいっぱい
 (4458)

ちょっと見えてきた
 (4459)

顔っぽくなってきた
31 件

関連する記事 こんな記事も人気です♪

Kaggleで使われている略語リスト

Kaggleで使われている略語リスト

機械学習のサイトKaggle で使われている略語をまとめました. 画像は[https://static1.squarespace.com/static/58a3826fd2b857e5fe09f025/58ac6a226b8f5b3bdce84c5a/58d04a9246c3c4a6bd5ab664/1490045642866/Kaggle+Workshop.png?format=1500w]から引用
Takumi Ihara | 433 view
5秒でOpenCVのインストールする (Windows, Mac, Linux)

5秒でOpenCVのインストールする (Windows, Mac, Linux)

pipでOpenCVが利用可能になり、今までの面倒な処理が一切不要になりました。
北村 旭 | 503 view
Deep learningで画像認識⑩〜Kerasで畳み込みニューラルネットワーク vol.6〜

Deep learningで画像認識⑩〜Kerasで畳み込みニューラルネットワーク vol.6〜

U-Netと呼ばれるU字型の畳み込みニューラルネットワークを用いて、MRI画像から肝臓の領域抽出を行ってみます。
木田智士 | 2,556 view
KaggleチュートリアルTitanicで上位3%以内に入るには。(0.82297)

KaggleチュートリアルTitanicで上位3%以内に入るには。(0.82297)

まだ機械学習の勉強を初めて4ヶ月ですが、色々やってみた結果、約7000人のうち200位ぐらいの0.82297という記録を出せたので、色々振り返りながら書いていきます。
Takumi Ihara | 4,679 view

この記事のキーワード

この記事のキュレーター

Takumi Ihara Takumi Ihara