【Windows10】【AI】Real-ESRGANで画像ファイルの画質向上を試す
RTX 3060(GG-RTX3060-E12GB/OC/DF)を買いました。
Stable diffusionでAIに画像作らせるのは面白いですね。
まぁそれは今回置いておくとして、ガビガビ画像をAIによる画質向上を目的に「Real-ESRGAN」の導入してみます。
といっても、Stable diffusion内でも同様のことができるっちゃできますが、まぁこれは勉強ということで。
参考サイト:【Real-ESRGAN】Webアプリ・ツールの導入方法 | ジコログ
というわけでお題目。
1.CUDAのインストール
Windows10にReal-ESRGANを入れるにはまずPyTorchが必要。そしてPyTorchを使うためにCUDAを入れます。
developer.nvidia.com
最新のCUDA Toolkit 12.1.1 をダウンロード。
インストーラはローカル版とネットワーク版があるけど、今回はローカル版。
インストーラをダウンロード後、インストールを実行。
パッケージのインストールを自動で行ってくれるため、終了まで待機。
導入確認はpowershellでコマンド実行で確認することが可能。
> nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2023 NVIDIA Corporation Built on Mon_Apr__3_17:36:15_Pacific_Daylight_Time_2023 Cuda compilation tools, release 12.1, V12.1.105 Build cuda_12.1.r12.1/compiler.32688072_0
2.PyTorchのインストール
PyTorchはつい最近(3/16)にVer2.0がリリースされ、1.x系より性能が向上されたらしい。
なので、今回は2.0をインストールします。
PyTorchはpipコマンドでインストールを行います。
powershellを起動し、以下のコマンドを実行する。なお、Pythonのバージョンは3.10.6。
一応、その前にpipとsetuptoolsのアップデートをしてから実行します。
> py -m pip install --upgrade pip setuptools > py -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 Looking in indexes: https://download.pytorch.org/whl/cu118 Collecting torch Downloading https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-win_amd64.whl (2619.1 MB) --------------------------------------- 2.6/2.6 GB 2.5 MB/s eta 0:00:01
pyコマンドはpythonコマンドとほぼ同様といえば同様ですが、一応説明すると、
Pythonが異なるバージョンで2種類以上インストールされている場合に、pyコマンドを実行すると最新のバージョンで実行してくれます。
Pythonは3.10と3.9といったように、マイナーバージョンが異なると別者扱いになるため、
常に最新を使いたい場合はpyコマンドを使えばいい、という工夫(苦肉の策)だそうです。
ただし、これはWindows限定だったはず(たしか)。
コマンドを実行すると2.5GBぐらいのダウンロードがまず始まるため、気長に待ちます。
特に問題がなければ完了。
インストールができたかはpip listで確認可能。
> py -m pip list torch 2.0.1+cu118 torchaudio 2.0.2+cu118 torchvision 0.15.2+cu118
Pythonで実行できるかどうかは、Pythonで以下のように実行。
> py ※以下をコピペし、実行します。 import torch print(torch.__version__) print(torch.cuda.is_available()) ※以下のように出れば問題なし 2.0.1+cu118 True
3.Real-ESRGANのインストール
3.1 Real-ESRGANのWebアプリのダウンロード
Real-ESRGANのWebアプリを最新で使うため、Webアプリを以下のサイトからソースを取得します。
(GitHubにあるものは古く、Python3.10には対応していないらしい)
huggingface.co
GitHubと違い、ZIP化してダウンロードができないらしい。
全ソースのダウンロードを実施するには、pipでhuggingface-hubのパッケージを導入するのが手っ取り早い。
> py -m pip install huggingface-hub
huggingface-hubを導入後、pyコマンドでpythonプロンプトを開く
> py ※以下をコピペし、実行します。 from huggingface_hub import snapshot_download snapshot_download( repo_id="akhaliq/Real-ESRGAN", repo_type="space", revision="main", cache_dir="./")
ダウンロードしたファイルはpyコマンドを実行したフォルダの配下に、「spaces--akhaliq--Real-ESRGAN」というフォルダ名で格納されています。
3.2 Real-ESRGAN本体のインストール
github.com
こちらから、[Code]→[Download ZIP]でソースをダウンロードします。
ダウンロード後、好きなところにファイルを解凍します。
今回は「C:\Real-ESRGAN-master」に作成します。
解凍後、3.1でダウンロードしたWebアプリが入っているフォルダである「spaces--akhaliq--Real-ESRGAN」→「snapshots」→「ce98fc29358a5b69f9268d7d60b2ea22b25d82c4」の中身をすべてコピーし、Real-ESRGAN本体のフォルダ(C:\Real-ESRGAN-master配下)に、ファイルを上書きする形でペーストします。
※なお、「ce98fc29358a5b69f9268d7d60b2ea22b25d82c4」から始まるフォルダ名はリポジトリバージョンなので可変です。
コピペが完了後、powershell上でC:\Real-ESRGAN-masterに移動します。
その配下にrequirements.txtというテキストファイルがありますが、これにはReal-ESRGANを使うためのpipパッケージが記載されているため、
このテキストファイルををpipコマンドで指定し、Real-ESRGANの実行に必要となるパッケージ群をマルっとインストールしてもらいます。
> cd C:\Real-ESRGAN-master > py -m pip install -r requirements.txt
4.Real-ESRGANのセッティング
4.1 モデルのダウンロード
Stable diffusionでも実写風やイラスト風で仕上げるのにモデルを選択したように、Real-ESRGANでもモデルが必要になります。
Real-ESRGANでは、実写風であれば「base」、イラスト風であれば「anime」と画面上で選択できるようなので、
それぞれのモデルをgithubからダウンロードします。
ダウンロードは、以下URLをブラウザのアドレスバーに貼ってアクセスすることで可能です。
◆base:RealESRGAN_x4plus.pth
https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth
◆anime:RealESRGAN_x4plus_anime_6B.pth
https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth
ダウンロードしたファイルは「C:\Real-ESRGAN-master」の直下に配置します。
4.2 プログラムファイルの変更
「C:\Real-ESRGAN-master」の直下にあるapp.pyの中身を修正します。
INPUT_DIR = "/tmp/input_image" + str(_id) + "/" OUTPUT_DIR = "/tmp/output_image" + str(_id) + "/" ↓ INPUT_DIR = "./tmp/input_image" + str(_id) + "/" OUTPUT_DIR = "./tmp/output_image" + str(_id) + "/"
INPUT_DIRとOUTPUT_DIRは「/tmp/~」となっていますが、もともとLINUXで動作をする前提のため、
ルート直下のtmpディレクトリが記載されていますが、「.」(ピリオド)を追加することで、「C:\Real-ESRGAN-master」配下の「tmp」を示す形に変更しています。
そのため、「C:\Real-ESRGAN-master」配下に「tmp」フォルダを作ることを忘れずに実施します。(該当フォルダが無いと画面での実行時にエラーになります)
次に、以下の部分は起動のたびにTEMPフォルダの削除と作成を実施していますが、
rmコマンド、mkdirコマンドについてもLINUXコマンドとなるため、Windows用に変更を加えます。
run_cmd("rm -rf " + INPUT_DIR) run_cmd("rm -rf " + OUTPUT_DIR) run_cmd("mkdir " + INPUT_DIR) run_cmd("mkdir " + OUTPUT_DIR) ↓ if os.path.isdir(INPUT_DIR): os.rmdir(INPUT_DIR) else: os.mkdir(INPUT_DIR) if os.path.isdir(OUTPUT_DIR): os.rmdir(OUTPUT_DIR) else: os.mkdir(OUTPUT_DIR)
次にwgetをしてる部分ですが、4.1にてモデルをすでにダウンロードしているため、こちらもコメントアウトします。
run_cmd("wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P .") os.system("wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth -P .") ↓ # run_cmd("wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P .") # os.system("wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth -P .")
次に、app.pyの中で、リサイズしている箇所があるため、画質向上のため、こちらもコメントアウトします。
basewidth = 256 wpercent = (basewidth/float(img.size[0])) hsize = int((float(img.size[1])*float(wpercent))) img = img.resize((basewidth,hsize), Image.ANTIALIAS) ↓ # basewidth = 256 # wpercent = (basewidth/float(img.size[0])) # hsize = int((float(img.size[1])*float(wpercent))) # img = img.resize((basewidth,hsize), Image.ANTIALIAS)
5.Real-ESRGANの実行
これまでの準備で問題がなければ、以下のコマンドでReal-ESRGANが起動します。
「C:\Real-ESRGAN-master」配下に移動し、pyコマンドを実行。
> cd C:\Real-ESRGAN-master > py app.py
Running on local URL: http://127.0.0.1:7860/
と出れば成功。
ブラウザからアクセスすると、以下の画面が表示されます。
後は画面にしたがって実行してみますが、サンプルで試すとこうなります。
明らかにくっきりはっきり大きくなっており、これはなかなか。
後はネットで拾った画像もこんな感じに。いいですね。とても面白い。