今回は「fast style transfer」という画風変換手法を用いて、過去にYouTubeにアップロードしたスプラトゥーン2のプレイ動画やダンス動画について、画像のスタイルの変換を試みてみました。
///////////もくじ////////////
「fast-style-transfer」とは
「fast-style-transfer」はGANというニューラルネットワークを用いて、ある画像をインプットすると特定の画像の画風に合わせた画像を出力するといった技術です。
- tensorflowで実装
- neural-transferの改良版
実行環境
spec | |
---|---|
OS | CentOS Linux release 7.9.2009 (Core) |
Python | 3.6.12 |
実行環境構築
周辺ツールインストール
cuDNN
会員登録してログインする必要があります。
developer.nvidia.com
git
$ sudo yum install git
ffmpeg/ffmpeg-devel
$ sudo yum -y install ffmpeg ffmpeg-devel
「fast-style-transfer」セットアップ
「fast-style-transfer」クローン
$ git clone https://github.com/lengstrom/fast-style-transfer.git $ cd fast-style-transfer
「Python v3.6.12」インストール
$ pyenv install 3.6.12 $ pyenv local 3.6.12 $ python -V Python 3.6.12
Pythonのライブラリインストール
作業用ディレクトリ作成
$ mkdir inputs $ mkdir inputs/images $ mkdir inputs/movies $ mkdir results $ mkdir results/images $ mkdir results/movies $ mkdir checkpoints
ckptファイル取得
ダウンロード
変換したいスタイル様式のファイルを以下のURLからダウンロードします。
drive.google.com
「fast-style-transfer」のディレクトリにアップロード
「~/fast-style-transfer/checkpoints/」にダウンロードしてきたckptファイルを配置します。
$ ls ~/fast-style-transfer/checkpoints/ la_muse.ckpt rain_princess.ckpt scream.ckpt udnie.ckpt wave.ckpt wreck.ckpt
ダンス動画アップロード
変換させたい動画を「inputs/movies」に配置します。
$ ls ~/fast-style-transfer/inputs/movies/ input.mp4
変換処理
動画を画像に変換
ffmpegコマンドで動画を画像に変換します。
$ ffmpeg -i inputs/movies/{{input}}.mp4 -s 640x360 -t 166 -r 30 -f image2 inputs/images/%06d.jpg
画風変換
python evaluate.py --checkpoint checkpoints/scream.ckpt \ --in-path inputs/images \ --out-path results/images \ --allow-different-dimensions
画像を動画に変換
ffmpeg -r 30 -i results/images/%06d.jpg -vcodec libx264 -pix_fmt yuv420p -r 60 results/movies/{{out}}.mp4