1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tensorflow で Deep Dream

Last updated at Posted at 2019-08-19

今回の内容

Deep Learning で Deep Dream してみようという企画。
Deep Dreamってなんですか?という意見があると思いますが手っ取り早く説明すると "画像合成" です。
もう少し具体的に言うと以下のような感じです。
(1)事前に合成に使用する画像とその特徴を学習させる
(2)その後,適当な画像を入力する
(3)その画像内に事前学習させた画像と似た特徴を持つ部分に対して画像を合成する
#間違ってたら訂正お願いします。

今回は事前学習した Deep Neural Network を利用する内容になっています。
前置きはこれぐらいにして早速説明に入りましょう。

元ネタたち

以下の動画とソースコードの内容に沿って取り組んでいきます。

実行環境

  • MacOS 10.13.1
  • Python 3.6.5:Anaconda-Navigatorと一緒にインストールされる?
  • Anaconda-Navigator 1.8.7 でインストールするパッケージたち
  • spyder:デバッグしながら実行する場合。硬派な方は Terminal で実行を!
  • TensorFlow 1.10.0:言わずと知れた Machine Learning のパッケージ
  • numpy 1.15.2:データの取り込みやTensorFlowの計算時に利用
  • pillow 6.1.0(PIL):画像ファイルを取り込むときに利用
  • matplotlib 3.1.0:処理結果を表示するのに利用

ソースコード

修正したソースコードはこちら

ざっくり修正点は以下の通り。細かな修正に関しては完全に私の趣味の世界なので興味があれば確認してみてください。

Step 0 の追加

deep_dream.py
# Step 0 - download image file from repository of 'https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/tutorials/deepdream'
    image_url = 'https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/pilatus800.jpg?raw=true'
    image_name = 'pilatus800.jpg'
#    local_image_file = os.path.join(data_dir, image_name)
    if not os.path.exists(image_name):
        # Download
        model_url = urllib.request.urlretrieve(image_url, image_name)

上記のようにTensorFlow本家のレポジトリから画像ファイルをダウンロードする処理を追加しました。
自分で用意した画像ファイルを使いたいときは,上記内容をすべて削除して以下の記述だけにしてください。

deep_dream.py
    image_name = 'あなたが利用したい画像ファイルのパス'

Step 1 の修正

deep_dream.py
        # Download
        #model_url = urllib.request.urlopen(url, local_zip_file)
        model_url = urllib.request.urlretrieve(url, local_zip_file)

ファイルをダウンロードする処理が間違っていたので修正。

Deep Dream の実行

(1)Anaconda-Navigator で spyder を起動
スクリーンショット 2019-08-19 21.49.09.png

(2)ソースコードをコピペ
スクリーンショット 2019-08-19 21.56.28.png

(3)実行する
右下のスペースに以下のような画像が,ちょっとずつ変化しながら3〜4個ぐらい表示されるはず。
スクリーンショット 2019-08-19 22.00.53.png
Terminal で実行すると画像が大きめなので確認しやすい。
スクリーンショット 2019-08-19 21.59.45.png

終わりに

今回は既存の学習結果を利用した体験を提供しました。
合成結果をみるとナイトメアな様相でトラウマを植え付けられるかもしれませんが,こんなことできるんですよ,ということを知っておくことが大切です。

自然言語に触れていた身としては Doc2Vec とか Word2Vec とか textgen を試したいところですが,GPUがないので気の遠くなるような時間との戦いです。
# 一回試して2日ほったらかしても終わってなかった。。。

ということでブルジョアな方は是非TensorFlow対応のGPUを購入するか,冴えてる方は Theano とか Chainer とかを試してみてください。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?