今回は、Keras の Deep Dream を使って画像を悪夢の様に加工してみます
こんにちは cedro です。
最近、ディープラーニングのフレームワークの1つである、Keras が気になっています。
使い慣れた、SNNC と NNabla の組み合わせも良いのだけれど、サンプルプログラムの数があまりない。
一方 Keras は NNabla 同様簡略なコードで書け、しかもそこそこサンプルプログラムが充実しているので、浮気をしたくなって来た次第です(笑)。
今回は、Keras をインストールし、サンプルプログラム Deep Dream を使って、画像を悪夢のように加工してみたいと思います。
Deep Dream って何?
Deep Dream とは、学習済みの CNN(畳み込みニューラルネットワーク)を使って、画像加工をするプログラムです。
例えば、 ImageNet で訓練された学習済みのCNNモデルには、各フィルターに犬や鳥など様々な種類の画像の特徴量が大量に含まれています。
これを可視化して、合成することで、悪夢の様な画像が生成できるというわけです。
Keras をインストールします
前提条件として、anaconda がインストールしてある必要があります。
今回は、Keras が Python3.6に対応するようになったので、あえてanaconda に仮想環境は作らず、色々なライブラリーがもう既に入っている base(root)にインストールすることにします。
1 2 3 |
pip install --ignore-installed --upgrade tensorflow |
まず、バックエンドで動く、tensorflow をインストールします。
1 2 3 |
pip install keras |
そして、Keras をインストールします。たったこれだけでOKです。
一応、インストールされたか、確認します。
1 2 3 4 5 6 |
>>> import keras Using TensorFlow backend. >>> print(keras.__version__) 2.1.6 |
Python と入力し、対話形式にしてから
import keras
print(keras.__version__)
と入力し、バージョンNo.が返ってくればOKです。
なお、このバージョンNo.は覚えておいて下さい。
サンプルプログラムを準備します
Keras の Github からプログラムをダウンロードします。
この時、画面左肩にあるタブで、自分のインストールしたバージョンNo.を選択して下さい。
Keras はかなりの頻度でアップデートしますので、古いプログラムは、新しいバージョンのKerasでは動かなくなる場合がありますので、ご注意下さい。
適当なところに、dream フォルダーを作成し、deep_dream.pyと、その中に元画像を保存する picフォルダー、加工した画像を保存する results フォルダーを作成します。
1 2 3 |
python deep_dream.py pic/machu.jpg results/machu |
dream フォルダーに移動します。
python deep_dream.py 元画像フォルダー名 / 画像名 加工画像フォルダー名/ 画像名 と入力すれば、プログラムが動きます。
*加工画像名の拡張子は不要です。
初回のみ、CNNで学習した重みファイル(Inception V3 というCNNモデルのもの)をダウンロードしますが、2回目からは不要になります。
加工された画像は、results フォルダーの中に、指定した画像名.png で保存されます。
加工処理時間は、画像の大きさにもよりますが、私のMacBookAir で1〜2分程度でした。
色々動かしてみます
マチュピチュです。さあ、これを加工すると、どうなるか。
風景のいたるところに、色々な動物の顔の特徴が現れているますね。
今度は、渋谷のスクランブル交差点。さて、ここはどうなるか
やはり、同様に、ビルに動物の顔が。。。
水着のお嬢さんはどうなるのでしょうか。
ちょっと不気味ではありますが、全体的にKeras は結構上品な悪夢を作成しますね。
Youtube のお気に入りの動画 Cosmic eye の一部を静止画に切り出して、Deep Dream で加工し、GIF動画にしてみます。
Keras の画像加工が上品なので、悪夢と言うより、初めからこんな画像だったんじゃないかと思えるくらいこの画像にフィットして、まるでファンタジーの世界の様になりました。
これなら、実際にダイブしてもいいかなという気持ちになります(笑)。
では、また。
ご無沙汰しております。いよいよcedroさんもkerasの世界に入りましたね。
私も最近はKerasにはまっています。簡潔で使いやすいですね。
ネットワークの勉強にはSony N.N.Console. 実装を考えるときにはKerasです。
豆情報:開発者のF.Cholletさんの奥さんは日本人だそうです。その関係で日本語も堪能で、たまにTwitterには日本語で呟いています。彼の著書:Deep learning with Python これ名著です。自分の中でベスト1です。日本語訳も出たのでおすすめします。
Choe さんへ
お久しぶりです。
実は、Kerasに手を出したきっかけは、本屋でたまたま Deep learning with Python の日本語訳の本を見つけたからでした。あの本、本当に良いですね!
まだ、Kerasは、オリジナルのデータセットの読み込みさえ分からない段階ですが、少しづつ勉強したいと思います。
今後とも、よろしくお願いします。