chainer-fast-neuralstyleでビデオを名画風に変換してみた

chainer-artistic-videos
chainer-fast-neuralstyleでビデオを名画風に変換してみました。

ビデオを名画風に変換するといえば、以下の記事のartistic-videosが有名です。

ビデオを名画風に変換するartistic-videosを試してみた(実践編)
ビデオを名画風に変換するartistic-videosを試してみました。前回の記事で環境構築したartistic-videos(とTorch(torch7-nv))を使用します。

但し、このartistic-videos、使い方が少し難しいというのもあるのですが、複数イメージから構成されるビデオ(イメージシーケンス)を処理することになるので、やはり処理時間が気になります。

スポンサーリンク

chainer-fast-neuralstyleによるビデオ変換

上記の記事では、時間短縮のため、4フレーム毎にレンダリングしたイメージシーケンス(画像サイズ640×360)を更に画像サイズ320×180にリサイズしてartistic-videosの変換処理の入力画像としていましたが、変換処理が早くなる2枚目以降でも1画像当たりの1分位の時間が掛かっていました。

今回は、以下の記事のchainer-fast-neuralstyleを使って、イメージシーケンスの変換を行ってみました。

新しくなったchainer-fast-neuralstyleで高速に画風変換してみた
Real-Time Style TransferのChainerによる実装「chainer-fast-neuralstyle(7月19日版)」で、画像の高速スタイル変換を試してみました。

chainer-fast-neuralstyleをcloneしたディレクトリ(ここでは、~/github/chainer-fast-neuralstyle)に移動します。

$ cd ~/github/chainer-fast-neuralstyle

chainer-fast-neuralstyleでは、画像サイズ1024×768でも変換時間は約1秒だったので、画像サイズ640×360のまま、変換を行うことにしました。

以下のようなシェルスクリプト(seq_seur.sh)を用意します。

for i in $(seq 40 4 200);
do
  file1=$(printf input\/test%03d.jpg $i);\
  file2=$(printf seur\/test%03d.jpg $i);\
  python generate.py $file1 -m models/seurat.model -o $file2 -g 0;\
done

inputディレクトリにコピーしたファイル名:test040.jpg,test044.jpg,…,test200.jpg(41枚)を入力ファイルとするため、シェルスクリプトのiが画像ファイルのフレーム番号に、file1がディレクトリとファイル名に対応するようにしています。また、同じくシェルスクリプトのfile2が変換ファイルのディレクトリとファイル名に対応するようにしています。

次に、予め変換ファイルを出力するseurディレクトリを作成しておき、シェルスクリプト(seq_seur.sh)を実行します。

$ mkdir seur
$ sh seq_seur.sh

ほぼ1分で、画像サイズ640×360のイメージシーケンス41枚の画風変換が終了しました。

まとめ

chainer-fast-neuralstyleでビデオを名画風に変換してみました。artistic-videosでは、画像サイズ320×180のイメージシーケンス41枚の画風変換に40分以上掛かっていましたが、chainer-fast-neuralstyleでは、画像サイズ640×360のイメージシーケンス41枚の画風変換がほぼ1分で終了しました。