TensorFlow で Deep Dream 入門
Deep Dream は人工知能が見る悪夢として有名ですが、実際には ConvNet (CNN) の特質を知るにはとても良い題材です。現在では様々な改良版が考案されていますが、オリジナルの Deep Dream は 2015 年 6 月に以下の Google Reseach Blog で公表されています :
Google Research Blog : Inceptionism: Going Deeper into Neural Networks
そして Caffe 実装が公開されていましたが、既に TensorFlow でも実装されています。
本記事では、最初に Caffe 実装による Deep Dream を試した後、TensorFlow 実装の Deep Dream の生成画像と比較してみます。
モデルはお馴染み GoogLeNet Inception モデルを ImageNet でトレーニングされたものが使用されています。Caffe 実装と TensorFlow 実装の生成画像の違いは本質的には別個にトレーニングされているためです。
Caffe による Deep Dream の実験
最初は ImageNet の城 (synset: Castle) 画像を元に、15 epochs トレーニング中の画像の変化を見てみます。
以下は最終生成画像です :
元画像 (ImageNet より) | 1 epoch |
![]() | ![]() |
5 epochs | 10 epochs |
![]() | ![]() |
続いて、以下の元画像をベースに生成してみます。いずれも 5 epochs トレーニングしました :
![]() |
![]() |
![]() | ![]() |
Caffe 実装で利用しているモデルの場合、とにかく犬が現出する印象です。
(確認はしていませんが)ImageNet の画像に犬の画像が多いのかもしれません :
以下の画像では、車輪が想起されているようです :
TensorFlow 実装との比較
上で Caffe 実装で試した元画像を入力として TensorFlow 実装で試してみました。
冒頭にも書きましたが、別個に事前トレーニングをしているために生成画像が異なっています。
また、Flower Dream と呼称される生成画像も併せて掲載しておきます :
以上