五十嵐響子画伯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エポック

500エポック

1000エポック

1500エポック

1990エポック

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

損失関数

上がGenerator、下がDiscriminatorです。

おまけ

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

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


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