「Real-ESRGAN」を使ってMadVR・Anime4Kの遙か上のアップスケール効果を得る(検証・導入)

ソフトウェア

手間を惜しまず高画質なアニメを見たいと言う方は是非「Real-ESRGAN」というフリーソフトを使うべきでしょう。これにより、MadVR・Anime4Kなどとは比べ物にならないほど綺麗な画質のアニメを視聴することができるようになります。

Real-ESRGANとは

簡単に言うと……

Real-ESRGANとは、再圧縮が繰り返されることによる画像の劣化プロセスを解析し、逆方向に適用することで解像度をアップスケールするというディープラーニング系の超高解像度モデル制作エンジンです。

技術的な解説はこのへん(外部サイト)を参照してください。

前処理の改良でここまで伸びる! 実世界での画像劣化とのギャップに注目した超解像モデル「Real-ESRGAN」紹介

https://github.com/xinntao/Real-ESRGAN

注意点

MadVR・Anime4Kとは違い、リアルタイムではありません。

そのため、本当に高画質で見たいと思ったものだけを厳選してアップスケール対象とすることを勧めます。

時間と相応の性能のGPUが必要となるものです。

でも効果はリアルタイムアップスケールを遙かに凌駕するものです。それは約束します。

Real-ESRGANの導入

導入できる環境

  • Windows 10以降のOS
  • 何らかのGPUを搭載(内蔵グラフィックスも可)

私はWindows 11で、Radeeon 6600XTを使いました。

導入方法&使用方法

スクリプト制作者:https://wp.nippombashi.net/archives/2524#comment-254

Real-ESRGANを用いてアップスケールするやり方は上記サイトにて紹介してあり、ここではそれを大幅に簡略化した手順のみを記しておきます。詳細などは当該サイトを参照してください。

まず、こちらからスクリプトをダウンロードのちZipファイルを解凍します。

手順1 「step1_extract.cmd」を使い動画を分解

「step1_extract.cmd」にアップスケールしたい動画をドラッグアンドドロップします。

「step1_extract.cmd」が起動し、自動的にその動画を「コマ1枚ずつを分離した画像」と「音声」に分解します。

Real-ESRGANは画像しかアップスケールできないことから、この手順が必要とされます。

画像と音声は「_temp-project」フォルダ内にそれぞれに出力されます。

こんな感じで、1コマずつ画像になっています。

手順2 「step2_up-scale_4x.cmd」を使い1コマずつアップスケール

「step2_up-scale_4x.cmd」をクリックするだけです。

自動的に1コマずつアップスケールされていきます。

これは出力された1コマ1コマの画像です。

このときGPUが7,80℃くらいになるので覚悟してください。

なお、アップスケール倍率は4倍に固定されています。

そしてデフォルトの設定ではアニメに最適化されたアルゴリズムが用いられるようになっているので変更は不要です。

手順3 「step3_merge_nvenc.cmd」でアップスケールした画像と音声を再び動画にする

「step3_merge_nvenc.cmd」を実行する前に右クリックして「編集」を選択します。

まずFPSを元の動画と同じにします。

基本24ですがずれると悲惨なのでご注意ください。

次にエンコード方式を使っているGPUに合わせて書き換えます。

自分のGPUがAMDの場合は、「hevc_nvenc」の箇所を「libx264」と書き換えておけばOKです。

nvidia製の方はそのまま書き換えなくてOK。

よく分からないときは下のコードをメモ帳にコピペして、「step3_merge_nvenc.cmd」として保存してください。

@echo off
@title Megre!
cd /d "%~dp0"

:: Frame Rate
set FPS=24

set time2=%time: =0%
set dttime=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%

ffmpeg64\ffmpeg.exe -framerate %FPS% -hide_banner -strict -2 -i "%~dp0\_temp-project\image-frames2x\image-%%09d.png" -i "%~dp0\_temp-project\streams\audio.wav" -r %FPS% -qp 0 -vcodec libx264 -acodec aac -b:a 192k -y "%~dp0\FINAL_%dttime%.mp4"

timeout /t 5
exit 0

保存してメモ帳を閉じて「step3_merge_nvenc.cmd」を実行すればアップスケールされた動画が出力されます

多分下の画像の通りの場所に出ます。

この異様に巨大なmp4ファイルがアップスケール後の動画です。

無事出力された方はお疲れさまでした!これで完了です。

Real-ESRGANでアップスケールしてみる

効果をAnime4Kや元ファイルと比較

2022年春期に2期が放送される(布教)ので「まちカドまぞく」を2分だけアップスケールしてみました。

VS 元ファイル

両者を並べてスクショしたので多少のずれはご容赦ください。

まちカドまぞく(アニメ)

左が元のフレームで、右がReal-ESRGANを用いたものです。

あまりにも明らかで鮮烈なまでの高画質化!!!

この結果が出力されたときは震えました。
ちょっと色味変わってるのが惜しいですねぇ!

VS「Anime4K・MadVR適用時」

まちカドまぞく(アニメ)

Anime4Kとこの設定のMadVRを適用した状態で再生した際のスクショと比較しています。

左がMadVR&Anime4K、右がReal-ESRGANを用いたものです。

かかる時間

手持ちのRX6600XTでは、およそ24枚のコマのアップスケールが行われています。

1分で24FPSの動画を1秒分アップスケールできる計算になります。

たいていのアニメが24FPSのため、30分=1800秒のアニメのアップスケールに1800分=30時間かかる計算です。(その後エンコードに元動画の10倍程度の時間がかかります。30分アニメなら5時間)

6600XTクラスでは実用的とは言いがたいものの、数分のニコ動のMADやアニメのOP・ED程度ならギリいけそうですね。

ちなみに実行中のタスクマネージャーの様子はこんな感じで、「Compute0」を酷使されている様子がうかがえます。「Compute1」はマイニングとかでよく使われるリソースですが関連性があるのでしょうか。多分、Computeは単純な計算を膨大な量こなすとき用の部分っぽいですね。

RTX3090とかだと遙かに早く終わるんだろうな……

必要なストレージ容量

Real-ESRGANを用いて動画をアップスケールすると、一度1コマずつ画像として取り出し、それらを1枚ずつアップスケールし、再び動画にするという手順が実行されます。

そのため、大容量の一時ファイルが生成されます。

これは元ファイルのひとコマひとコマ

例えば以下の条件の動画をアップスケールしてみました。

  • 元サイズ1280x720
  • 1分58秒(118秒)
  • 24FPS

このとき、118秒x24FPS=2832コマのはずです。実際は2コマ多いので1分58.083秒ようですがまあ誤差です。

実際にHD画質の画像が2834枚でおよそ1.85GBになりました。

そしてアップスケール後の画像ひとコマひとコマも同量(2834枚)生成されます。

これは4K画質で、16.6GBほどでした。

併せて20GB程度が必要ということです。ちなみに上記条件の元動画はh264形式で30MBほど。

つまり元ファイルの700倍程度の一時ファイルを見越しておきましょう。

まとめ Real-ESRGANはリソースさえあれば至高のパフォーマンス

まちカドまぞく(アニメ)
  • 6600XTクラスでは、1分で24コマ=1秒分の処理が限界
  • 元動画のファイルサイズの約700倍の大きさの一時ファイルが生成される
  • 効果はリアルタイムアップスケールの比ではない!!!

GPUスペックと記憶媒体の寿命などと相談しつつやってみてください!

下の記事で紹介しているのは現実的なリアルタイム処理の高解像度化です。併せてごらん下さい!

タイトルとURLをコピーしました