最近のPhotoShopやLightroomに搭載された「スーパー解像度」は、今までの画像処理に比べて遥かに高品質な画質を維持したまま、縦横それぞれ2倍、面積で4倍まで拡大可能な超解像(アップスケーリング)技術です。
この技術はAI(深層学習)をベースに実現されているのですが、いくつもの種類が無料で公開されているため、知識さえあれば利用できるようになっています。
我々が超解像技術を使おうとする場合、Pythonと機械学習ライブラリを組み合わせるケースが多いのですが、今回はインストールして画面から操作可能はアプリと、コマンドプロンプトから実行できるコマンド形式の2種類について紹介したいと思います。
もちろん両方とも無料であるため、スーパー解像度などの超解像技術がどれくらいの性能なのか気になる方はもとより、手軽に既存の画像を超解像化したい方には必見です。
またmmpeg と組み合わせることで、動画を超解像化することも可能ですので、その方法についても軽く触れたいと思います。
Pythonを使った超解像化については「【良く分かる】Pythonで超解像!ESRGAN/Real ESRGAN/SwinIRをまとめて紹介」で解説しているので、興味のある方はこちらもご一読ください。
超解像化とReal ESRGANについて
Real ESRGANは、超解像技術の一つであり、通常は深層学習(ディープラーニング)の一種である「敵対的ネットワーク」と呼ばれる手法を活用しています。
Real ESRGANは低解像度の画像を高解像度にアップスケーリングするために設計されており、映画制作、写真修復、ビデオゲームのグラフィックスなど、さまざまなアプリケーションで幅広く活用されています。
サンプル画像
今回紹介する超解像化アプリ&コマンドは、Stable Diffusion で生成した512×512のpngファイルを使用しています。実際に超解像化を試す場合は、右クリックで保存してお使いください。
UPSCAYL
Real-ESRGANによる超解像化を画面操作で行えるフリーソフトです。単一画像ファイルだけでなく、指定したフォルダ内の画像ファイルを一括して超解像化することも可能です。
また、超解像化アルゴリズムとしては、Real-ESRGANだけでなく、FAST REAL-ESRGAN、REMACRI、ULTRAMIX BALANCED、ULTRASHARP、DIGITALARTも選択できるようになっています。
インストール方法
GitHub(https://www.gigafree.net/tool/resize/Upscayl.htm)からダウンロードが可能です。
画面に飛んだら、少しスクロールして、 upscayl-2.7.5-win.exe をクリックするとダウンロードできるので、そのまま実行して下さい。
画面の説明
初期状態の場合、アルゴリズムはReal-ESRGANが採用され、選択した画像と同じフォルダに超解像化された画像が保存されます。
Batch Upscayl ボタンのスイッチを入れると、指定したフォルダのファイルが丸ごと高解像化されます。
保存する画像の種類を指定する場合は、SETTING(各種設定)から行ってください。
使い方
使い方はシンプルで、超解像化したい画像をドラッグ&ドロップするか、SELECT IMAGEボタンで画像を選択し、UPSCAYLボタンをクリックするだけです。
変換した結果は以下の様になりました。
Real-ESRGAN
Real-ESRGANの公式ページで公開されているコマンドラインプログラムであり、indows,Linux、MacOSの中から選ぶことが出来ます。
また、一般向けとアニメ向け、アニメ動画向けのモデルが同梱されており、画像の特徴に合わせて最適なものを選ぶことができます。
- realesrgan-x4plus(一般用)
- realesrnet-x4plus(一般用)
- realesrgan-x4plus-anime (アニメ画像用に最適化、モデルサイズが小さい)
- realesr-animevideov3 (アニメーションビデオ)
尚、今回はWindows用で説明致します。
インストール方法
Real-ESRGANの公式ページ(https://github.com/xinntao/Real-ESRGAN/releases)にジャンプしたら、少し下にスクロールして下図に従ってダウンロードします。
realesrgan-ncnn-vulkan-20220424-windows.zip という圧縮ファイルがダウンロードできるので、任意のフォルダに解凍します。解凍後は以下のようなフォルダ構成になっているはずです。
使い方
あらかじめ、解答先のフォルダ(今回は realesrgan-ncnn-vulkan-20220424-windows)にカレントドライブを移動してから、下記のコマンドを実行します。
cd realesrgan-ncnn-vulkan-20220424-windows
realesrgan-ncnn-vulkan.exe -i 00002-3981511232.png -o result.png -n realesrgan-x4plus
realesrgan-ncnn-vulkan.exe には以下のオプションが指定できます。
オプション | 説明 |
---|---|
-h | ヘルプを表示 |
-i input-path | 入力画像のパス(jpg/png/webp)またはディレクトリ |
-o output-path | 出力画像のパス(jpg/png/webp)またはディレクトリ |
-s scale | アップスケール比率(2、3、4のいずれか、デフォルト=4) |
-t tile-size | タイルサイズ(>=32/0=自動、デフォルト=0) |
-m model-path | 事前訓練モデルへのフォルダパス(デフォルト=models) |
-n model-name | モデル名(デフォルト=realesr-animevideov3、 realesrgan-x4plus、realesrgan-x4plus-anime、 realesrnet-x4plusのいずれか) |
-g gpu-id | 使用するGPUデバイス (デフォルト=auto、複数GPUの場合は0、1、2など) |
-j load:proc:save | load/proc/saveのスレッド数 (デフォルト=1:2:2、複数GPUの場合は1:2、2、2:2:2など) |
-x | TTAモードを有効にする |
-f format | 出力画像の形式(jpg/png/webp、デフォルト=ext/png) |
-v | 詳細な出力を表示 |
コマンドを実行すると、コマンドプロンプトに下記の通り実行結果が表示されます。私のPCではRTX 4070を搭載しているため1画像当たり数秒で完了しましたが、GPU未搭載のPCでは1画像当たり数十秒~1分程度掛かると思います。
同じアルゴリズムなので、UPSCAYLとほぼ同じ画質で出力されました。
動画の超解像化
動画を超解像化するには、ffmpeg を使う必要があります。ffmpegの詳細は「【一番分かり易い】ffmpeg のダウンロードと使い方」で紹介していますので、併せてご覧下さい。
具体的な方法は次の通りです。
例えば、 input.mp4 を超解像化して output.mp4 という名前で出力したい場合、次の様になります。
ffmpeg -i input.mp4 -q:v 1 img\%06d.jpg
realesrgan-ncnn-vulkan.exe -i img -o hires -n realesrgan-x4plus
ffmpeg -i hires\%06d.jpg -i input.mp4 output.mp4
まず、ffmpeg で input.mp3 から 000000.jpg、000001.jpg、・・・・というファイル名で画像を抽出し、imgフォルダに格納します。
次に realesrgan-ncnn-vulkan.exeを使ってimgフォルダの画像を丸ごと超解像化して hires フォルダに格納します。
最後に、ffmpeg を使って hiresの画像から動画を作成しています。この時、-i で元のinput.mp4を指定していますが、これは元動画の音声を output.mp4 に入れるためです。
まとめ
今回は PhotoShopやLightroomなどのフォトレタッチ系アプリで採用が増えている超解像化について、フリーのアプリであるUPSCAYL と、コマンドプロンプトから使える realesrgan-ncnn-vulkan.exe について紹介しました。
また、ffmpeg を使って、動画を丸ごと超解像化する方法についても説明しました。
超解像化の品質については、アプリとコマンドラインのどちらも REAL ESRGAN というニューラルネットワークの手法を用いており、ほぼ変わらないため、用途に合わせてお使い下さい。
昔のデジカメやビデオで撮影した低解像度の画像、動画を高解像化できますが、ある程度の性能を持ったGPUが無いと辛いので、その点はご注意ください。
コメント