GDDによるwaifu2xとffmpegを使用したアニメ映像高画質化
初めて技術的なブログを書きます。よろしくお願いします。
はじめに
最近一部の界隈でGDD :ごちうさ駆動開発(Gochiusa-Driven Development) が盛んに行われてきていますね。アニメ2期が決定し[1]、私のエンジニアリングの意欲が増したのもごちうさのおかげだと思ってます。また、機械学習の分野では、ハードウェアの性能向上や新技術の発達・ライブラリが充実してきて、5月19日には、イラスト等の圧縮画像を元画像に復元する"waifu2x" [2]が登場しました。waifu2xは、機械学習技術を用いて、画像圧縮時のノイズを除去し、高画質な画像を復元するツールです。このツールの入力は画像のみですが、動画を連番画像に変換することで低画質な動画を高品質な動画に復元できるのではないかと考え、スクリプトを書いてみました。
システム構成
waifu2xはCUDAによるGPU並列演算や深層学習ライブラリを用いるため、NVIDIAのGPUが必要です。今回はAmazonが提供しているAWS (Amazon Web Service)のスポットインスタンスを試しに使ってみました。
- Instance: g2.2xlarge
- AMI-ID: ami-75f01931
ソフトウェア構成
- 上記の共有マシンイメージにはffmpegが入っていないので、インストールします
sudo add-apt-repository ppa:mc3man/trusty-media sudo apt-get update sudo apt-get install ffmpeg
手順
- waifu2xのディレクトリに移動
cd /home/ubuntu/waifu2x
- シェルスクリプトを書く
vim gochiusa.sh chmod +x gochiusa.sh
#!/bin/sh if [ $# -ne 4 ] then echo "Usage: ./gochiusa.sh imput output start_time(s) duration(s)" exit 1 fi mkdir frameimage rm -r -f frameimage/* mkdir trans rm -r -f trans/* ffmpeg -i $1 -y -t $4 -ss $3 trimmovie.mp4 ffmpeg -i trimmovie.mp4 -vcodec mjpeg -qscale 1 -qmin 1 -qmax 1 frameimage/snap%09d.jpg ffmpeg -i $1 -y -acodec copy -map 0:1 -t $4 -ss $3 trimsound.mp4 cnt=1 for filename in frameimage/*.jpg do printf "%d times...\n" $cnt if [ $((cnt%5)) -eq 0 ] then printf "please wait...\n" wait fi th waifu2x.lua -m noise_scale -noise_level 2 -i $filename -o "trans/trans"$(printf "%09d" $cnt)".jpg" & cnt=$((cnt+1)) done ffmpeg -y -f image2 -framerate 29.97 -start_number 1 -i trans/trans%09d.jpg -i trimsound.mp4 -vcodec libx264 -qscale:v 0 $2
- 実行例
./gochiusa.sh input.mp4 output.mp4 0 60
引数は、入力動画ファイル名、出力動画ファイル名、開始時間(秒)、長さ(秒)です。フレームレートは決め打ち。
"th〜"の行がwaifu2xに画像を入力して高画質画像を保存するコマンドです。この辺りで画像5つ毎に処理を回しています。というのも、一枚の処理に約2.5秒、5つ毎の処理を同時に実行して約10秒なので少し効率が良いからです。あまり多くの画像を一度に処理しようとしたらエラーが出たので5つにしてあります。
実験
実際に画質があまり良くないアニメ映像を用いて、waifu2xで高画質になるか実験しました。
使用した動画は「ご注文はうさぎですか?1話」。
www.nicovideo.jp
まず、元動画のサムネイル。(比較のため2倍にしてある)
そして復元後のサムネイル。
まとめ
1秒30フレーム、画像5つで10秒として30分のアニメを復元するのにおよそ30時間かかるが、動画の画質向上はできました。ぜひ好きな動画で試してみてください。きっと心がぴょんぴょんします。
AWSの料金などや画質を考えるとBDを買ったほうがよいですね。。。
[1] ご注文はうさぎですか?公式サイト
http://www.gochiusa.com/news/hp0001/index02670000.html
[2] waifu2x
https://github.com/nagadomi/waifu2x