やりたいことは、カテゴリ毎に画像生成すればさらに詳細化した画像生成や段階的な分類が可能になるだろうということである。
今回は、詳細化された画像生成をやってみた。
イメージは以下のとおり、入力画像をカテゴライズ、その結果に基づいてカテゴリーごとに学習済みの専用のEncoder-Decoderを使って画像生成する。
以下はCifar10のグレー画像化して、彩色した例(カテゴライズもグレー画像で実施)
※上からグレー画像、次が0-9の専用Encoder-Decoderで生成、三段目が10個を一つのEncoder-Decoderで学習したもので生成、最後の段が元のカラー画像
やったこと
・MNISTについてカテゴリー毎Encoder-Decoderで画像生成
・Cifar10についてカテゴリー毎Encoder-Decoderで画像生成
・MNISTについてカテゴリー毎Encoder-Decoderで画像生成
コードは以下のコードで学習します。
・VAE/keras_category.py
そして、上記の話は学習済のモデルを利用して以下のコードで実施します。
・VAE/keras_category_intelligence.py
その結果以下の画像が得られました
十分な精度で得られました。
・Cifar10についてカテゴリー毎Encoder-Decoderで画像生成
Cifar10に同様なことを実施しました。
通常の画像生成はMNISTと同様にかなりの精度で画像生成できたので、ここでは、特に彩色について説明します。
コードは以下のコードで学習します。
・VAE/keras_category_cifar10_color.py
そして、上記の話は学習済のモデルを利用して以下のコードで実施します。
・VAE/keras_category_intelligence_cifar10_color.py
結果は上に示したとおりとなりました。
ところが、同じように0だけ学習したEncoder-Decoderで画像生成したものが以下のとおりになりました。
並びは上記の場合と同じですが、カテゴリは全て0となっています。もちろん、カテゴライズは正しくカテゴライズしていますが、生成のEncoder-Decoderは0のAirplaneのみを学習したものです。
それでも、比較するとわかりますが、第二段目と三段目を比較すると、ほとんど同じような画像を生成しており、ほぼ着色できているのが分かります。
これは以前DLの記憶で見た現象と同じような現象だろうと思います。
あの現象はLatentSpaceの次元が大きくなると学習していないカテゴリも生成できるようになりました。
これ以上の内容は今回は不明なのでさらに追及していきたいと思います。
まとめ
・分類に基づいてカテゴリ毎学習済のEncoder-Decoderで画像生成をやってみた
・カラー化も実施できた
・0のみの学習済Encoder-Decoderで、0-9のすべてを学習したEncoder-Decoderと同じ彩色結果となった
・Encoder-DecoderのLatentSpaceの役割をさらに追及しようと思う
・もう少し複座なものでDLの記憶やロジックを含むニューロを考えてみよう