ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

「fast-style-transfer」でYouTubeにアップロードしたいろいろな動画の画風を変換してみる。

今回は「fast style transfer」という画風変換手法を用いて、過去にYouTubeにアップロードしたスプラトゥーン2のプレイ動画やダンス動画について、画像のスタイルの変換を試みてみました。

///////////もくじ////////////

「fast-style-transfer」とは

「fast-style-transfer」はGANというニューラルネットワークを用いて、ある画像をインプットすると特定の画像の画風に合わせた画像を出力するといった技術です。

  • tensorflowで実装
  • neural-transferの改良版

どんなことができるか?

今回は学習済みのモデルを使用させていただいて、過去にYouTubeにアップロードした動画に対していろんな画風で変換処理をかけてみました。

実行環境

spec
OS CentOS Linux release 7.9.2009 (Core)
Python 3.6.12

実行環境構築

周辺ツールインストール

NVIDIAドライバ

www.nvidia.co.jp

$ sudo bash NVIDIA-Linux-x86_64-384.111.run

確認は以下のコマンドです。

$ nvidia-smi
CUDA

docs.nvidia.com
developer.nvidia.com
インストール後に以下のコマンドで確認します。

$ nvcc -V
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