今回は前回の続きとして。DCGANを用いて上白石萌歌さんらしきものを生成してみました。
とりあえず、DCGANの簡単な説明をしていきます。
DCGANとは
参考にしたサイトは以下
はじめてのGAN
CNNといってもプーリングはしないで、その代わりストライド2の畳み込みをする。
最後の方で全結合をしないで、Global average poolingを用いる。これを用いることで過学習を防いでくれる。(パラメータがなくなるから)
Batch Normalizationを用いて学習をはやくしたり、過学習を防ぐ。
GeneratorではReLUとTanhを用いるが、DiscriminatorではLeaky ReLUを用いる。
データセットの用意
スクレイピングとOpenCV2を使いました。詳しくはこちら
実装してみる
以下を参考にしました(というかほぼコピペ....)
5ステップでできるPyTorch - DCGAN
Colabで動かした結果はこちら
このコードは画像サイズが$64\times64$しか許されていないが、他のサイズを用いたいなら、頑張って畳み込みの部分を逆算するとよい。ちなみにDiscriminatorではサイズは辺の長さが半分ずつになっている。
gifの作り方を覚えたので載せておく。
Colavでconvertを使うのには、事前に以下のコマンドを実行することが必要。
!apt-get update && apt-get install imagemagick
以下でgifが作れる。
!convert -layers optimize -loop 0 -delay 10 ./Generated_Image/*.jpg animation.gif
結果
GANの時よりは色合いもろもろを含めてまあ良くなったかなぁという感じ。
ただ、まだまだ求めてるものとは程遠い。
(gifを貼る際に参考にしたサイト)
Qiitaにgifアニメを投稿する僕が考える一番簡単な方法【GIPHY CAPTURE】
うーん、なんか下手な油絵みたいだなぁ。
まだまだ、俺の理想には遠いようだ。
チューニングをしたら良い感じのものができあがるのかなぁ。そもそもデータセットの質が悪いのかなぁ。まだGANの理解があまり足りていないので、もう少し理論の方を見ていきたい。
次回やることは未定ですが、ちょっとデータセットを改善したりGANの勉強をして、リベンジしたい。