AMD RadeonやIntel GPUでもwaifu2xが使える「waifu2x ncnn vulkan」を間接的に導入する

PC

この前、Windows 11のメインPCに「waifu2x-caffe」を入れ直したときに発見した、Radeonでもwaifu2xが使えるようになるらしい「waifu2x ncnn vulkan」。

メインPCのGPUを、GTX 1660sからRX 6600 XTに換装するに当って「waifu2x ncnn vulkan」の実行環境を整えるつもりでいました。

が…所詮、”素人に毛が生えた程度のPC知識しかない私では”GUI操作ではない「waifu2x ncnn vulkan」を、コマンドから設定して使えるように出来ませんでした。(というか、ググっても情報が無さすぎて断念)

ただ「waifu2x-caffe」の記事を書いているときに「waifu2x ncnn vulkan」を発見した副産物と一緒に、とあるツールを発見。

「waifu2x ncnn vulkan(非GUI Edition)」を間接的に導入できたので記事に残します。

「waifu2x ncnn vulkan」について

一応「waifu2x ncnn vulkan」について触れておきます。(前書きはいいからはよって人は目次から項目を移動して下さい)

「waifu2x ncnn vulkan」は、ncnn実装のwaifu2x convert。(画像高解像ツールwaifu2x系の1種)

VulkanAPIを利用してGPU処理を実行するため、CUDAを利用するが故にGPUがNVIDIA製GPUに限られていた「waifu2x-caffe」と違い、Radeon/Intel/NVIDIAのGPUで実行することが可能です。

ただし、GitHubにある非GUI Editionの「waifu2x ncnn vulkan」はコマンド操作が前提です。

もう少し、私に知識としっかり調べて構築する気があれば使えるようにできたかもですが…あの時はそんな余裕がなかったし、最悪使えなければRX 6600 XTを買わないだけだったので、諦めました。

ビルドされたキットを使って間接的に導入

で、RX 6600 XTの購入を検討しながら「waifu2x-caffe」の記事を書いているときに「waifu2x ncnn vulkan」を発見し、さらに副産物としてSora-IroServerさんが「waifu2x ncnn vulkan」を用いて作製された「かんたんアプコンキット」を発見。

「かんたんアプコンキット」は、waifu2x(waifu2x ncnn vulkan)を用いて動画をアップコンバートするためにカスタムされたキット。

GitHub上の非GUI Edition「waifu2x ncnn vulkan」はそのままに、動画をアップコンバートできるように音声と画像の分離や拡大処理、エンコードなどをWindows コマンドスクリプト(.cmd)で文字通り簡単に行えるようにビルドされています。

本来は、制作意図通り「waifu2xで動画をアップコンバート」するためのキットですが、ざっくりやっていることは動画を一度分解して、パラパラ漫画のように大量の1フレームごとの画像を生成し、それをwaifu2xで拡大して再度動画としてくっ付けるものなので、動画じゃなくても画像を入れれば”「waifu2x ncnn vulkan」として使える”という至極当然のことに気が付きました。

ええ、そうです。

文字通り、既に設定(ビルド)されて簡単に使えるものを使って、間接的に導入してるだけです。

ダウンロードリンク

「かんたんアプコンキット」を導入する

リンク先の記事から「かんたんアプコンキット」をダウンロード。

zipファイルを任意の場所に解凍すれば、インストーラーなどは無いので導入自体は完了です。

各ファイルの役割と操作

動画のアップコンバーターではなく、ただの「waifu2x ncnn vulkan」として使う場合の操作はこんな感じです

項目内容
_temp-project中に以下のフォルダが存在

・image-frames(step2_up-scale_2xの画像参照元)
・image-frames2x(step2_up-scale_2x実行後の画像保存先)
waifu2xGitHub上の非GUI Edition「waifu2x ncnn vulkan」
構成、exeはそのまま
気になる場合は置き換え可能
step2_up-scale_2ximage-framesフォルダ内の画像を参照し、「waifu2x ncnn vulkan」のアップスケール処理を実行するWindows コマンドスクリプト
stepx_more_scaleimage-framesとimage-frames2xフォルダ内の画像を完全に削除するWindows コマンドスクリプト

処理の優先順位はimage-framesから先に削除
image-framesとimage-frames2x両方の画像を削除する場合は、2回実行する必要がある

ちなみに「stepx_more_scale」はWindows コマンドスクリプトで実行するので、削除した画像はゴミ箱には行きません。

アップスケールの設定

「step2_up-scale_2x」実行時のアップスケール動作設定は、testフォルダ内にある「waifu2x-test」を右クリックし、編集から変更できます。

設定内容は以下の通りです。

項目内容
noiseノイズ処理のレベルを-1/0/1/2/3から選択
右に行くほど効果が強い
scaleスケールサイズを1/2から選択
1=1倍、2=2倍(倍率は2通りのみ)
blocksize数値を上げることでGPUメモリ消費量が増加し、処理が高速化
size100=1GB程度(らしい)

