見出し画像

SwinIRをMac上で使いたい(ノードをつなげて画像処理ができるchaiNNerで機械学習アップスケーリング)

SwinIR

StableDiffusionで画像生成して楽しんでいると、次はその生成した画像をアップスケーリングしたくなってきました。

畳込みニューラルネットワークを使ったアップスケーリングモデルは様々な種類が公開されていますが、色々と試してみた結果SwinIRで高解像度化したものが今のところ一番好みでした。
SwinIRは下のページで使ってみることができます。

この記事の本筋からは逸れますが、waifu2xやReal-ESRGAN、RealSRなどNCNNで動くものはwaifuExtension(Beta版です)が簡単でした。
M1 Macについても最適化されているのでかなり速くアップスケーリングできます。

SwinIRをMac上で使いたい→chaiNNer

SwinIRについては、画像をアップロードして使うことも出来ますが、自分以外の人が写っている写真をアップロードすることに抵抗があり、出来れば手元で動かしたいと思っていました。SwinIRのページには自分のPCで使う方法としてCog(https://github.com/replicate/cog)とDockerが紹介されています。しかしこの方法は自分には敷居が高いと感じていました。

どうしてもSwinIRが使いたくて別の方法を探していたところ、ノードベース画像処理GUIのchaiNNerが対応しているようなので使ってみました。ただし、SwinIRはPyTorchを利用して構築されているため、GPUのサポートはNvidiaのみで、MacOSではCPUのみで演算することになります。

モデルはGitHubのSwinIR公式リポジトリの Releasesから、タスクタイプやカラー・グレイスケール・JPEGノイズレベルなどのパラメーターごとに事前学習済みモデルが公開されています。

SwinIRのReleasesにはたくさんの学習済みモデルの種類がありますが、
"003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN.pth"をダウンロード(136 MB)。とりあえずこれだけあれば動きます。
chaiNNer用のフォルダを作ってモデルを保存しておくと便利です。

chaiNNerでノードを組み合わせる

選択パネルから必要な画像処理のノードをドラッグ&ドロップして取り込みます。そして、ノードの同じ色の点同士をドラッグして接続します。互換性のある同じ色の点同士でしか接続出来ないようになっているので、かなりわかりやすいです。

実際に配置したもの

一連の処理をIMAGE FILE ITERATORに入れて、ベースディレクトリを指定すると、1枚ずつ順番に画像を読み込んで処理してくれます。

バッチ処理

SwinIRで高解像度化した例

高解像度化前
高解像度化後
拡大比較

まとめ

以上、最低限ですがchaiNNerを利用したSwinIRによる高解像度化を簡単にMac上で出来るようになりました。
目的によってSwinIRのモデルを使い分けたり、他の画像処理を組み合わせたり、chaiNNerはいろいろな活用方法がありそうです。また、バージョンAlpha v0.13.0以降ではGFPGAN(人物の顔の高解像度化・修復モデル)にも対応しています。こちらもStableDiffusionでの画像生成に役立ちそうです。
この記事で紹介したものにはアルファ版、ベータ版など含まれていますので、あくまで自己責任で試してみてください。

この記事が気に入ったらサポートをしてみませんか?