AIで静止画・動画を高画質化するフリーのアプリ(ブロックノイズ除去、高解像度化、フレーム補間)

2022年12月6日火曜日

AI

t f B! P L




AIによる動画の高画質化


GPUの計算力を使い、画像や動画をAIで高画質化するツールが有料・無料を含めて色々出ているのでフリーアプリを触ってみました。

1枚の画像ファイルの高画質化処理にかかる時間は(解像度にもよりますが)せいぜい数秒~数十秒程度で済むところ、動画ファイルをAIを使って高画質化しようとすると、GPUの性能によってはかなりの時間を要するのが難点ですね。

特にTensorコアを搭載していないGTX1xxx系世代のGPUだと処理が重くキツイので、RTXシリーズに乗り換えたくなります。

RTX4000シリーズも既に発売していますし、買い替えの検討時期にきているのかもしれません。
(円安も一時期に比べて落ち着いてきて、販売価格が手の届く範囲に下がってくれると嬉しい)



ROG-STRIX-RTX4080-O16G-GAMING


ブロックノイズ除去、高解像度化

静止画の場合、Real-ESRGANがお勧め

画像ファイルの高画質化ならReal-ESRGANが速度と画質面でいい感じに仕上げてくれました。

コマンドプロンプトでコマンドを入力して実行する形式となっているため、GUI版のツールを探して使うか、batファイルを書いてバッチ処理できるようにすると簡単です。
(GUI版は後述のWaifu2x-Extension-GUIなど)

私の場合は以下のようなバッチを書いて、2倍拡大、3倍拡大と使い分けをしています。

Lドライブの4kフォルダに処理したい画像ファイルを格納し、
Lドライブの4kxフォルダを出力先に指定する場合

2倍に拡大処理する場合のバッチファイルの中身
L:\Real-ESRGAN\realesrgan-ncnn-vulkan.exe -i L:\4k -o L:\4kx -s 2

3倍に拡大処理する場合のバッチファイルの中身
L:\Real-ESRGAN\realesrgan-ncnn-vulkan.exe -i L:\4k -o L:\4kx -s 3


こちらはノイズまみれの元画像

2倍で拡大してノイズ除去した結果
文字の周りの圧縮ノイズがきれいに消えています。


なお、書式の解説はコマンドプロンプトでrealesrgan-ncnn-vulkan.exeを実行すれば表示されます。

Usage: realesrgan-ncnn-vulkan -i infile -o outfile [options]...
  -h                   show this help
  -i input-path        input image path (jpg/png/webp) or directory
  -o output-path       output image path (jpg/png/webp) or directory
  -s scale             upscale ratio (can be 2, 3, 4. default=4)
  -t tile-size         tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu
  -m model-path        folder path to the pre-trained models. default=models
  -n model-name        model name (default=realesr-animevideov3, can be realesr-animevideov3 | realesrgan-x4plus | realesrgan-x4plus-anime | realesrnet-x4plus)
  -g gpu-id            gpu device to use (default=auto) can be 0,1,2 for multi-gpu
  -j load:proc:save    thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu
  -x                   enable tta mode
  -f format            output image format (jpg/png/webp, default=ext/png)
  -v                   verbose output


入力フォルダと出力フォルダの指定、拡大率の指定くらいであとはデフォルトでほぼ問題ないですね。

動画の高画質化の場合、CupscaleかWaifu2x-Extension-GUIがお勧め

動画の高画質化(ノイズ除去)・高解像度化のフリーのツールではCupscaleやWaifu2x-Extension-GUIが使いやすいです。

これらのソフトでやっていることは動画を1コマごとに静止画に一度展開し、realesrgan等で高画質化処理し、動画にエンコードして出力するという処理です。

複数のアプリを使い、コマンドラインで一連の流れを処理しようとすると手間暇がかかり面倒なため、一括処理してくれるので非常に便利なアプリとなっています。

なおCupscaleの場合、選べる処理モデルが少なく高画質化しようとすると非常に重い処理しか出来ないため、Waifu2x-Extension-GUIでの処理に比べて融通がきかない感じでした。
(拡大率が4倍にのみしか指定出来ない等)

