🌼

元の画像を壊さず高解像度化し印刷に耐えうるものを生成する

2024/11/30に公開

モチベーション

画像生成AIで作成できる画像サイズは基本的には印刷に耐えられるほどの解像度作れない(少なくとも自分の環境では無理)
また、stable-diffusion-webuiでHires. fixからUpscalerで高解像度化すると、元のイメージが破綻する可能性があり、調整がかなり難しい
タイトルに記載の通り、画像生成AIで生成したもののイメージを壊さず印刷に耐えうる解像度へアップコンバートしたいと思う

ちなみに、A4(210×297mm)を印刷に適した350dpiにするとしたら、2,894×4,093pixelは必要になるので、約3,000pixel越えは目指したい

実行環境
MacBookPro M3Pro(18GB) 
※MacBookAir M1(8GB)では未検証

必要ライブラリのインストール

pip install timm
pip install opencv-python

ツールのインストール

今回の対象は以下
https://github.com/JingyunLiang/SwinIR

コマンドでインストールを実行していく

$ git clone https://github.com/JingyunLiang/SwinIR.git
$ cd ~/SwinIR

学習済みモデルをDLしてカレントディレクトリに格納

カレントディレクトリ内に以下のモデルをダウンロードして格納する
Pretrained models, supplementary and visual results

下部の show all 48 assets をクリックして全体を表示させる

とりあえず以下のモデルを使ってみる
003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN.pth

サンプル画像を実行してみる

python main_test_swinir.py --task real_sr --model_path 003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN.pth --folder_lq testsets/RealSRSet+5images --scale 4 --large_model

以下部分がモデルの指定(今回DLしたものを指定)
--model_path 003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN.pth

以下がサンプルが入っているフォルダ(デフォルトでSwinIRのライブラリに格納されている)
--folder_lq testsets/RealSRSet+5images

以下が拡大する倍率。今回は4倍という意味。
–scale 4

サンプル結果確認

resultsフォルダに元のファイル名に_SwinIRと追加されたものが出力される

比較
▼処理前

▼処理後

とりあえずいっぱいできている(サンプル数が多いので、それなりに時間がかかる)

実際に高解像度化したい作品を高解像度化

4倍である必要はないので、2倍にしたいと思い、学習済モデルを変更(DL)
003_realSR_BSRGAN_DFO_s64w8_SwinIR-M_x2_GAN.pth

実行するとエラーを吐き出したので、依存パッケージのアップデート。

pip install --upgrade torch torchvision timm

参照先フォルダも変更して、実行スクリプトも以下に変更

python main_test_swinir.py --task real_sr --model_path 003_realSR_BSRGAN_DFO_s64w8_SwinIR-M_x2_GAN.pth --folder_lq testsets/input --scale 2

約20~30分後(処理経過がわからない(完了時しかわからない)のはもどかしい)
えぐいメモリスワップしてます

▼処理前 918 × 1400

▼処理後 1836 × 2800

拡大すると差は一目瞭然

▼処理前 1536 × 1536
元がそこそこ大きい画像を試してみる

▼処理後 3072 × 3072
ほぼ元画像の印象を残したままだけど、本記事上では差が見えないレベル

一応印刷には耐えそうなぐらい、細部の補完がされているので、結果よし!
今年最も大きな画像ができました。
古い(と言っても3年前)技術もまだまだ使い方次第では、低スペックPCでも色々できますね!

Discussion