TensorFlow で CNN AutoEncoder – CIFAR-10 –
先に MNIST を題材に Convolutional AutoEncoder を実装して視覚化してみました(TensorFlow で CNN AutoEncoder – MNIST –)が、CIFAR-10 でも試しておきます。
CIFAR-10 は機械学習定番のベンチマークとして使用され、RGB 32×32 ピクセル画像を 10 カテゴリーに渡って分類するものです : 飛行機、自動車、鳥、猫、鹿、犬、蛙、馬、船そしてトラック。
CIFAR-10 の詳細は TensorFlow : Tutorials : 畳込み ニューラルネットワーク を参照してください。
Convolutional AuoEncoder
AutoEncoder に使用するモデルは Encoder として畳込み層を3層使用する単純なものです。
そして decode された画像を元画像と比較し、encode された画像、特徴マップを可視化します。
最初にテスト・サンプル画像を頭から 40 枚まとめて、decode した画像群をトレーニング epochs 毎にリスト表示します :
【元サンプル画像】
【1 epoch】
1 epoch だと RGB の 3 チャネルが復元できていません :
【10 epochs】
10 epochs で肉眼では殆ど差異が分からなくなります :
【30 epochs】
念のため、30 epochs, 50 epochs トレーニングしました :
【50 epochs】
次に個別のサンプル画像を適当に選択して epochs 別に decoded 画像を比較してみます。
画像リストでも見て取れたように、1 epoch では 3 チャネルが復元できていませんが、10 epochs 以後はほぼ完全に復元できています :
元サンプル画像 | 1 epoch |
---|---|
![]() | ![]() |
10 epochs | 50 epochs |
![]() | ![]() |
以下は同じサンプル画像を encode した出力マップを epochs 別に表示したものです。
トレーニングが進むと特徴抽出が先鋭化します :
【Encode 画像 : 1 epoch】
【Encode 画像 : 10 epochs】
【Encode 画像: 50 epochs】
別例を幾つか掲示しておきます。
それぞれ、サンプル画像、50 epochs 後の decoded 画像、そして encoded 画像群です :
馬の全体画像 :
![]() | ![]() | |
犬の正面画像 :
![]() | ![]() | |
ステルス戦闘機の画像でしょうか、encoded 画像は分かりやすいです :
![]() | ![]() | |
馬の横顔 :
![]() | ![]() | |
以上