ただWaifu2x-Extension-GUIは起動のたびに中国語で有料版へのアップグレードするようにと主張が激しいので、気になる人は気になるかも。

また先日Waifu2x-Extension-GUI最新版を使おうとしたところ、WindowsセキュリティにTrojan:Win32/Wacatac.B!ml判定を食らってビックリしました。

1日経って再度同じファイルをスキャンしたら問題ないと判定されたことから誤判定だった可能性がありますが、少し心配です。

Cupscale

Cupscaleのダウンロード先はこちら

DownloadのGet the latest releaseからダウンロードファイルのリンク先に飛べます。


Cupscaleの設定可能な箇所はAIモデルの選択、エンコード画質の設定等であまり細かな設定はできません。


ウインドウ左上のAIからAIモデルを選択します。
3択ですが、実用的なレベルの変換速度を求めるならGPUを使って計算する(NCNN)を選択するため実質2択ですね。

ESRGAN(NCNN)
RealESRGAN(NCNN)

RealESRGANの方がきれいに出力されますが、そのせいか重いです。
使用しているGPUの性能によっては妥協してESRGANでもいいかも。
この辺り比較は2秒くらいの動画を作ってみるのが良いかと思います



続いてモデルオプション(Model 1)から使用モデルを選択します。


4xBSRGAN、4xRealSR_DF2K_JPEG、realsrgan-x4plusから選択が出来ます。
realsrgan-x4plusが高画質化するのにお勧めですが、こちらもやっぱり重いです。


なお、Cupscaleのエンコード設定を変更する場合、画面右上にある歯車アイコンをクリックして、Video Upscaling SettingsからMP4 Quality(CRF Level)で数値を変更することでエンコード画質を設定できます。
数値を低くするほど高画質な処理になります。
Video Upscaling Settings

またUse H265 Codecでエンコードすればより高画質となります。
ただエンコード時間は更に必要になります。
こちらはCPU処理なのでCPU性能に依存します。
ハードウェアエンコードには現時点では未対応となっていました。



最後に右下のUpscale And Saveを選択すればブロックノイズの除去に合わせて4倍に拡大する高画質化処理が開始します。

Cupscaleは設定項目自体が少なく、操作は簡単ですが拡大サイズが選べないのがデメリットですね。

また最終更新がSep 8, 2021と、開発が止まってしまっていてAIアプリの進化に置いて行かれそうなのがネックですね。

Waifu2x-Extension-GUI


Waifu2x-Extension-GUIは様々なAIモデルを選択可能な点と、拡大率も選べる点でCupscaleよりも柔軟に調整が可能です。

ダウンロード先

7z形式のため、解凍するには7zipをインストールか、展開用のツールが必要となります。

起動はWaifu2x-Extension-GUI-Start_启动.batを実行するか、Waifu2x-Extension-GUI.exeを実行します。

初回起動時はPCが対応しているかチェック処理が走るため、やや時間がかかります。


先に記載した通り、起動時に毎回有料バージョンにアップグレードを促すウインドウが表示されます。
また起動したまま何度か実行すると同じウインドウが出てきます。
(これが意外に鬱陶しい)

起動画面もこんな感じとなっており、PayPalでの支払いへの圧が凄い。
(起動時に勝手に最大化されます)


Waifu2x-Extension-GUIの使い方は簡単で、Homeタブに高画質化したい動画をドラッグアンドドロップします。
次に画面中央のQuick Engine SwitchからAIモデルを選択します。

また拡大率を変更したい場合はScale ratioの値を、ノイズ削除の調整をしたい場合はDenoise levelの値を変更し、Startボタンをクリックするだけです。

AIモデルの説明はQuick Engine Switchにマウスオーバーさせると表示されますので、速度とクオリティを参考に選ぶのが良いかと思います。

速度と品質のバランスがいいのは、個人的に一番下のReal-CUGAN-NCNN-Vulkanかなと思います。

支払いの圧を気にしないならCupscaleよりもお勧めです。


フレーム補間はFlowframesがお勧め


Flowframesは60fpsの動画を120fpsや240fpsにしたりと、動画をぬるぬる動く状態にフレーム補完してくれるアプリです。

