今回兼ねてからやってみたかった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の画像生成です。
なんか1多くない?
多分過学習です。
やっぱりAIも0-9の中だと単純な棒一本の1が生成しやすいのでしょうね。
次に、celebAです。
セレブの画像を生成していきます。
アメリカのセレブなのでお金持ちじゃなくて有名人の意味だと思います。
まだなんなのかわかりません。