ディープラーニングの動きが手軽に試せるようになって、ソフトウェアエンジニアは遊びに困らないですね。Googleのディープドリームはものすごく気持ち悪い絵を生みだす、LSDでぶっ飛んだ世界をみるだけだったけど、名画のスタイルを学ばせて写真から絵を描く「Neural Style」はちょっと楽しい。

実際にやってみた結果はこんな感じ。何気ないネコの写真を、山口素絢、クロードモネ、Bochaton EMMANUELLE、それぞれの画風を学ばせて描かせたもの。個人的にはサイケデリックな最後の絵がかなり好き。
ns1

Neural Style


Wiredの記事「どんな写真も「巨匠の名画」風に変換するアルゴリズム」にもあるように、ゴッホやムンクのスタイルを自分の写真にあてはめることができるアルゴリズム。

論文は「A Neural Algorithm of Artistic Style - A Deep Neural Network that creates artistic images of high perceptual quality」で、実装もgithubで公開されている。

The system uses neural representations to separate and recombine content and style of arbitrary images, providing a neural algorithm for the creation of artistic images.

畳み込みニューラルネットワークによって、絵画のコンテンツとスタイルを分離することができる、というところがこのアルゴリズムのポイント。早速、EC2で動かしてみた。(gistにも手順まとめておいた

AWS EC2でNeural Styleの環境構築


EC2でGPUインスタンスを立てる。例によって、g2.2xlargeでCUDAを使う。環境構築ができているAMIを配布してくれている方がいるので、ami-ffba7b94からインスタンスを作成する。(インスタンス作成ウィザード

いつも通りubuntuにログイン
$ ssh -i yourpemkey.pem ubuntu@ec2-public-dns-name

アップデートしておく。
$ sudo apt-get update
$ sudo apt-get upgrade

そのままではcudnnがR1になっているようなので、R2にアップデートしておく。
$ cd cudnn-6.5-linux-x64-R2-rc1
$ sudo cp lib* /usr/local/cuda/lib64/
$ sudo cp cudnn.h /usr/local/cuda/include/

モジュールをインストール
$ luarocks install image
$ luarocks install loadcaffe
$ luarocks install torch

Neural-styleとモデルを準備する
$ git clone https://github.com/jcjohnson/neural-style
$ cd neural-style
$ sh models/download_models.sh

これで完了。AMIのお陰で、10分くらいで出来上がるほど超簡単。実行コマンドは、
$ th neural_style.lua -num_iterations 2000 -style_image style.jpg -content_image image.jpg -image_size 400 -backend cudnn

で、イテレーションが繰り返されて画像が出力される。

色んな絵画の画風で試してみる


どういう動きをするのか、いくつか試してみると、スタイル画像からPhotoshopでいうブラシのような感じで写真にあてはめていくイメージ。それっぽいよね、という絵になる。あくまでスタイルを分離して、新しい写真にあてはめることが整合性のとれたレベルで実現できる感じ。当然だが、新しい芸術を生みだせるわけではない。

イテレーション回数2000で、サイズを400pxくらいにしておくと、1画像当たり20分くらいで完成する。

伊藤若冲「樹花鳥獣図屏風」
out001
伊藤若冲「紫陽花双鶏図」
out002
伊藤若冲は確かにスタイル画像を使ってはいるんだけど、結局のところ、伊藤若冲の繊細綿密な表現ができるわけではないのでイマイチ。

月岡芳年「郵便報知新聞」
out003
歌川国芳「甲越勇将伝」
out004
江戸時代の絵なのに血みどろ現代風イラスト、といった意外性が大人気の芳年と国芳。これはなかなか雰囲気出てる。

クロード・モネ「散歩、日傘をさす女性」
out006
山口素絢「朝顔狗子図」
out007
元々のスタイル画像が上手く生きるタイプで、雰囲気はそのまま。

Bochaton EMMANUELLE「clin d'oeil à Picasso」
out005
ポップアート的なのもイケるとは。