それぞれを書き換えてファイルから内容を保存することで、設定が保存されます。

使いやすいようにショートカット&フォルダ作成、作業実行

「_temp-project」に拡大したい画像を放り込んで、Windows コマンドスクリプト実行するだけなので、解凍した「upconvert-v4」フォルダのまんまでも良いですが、私的には使いにくいのでカスタムします。(そもそもビルド意図自体が動画用なので当然だが…)

「image-frames」及び「image-frames2x」、コマンド「step2_up-scale_2x」「stepx_more_scale」のショートカットを作成し、任意の名前にリネーム。

PC用とかスマホ用ってあるフォルダは、ダウンロード後のリサイズ待ち画像の置き場にしてます。

pixivとか静画から拾ってきた画像はサイズが1200とか1400でバラバラなので、このまま拡大すると気持ち悪いことになります。

なので、これらをまとめて「Caesium」でFHDの半分のサイズに一括リサイズ。

リサイズ後にそのまま「image-frames」に移動して準備完了。

あとは「step2_up-scale_2x」を実行すれば「image-frames」の画像を「waifu2x ncnn vulkan」が処理してくれます。

処理順が固定ルーチン化できるので、自分の使い勝手の良いようにカスタムすると結構ええです。

私はこんな感じで、ぐるぐるするように分けてます。

  1. 変換&拡大作業別のフォルダリスト
  2. 「image-frames」
  3. 「image-frames2x」
  4. 作品、PC・スマホ用に分別した保存先ライブラリ

変換&拡大作業後に「お~瑠璃ね~む」で一括リネームして作業完了のルーチンになってます。

使ってみて

画像高解像ツールwaifu2x系の1種なので生成される画像は勿論綺麗。処理もwaifu2x系特有の感じがします。

https://www.pixiv.net/artworks/97031695

「waifu2x ncnn vulkan」だと「waifu2x-caffe」のように、モデル別やTTA処理がないので画質はどうなのかと思ってましたが、余程拡大したり細部まで気にしない限り画質の差はない気がします。

https://www.pixiv.net/artworks/92652711

VRAMも違うし、世代とグレードも違うので単純比較は出来ませんが「waifu2x ncnn vulkan」で、RX 6600 XT換装前にGTX 1660sで100枚の1920×1080画像を2倍の3840×2160に、blocksize150でアップスケールした際の所要時間は3分48秒。

RX 6600 XTで同じ設定・処理を実行したときの所要時間は、2分28秒でした。

GTX 1660sとRX 6600 XTでは、GTX1070と1080Ti程度の性能差しかないので劇的な変化とは言えませんが…1分以上短縮したので、回数を重ねる私的には結構デカイ恩恵です。

ただ960×540から1920×1080のFHDサイズへアップスケールだとそんなに差はなかったです。

ガバガバですが…960×540サイズの5枚を処理するのに、GTX 1660s+waifu2x-caffeだと3秒、RX 6600 XT+waifu2x ncnn vulkanだと2秒でした。

高解像度のアップスケールじゃなければ、16xxクラスでもそこまで不満にならなそうな気がしてきました…。

まぁ…GPUを選ばずwaifu2xが使えるので、RadeonでもGeForceでも世代や取り巻く環境に合わせて好きな方を気にせず買えるようになるので、「waifu2x ncnn vulkan」を間接的に導入して良かったです。

「waifu2x ncnn vulkan」を間接的にでも導入してなかったら、多分RTX 3060に換装してたと思いますが…。

正直、値段の割に3060より安い6600 XTに勝ったり負けたり程度なんで、購入に乗り気じゃなかった分、Radeonの選択肢が増えたのは「waifu2x ncnn vulkan」もとい「かんたんアプコンキット」のおかげです。

手軽に使えるよう、ビルドして下さったSora-IroServerさんに感謝です。

あとがき

クソ長ったらしく(自覚あり)書いておきながらですが…実は今回の内容を記事にするか、微妙なところでした。

GTX 1660sが手元にあって、アプコンキット経由での間接的な導入を思いついたときは「よっしゃRadeonでも使えるゾ~^、RX 6600 XT買うゾ~^」って乗り気で、届いたらそのうち記事にする気満々でした…が。

記事内でも”非GUI Edition”と触れた通り、この記事を書く数時間前にもう一度「waifu2x ncnn vulkan」を調べ直していったら…そう。GUI Editionの「waifu2x ncnn vulkan」存在を知ってしまったんですよね。(ただの間抜け)

まぁ…そういうことです。

でも、たまにはこういう感じの「何処に需要があるんだ」的な謎記事でも良いかなーと思いつつ、記事にしてます。

発見しちゃったからには「waifu2x-ncnn-vulkan-gui」も後で試す気でいますし、「かんたんアプコンキット」の本来の用途である動画アップコンバートでも遊んでるので、別で記事にする予定…です。