hijikitaroのブログ

しがないSIerとして、日々プロジェクトを管理し、システムを育て、日々お子を見守り育てる中での出来事や学びを淡々と書いています。

初めてのディープラーニング:DCGANを使って手書き数字を生成してみよう

前回GANの写経ブログをしたので、今回はDCGANの写経ブログ

本ブログのコードは、

https://github.com/HijikiTaro/DCGAN

に載せています。

DCGANを実装するきっかけ

GANについて調べると最初にGAN(シンプルなGAN?)を実装した後に、
DCGAN(CNNを利用したGAN)を実装したという流れが多いように感じたため、
自分もやってみようと思い、
DCGANを実装してみることに。

(これをすれば、画像生成にかなり近づくのではないかという気もしている・・・)

DCGANって何?

Deep Convolutional GAN

GANのGenerator, Discriminatorのモデル構造をCNNに変えたものらしい。
画像に適した畳み込みニューラルネットワーク(CNN)を利用することで、より精度のよい画像生成が実現できる的なことらしい。

下記が参考にしたブログ や記事

qiita.com 実装の参考にしたブログ(ほぼコピペしました)

qiita.com 潜在変数についてなにものかを説明してくれていて、概念としての理解の助けになりました。

ざっくり概要を書くと、

 Generator(レプリカ作成) vs Discriminator(本物or偽物判定)

 ↓

 Generator能力向上

 ↓

 本物そっくりのレプリカ作れる

という仕組みは、変えずに各AIの能力を画像認識に強くしてみたという感じ。

CNNについては、下記ブログでちょろっと確認したぐらい。

qiita.com

GANの実装

実装環境

Webブラウザのみで環境構築でき、無料でGPU利用できるので使用。

実装

実装に関してはすべて写経。勉強は写経からとよく言うので・・・

参考にしたソースからCNNのmodelとweightもコピーし、
それを利用するようにパスのみ修正すれば実行できた。

結果は以下。

f:id:hijikitaro:20190623190532p:plain
epoch0
f:id:hijikitaro:20190623190532p:plain
epoch99000

前回のGANよりもノイズが少なく数字がより分かりやすくなっていることがわかる。
これはより学習がCNNによってより進んだということなのだろうか。

ついでに、gifも作ったので載せてみる。

f:id:hijikitaro:20190623192548g:plain
mnist-gif

今後の課題

  • model構造?ネットワーク構造?
  • keras?TensolFlow?
  • CNN?
  • 実業務・ビジネスへの活用イメージ

とまだまだコードを微修正することすらできない・・・