Python

Pythonを使ってAIで低画質画像を高画質に!【SwinIRの使い方解説】

好きなキャラクターの画像を壁紙にしたいけど、昔の画像だからノイズがひどくてとても壁紙にできないよってことよくあると思います。

最新のスマホはメチャクチャ液晶が綺麗ですが、それに見合う大きさの画像じゃないとどうしても満足いかないクオリティーになってしまいます。

画像を高画質化するサービスはネットに沢山ありますが、Pythonでもサクッとできるらしいので、どうせだったら勉強も兼ねて自分で作ってみようと思ってやってみました。

とても簡単にできたので、今回はPythonのAIがどれぐらい画像を綺麗にしてくれるのかと、どうやってPythonで画像を高画質化(超解像って言うらしいです)をするのかを紹介していきます。

Pythonをすでにインストールしているのであれば本当に10分ぐらいで完成できるのでぜひ試してみて下さい。

なお、今回、SwinIRという無料ツールを使っていくのですが、使い方はみやさかしんや様(@miyashin_prg)のブログを参考にさせていただきました。

ブログの引用についても快く承諾していただき、この場にてお礼を申し上げます。

では、まずはどれぐらい画像が綺麗になるか紹介していきます。

PythonでswinIRを使うとこれぐらい高画質に!

百聞は一見に如かず

早速beforeとafterの画像を見ていただきましょう。

今回、あえて小さめの画像を選んでいますが、最後の方にちゃんと大きいサイズの高画質化もやっております。

画像はたくさんの男をオタクにしていった元凶たちです。

左が元画像、右が超解像した画像です。

まずはときめきメモリアルの激ムズヒロイン藤崎詩織

藤崎詩織とGoogleに入力するとサジェストでボンバーマンって出てくるぐらいすぐに爆弾を発生させる厄介な幼馴染です。

しかも、攻略もめちゃくちゃ難しい…ネットが無い時代に詩織を攻略した人を尊敬します…

で、引きの画像だとイマイチ高画質化が伝わらないと思うので、アップしてみます。

swinIR01swinIR02アップにすると高画質化の恩恵が一目瞭然だと思います。目のぼやけや顔の輪郭がくっきりしたのがすぐにわかると思います。この時代のゲームは高画質な画像が無いのでswinIRは重宝しそうです。

swinIR03

To Heartよりメイドロボ、マルチです。マルチシナリオで涙したおっさんも多いと思います。個人的には何回も階段から落ちるくだりが大好きです。

これは元画像が小さかったので、引きの段階で結構違いがわかると思います。

アップしてみます。

swinIR04

アップするとさらに高画質化がわかると思います。この補正が素人でもほぼ一瞬で無料で行えるってすごい時代になったなと思います。

swinIR05

これは原作の画像はそこそこ綺麗なんですが、伝わりやすくするために小さい画像を高画質化してみました。

このぐらいだとアップにしなくても画質が良くなっているのがわかると思います。このみかわいいですね。

話それますけど、このみの中の人が大学の学園祭に来ることあって、その時名前入りのサインもらったんですね。それ欲しい人いますか。

はい、次

swinIR06

ダカーポ2より朝倉由夢です。私が一番好きなギャルゲーのキャラクターですね。抱き枕カバーとか4枚ほど持っていました。

これは、元画像もそこそこの画質だったんですが、加工後を見てもらうと輪郭がくっきりなっているのがわかると思います。

あと、この現象は初めてだったんですが、右の背景がバグってますね。恐らくAIのモデルとの相性が悪かったのが理由だと思いますけど、こういう現象もたまに発生します。もしくは透過PNGを使ったからですかね。検証が必要です。

はい次

swinIR07

これは元画像もガチの画質の画像です。このレベルだと一目じゃちょっとわからないですよね。

swinIR08

私の作成した画像越しだと少し伝わりずらいかもしれませんが、アップすると今までと同様に輪郭がくっきりしているのがわかります。まぁ、ここまで引き延ばすことがあるかと言うとそんな機会はあんまりないと思いますが、少しでも画質をよくしたい!って人には有用だと思います。

次が最後です。1920×1080の解像度の画質を超解像してみました。

swinIR09

変換するのに2時間かかりました…

このレベルになるともうほとんど違いはわからないですね。ただ、超超ドアップするとこれも輪郭がくっきりしているのがわかります。

swinIR10

大好きな壁紙を大画面に引き延ばす機会がある場合は使うのもありだと思います。ただ、最低限のPCスペックが無いと変換処理が永遠と続くのでそこは気をつけてください。

では、今まで、swinIRがどれぐらい画像を綺麗にできるか紹介してきましたが、ここからはどうやってPythonで使えるようにするかをご紹介していきます。

10分程度で作れるので興味がある人はぜひ自分の環境でも試してみて下さい。

先ほども言いましたが、使い方はみやさかしんや様(@miyashin_prg)のブログを参考にさせていただきました。

前提として、Anacondaがインストールされているものとします。

Anacondaに仮想環境を作る

 

Python仮想環境 Python仮想環境 Python仮想環境
  1. Anacondaを起動して、Enviromentsを押してください
  2. 下の方にあるcreateボタンを押してPython3.10.6のバージョンで作成!
  3. 再生ボタンみたいなやつを押して、Anacondaプロンプトを起動

仮想環境にライブラリをインストールする

起動したアナコンダプロンプトに↓のコマンドを入力してライブラリをインストール!

  1. pip install timm
  2. pip install opencv-python

必要な素材をGithubから集める

swinIRを使うにはGithubに公開されているセットとswinIRの学習済みモデルが必要となります。

こちらのブログを参考にそれら2つをダウンロードして、Gitの方は解凍を済ませて、学習済みモデルは解凍されたGitのフォルダに移してください。

  1. Github
  2. swinIRの学習済みモデル

いよいよswinIRを実行!

Gitのフォルダにsampleというフォルダを作成して、そこに高画質化、超解像したい画像を突っ込んでください。

これで準備は完了です。

AnacondaプロンプトでGitのフォルダがある場所に移動する方法は移動先のフォルダアドレスの前に”pushd”をつけてエンターを押せばOK

例)pushd E:\プログラミング\python\git

これで好きなフォルダに移動することができます。

いよいよあとは↓のコードをAnacondaプロンプトに書いてエンターを押すだけ!

 

コードの意味は↓みやさかしんや様(@miyashin_prg)のブログより引用

python main_test_swinir.py
→実行するpythonスクリプト

–task real_sr
→Real World Image Super Resolution(実世界画像の超解像)

–model_path 003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN.pth
→モデルのパス

–folder_lq testsets/RealSRSet+5images
→処理前画像のフォルダ

–scale 4
→4倍の超解像

–large_model
→大きなモデル

少し時間がかかりますが、処理が完了したらsampleフォルダに加工後の画像が保存されます。

画質比較の所でも言いましたが、元々高画質な画像は処理にメチャクチャ時間がかかりますし、スペックによっては1日経っても完了しない可能性もあります。

swinIR、その他もろもろは自己責任の使用でお願いします。

関連記事