ただし長時間の動画ではシーン切り替え時に破綻が出やすいため、使いどころが難しいアプリとなっています。
短いループ動画に強いという印象ですね。


ダウンロード先

インストール時にWindows Defender Smartscreenによって「Windows によって PC が保護されました」と出ますので、気になる人は・・・導入をあきらめましょう。
(使用してもほぼ問題ないと思います)

Flowframesの使い方は簡単で、フレーム補間をしたい動画をFlowframesにドラッグアンドドロップすれば自動で動画のフレームレートを読み込んでくれますので、Output FPS and Speedから何倍にするかを選ぶだけです。

※たまにフレームレートを正確に読み込んでくれないケースがあります。
30fpsの動画を120fpsと認識したり…
その場合、HandBrake等を使い、一度正確なフレームレートに設定して再エンコードする必要があります。
120fpsと認識した動画を4倍にすると処理に時間がかかりすぎるので、一旦再エンコードした方がトータルの時間は短く済みます。

なおNormal Speedから2x slowmo、4x slowmo、8x slowmoを選べばスローモーション撮影したような動画を作成してくれます。

より細かく設定する場合、Interpolation AIで使用するAIを選択可能です。(RIFE,FLAVR,DAIN,XVFI)

数秒の短い動画で効果を確かめて一番しっくりくるAIを選ぶのが良いかと思いますが、迷ったらRIFEにしておくのが無難かと思います。

AI Modelで使用するAIモデルを選択しますが、こちらも最新のもの(数値が大きい)を選んでおけば問題ありません。

歯車アイコンから重複フレームの削除設定やエンコード設定が出来ます。

Interpolationでは以下の設定が出来ます。

Fream De-Duplication Modeで重複フレームを削除するかどうか。
2Dアニメで所謂ぬるぬる動く状態にしたい場合はFream De-Duplication Modeを有効にします。
1: After Extraction 低速処理で正確
2: During Extraction 高速処理で不正確

またシーン切り替えの判別が苦手なため、Fix Scene Changes(cuts)でシーン切り替えのsensitivity(感度)を調整します。
調整不足だとシーン切り替え時に動画破綻したりスローモーションのような表示になります。

Github記載の翻訳

Frame De-Duplication: This is meant for 2D animation. Removing duplicates makes a smooth interpolation possible.
フレームの重複除去: これは 2D アニメーション用です。 重複を削除すると、スムーズな補間が可能になります。

Loop Interpolation: This will make looped animations interpolate to a perfect loop by interpolating back to the first frame at the end.
ループ補間: これにより、ループ アニメーションが最後の最初のフレームに補間されて完全なループに補間されます。

Fix Scene Changes: This avoids interpolating scene changes (cuts) as this would produce weird a morphing effect.
シーンの変更を修正: これにより、シーンの変更 (カット) の補間が回避されます。

Auto-Encode: Encode video while interpolating. Optionally delete the already encoded frames to minimize disk space usage.
自動エンコード: 補間しながらビデオをエンコードします。 必要に応じて、既にエンコードされたフレームを削除して、ディスク容量の使用を最小限に抑えます。

またEncoding settingsで動画のエンコード画質の設定が可能です。
NVencによるエンコードも対応しているので、画質よりも処理速度優先したい場合はNVencを選択します。
編集用にAVI(ffv1,huffyuv,magicyuv,rawvideo)で出力する事が可能です。


こちらもAIの処理にGPUを酷使するので、RTX3060以上のGPUが欲しくなりますね。








【NVIDIA GeForce RTX 3060搭載 オリジナルデュアルファンクーラー「TWIN FROZR 8」採用 ブーストクロック 1,837MHz / メモリクロック 15,000MHz 12GB GDDR6 192bitメモリ搭載 DisplayPort×3、HDMI 映像出力端子装備 / ボード1枚で4画面出力が可能

ブログ内記事を検索

書いてる人

まったりと生きているネットワークエンジニアです。
指先ひとつで基幹ネットワークがダウンさ(トラウマ事例)
サーバー周りは勉強中。
当サイトは、アフィリエイト広告を利用しています

フォロワー

QooQ