Edited at

五十嵐響子画伯AIを作る その2 ディープラーニングでオムライスを生成する


はじめに

前回は五十嵐響子さんの絵のクラスを判別してみましたが、ちゃんとできてるのかよくわかりませんでした。今回は五十嵐響子さんの絵を生成してみようと思います。


DCGANについて

DCGANはGANという生成ネットワークの一種です。

オリジナルのGANはDense層なのに対し、DCGANではConv層を使うことでよりよい画像が生成できるようになっています。


実装

今回は前回用いた6つの画像をすべて使います。ラベルは無視して響子さんが描いたような絵を出すことができるようにすることを目的とします1

とはいえ、kerasでGANを実装したgithubリポジトリがあるので、それを使います。MNISTに合わせたデータに加工してそのまま使います。

keras-GAN

load_dataという関数を定義してMNISTの代わりに響子さんのサンプル画像を読ませます。


追記箇所

def load_data():

imgdir = "kyoko\\"

xx = []
for myimgfile in glob(imgdir + "*.png"):
myimg = cv2.imread(myimgfile,0)
# ret,myimg = cv2.threshold(myimg,170,255,cv2.THRESH_BINARY_INV)
myimg = cv2.resize(myimg,(28,28))
xx.append(myimg)
xx = np.array(xx)

return xx



結果

段々それっぽい画像が生成できるようになってきます。

10エポック

mnist_10.png

500エポック

mnist_500.png

1000エポック

mnist_1000.png

1500エポック

mnist_1500.png

1990エポック

mnist_1990.png

それっぽいというよりほぼ元データみたいなのが多いです。データが少ないので仕方がないです。


損失関数

上がGenerator、下がDiscriminatorです。

loss_1990.png


おまけ

ケチャップオムライス風の色にしてみました。

out.png

響子さんならこんな絵を描きそうな気がする。





  1. クラスラベルを指定して生成できるGANもあります(conditionalGAN)。