Torchのneural-styleで画風を変換してみた

torch

NVIDIAのMachine LearningリポジトリでUbuntu 14.04にインストールしたTorch(torch7-nv)で、画風を変換するneural-styleを試してみました。

スポンサーリンク

Torch

NVIDIA DIGITS 3.0をインストールしてみた
NVIDIAからDeep Learning用トレーニングシステムのDIGITS 3.0がリリースされていたので、Ubuntu 14.04にインストールしてみました。

上の記事でインストールされ、下の記事でアップデートされたTorch(torch7-nv 0.9.98-1+cuda7.5)を使用します。

CUDA 7.5とcuDNN 5に対応したCaffeがキターッ!
RCの取れたcuDNN 5がリリースされました。また、インストールしていたNVIDIAフォークのCaffe「NVcaffe」がアップデートされて、CUDA 7.5とcuDNN 5に対応しました。

neural-styleによる画風変換

今回は、こちら(https://github.com/jcjohnson/neural-style)の実装を試してみます。
サンプル画像が多いので、結構楽しめます。

準備

GitHubからneural-styleをcloneします。

$ cd
$ git clone https://github.com/jcjohnson/neural-style

ディレクトリを移動します。

$ cd ~/neural-style

neural-styleによる画風変換の準備のため、download_models.shを実行します。

$ sh models/download_models.sh

modelsディレクトリにVGGモデル(VGG_ILSVRC_19_layers.caffemodel等)がダウンロードされます。

また、以下のコマンドを実行し、loadcaffeをインストールします。

$ sudo luarocks install loadcaffe

ポメラニアン × ゴッホの『ひまわり』

Chainerのchainer-goghで画風を変換してみた
Ubuntu 14.04にインストール(/アップグレード)したChainer 1.7.1で、chainer-goghを試してみました。
MXNetのNeural Artで画風を変換してみた
DMLCが開発しているDeep Learningフレームワーク「MXNet」をUbuntu 14.04にインストールして、画風を変換するNeural Artを試してみました。

上の2つの記事と同じコンテンツ画像(content.jpg)とスタイル画像(style.png)をneural-styleディレクトリにコピーします。

input1

以下のコマンドを実行し、画風を変換します。

$ th neural_style.lua -content_image content.jpg -style_image style.png -output_image output.jpg -gpu 0

オプションの使い方は、-content-imageオプションでコンテンツ画像、-style-imageオプションでスタイル画像、-output_imageオプションで出力画像のファイル名とフォーマットを指定できます。chainer-goghのモデルにVGGを使用する場合、VRAM 4GBであれば、変換画像のサイズを-wオプションで256に変更する必要がありましたが、Torchのneural-styleでは、デフォルトの512で処理が出来ています

私のPC環境(GTX 960)では、約6分で、繰り返し回数がデフォルトの1000になって処理が終了し、以下の画像(サイズ:512×512)が生成されました。

torch-neural-style-output

繰り返し100回毎に保存された変換画像(output_*.jpg)を1枚の画像に合成すると、以下のようになります。

torch-neural-style-montage

なお、3種類ソフトで画風変換された画像を横並びにしてみると以下の図(左から、Chainerのchainer-gogh、MXNetのNeural Art、Torchのneural-style)のようになります。

torch-neural-style-montage2

まとめ

NVIDIAのMachine LearningリポジトリでUbuntu 14.04にインストールしたTorchで、画風を変換するneural-styleを試してみたところ、約6分でサイズ:512×512の画像に変換できました。