NVIDIAのMachine LearningリポジトリでUbuntu 14.04にインストールしたTorch(torch7-nv)で、画風を変換するneural-styleを試してみました。
Torch
上の記事でインストールされ、下の記事でアップデートされたTorch(torch7-nv 0.9.98-1+cuda7.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
ポメラニアン × ゴッホの『ひまわり』
上の2つの記事と同じコンテンツ画像(content.jpg)とスタイル画像(style.png)をneural-styleディレクトリにコピーします。
以下のコマンドを実行し、画風を変換します。
$ 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)が生成されました。
繰り返し100回毎に保存された変換画像(output_*.jpg)を1枚の画像に合成すると、以下のようになります。
なお、3種類ソフトで画風変換された画像を横並びにしてみると以下の図(左から、Chainerのchainer-gogh、MXNetのNeural Art、Torchのneural-style)のようになります。
まとめ
NVIDIAのMachine LearningリポジトリでUbuntu 14.04にインストールしたTorchで、画風を変換するneural-styleを試してみたところ、約6分でサイズ:512×512の画像に変換できました。