Stable Diffusionで生成したAIイラストを「Hires.fix」や「Tiled Diffusion +Tiled VAE」で高画質化(アップスケール)を試みたけどPCスペックがしょぼくてエラーになります。
低スペックのグラボでもいい感じに高画質化できる方法を探しています。

このような悩みを解決します。
本記事の内容
- Stable Diffusion web UIで高画質化する方法【低スペックグラボ向け】:準備するもの
- Stable Diffusion web UIで高画質化する方法【低スペックグラボ向け】:「ControlNet」と「Tiled VAE」を使った高画質化の手順
この記事を書いている私は、2023年3月にStable DiffusionでAIイラストを始めて今では毎日Stable DiffusionでAIイラストを生成しています。
先日に下記のツイートをしました。
私のPC環境はグラフィックボードが「GeForce GTX 1660 SUPER/VRAM容量 6GB」という低スペックの部類に入るグラボを使っておりまして、これだと「Hires.fix」はもちろん、比較的低スペックのVRAMでも高画質化できると言われている「Tiled Diffusion+Tiled」でtxt2imgで高画質化を試みてもグラボのスペックが足りずエラーになってしまい、生成したイラストをうまく高画質化することができませんでした。
グラボ買い替えるお金もないし、何とかGTX 1660 SUPERのままで高画質化できないか調べに調べまくって試行錯誤の末たどり着いた解決方法が本記事で紹介するtxt2imgで「ControlNet」の「Tile」と「Tiled VAE」を使用する方法です。
「ControlNet」の「Tile」と「Tiled VAE」を使えば少なくとも私の環境(低スペックグラボ:GeForce GTX 1660 SUPER/VRAM容量 6GB)でも512px×768px→1024px×1536pxへの高画質化(アップスケール)に成功できて、しかも元絵の構図をほとんど崩さずに高画質化できるのでおすすめです。
低スペックグラボで高画質化できないと悩んでいる方はぜひ参考にしてみてください。
以下でtxt2imgで「ControlNet」と「Tiled VAE」を使った高画質化する方法を解説します。
Stable Diffusion web UIで高画質化する方法【低スペックグラボ向け】:準備するもの
まず準備するものは下記になります。
- 「Tiled Diffusion & VAE」をインストール
- 「ControlNet」をインストール
準備として、最初にStable Diffusion web UI(AUTOMATIC1111)へ「Tiled Diffusion & VAE」と「ControlNet」をインストールする必要があります。
以下で順番に解説します。
①「Tiled Diffusion & VAE」(multidiffusion-upscaler-for-automatic1111)をインストール
まずはStable Diffusion web UI(AUTOMATIC1111)の拡張機能「Tiled Diffusion & VAE」(multidiffusion-upscaler-for-automatic1111)をインストールします。
下記の手順通りに進んでください。
web UIの「Extensions」タブを開く→「Installation from URL」のタブを開く→「URL for extension’s git repository」の欄に下記のURLをコピペする
https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111
すぐ下の「Install」ボタンをクリックしてインストール開始してください。

インストールが完了したら「installed」タブを開き、「Apply and restart UI」のボタンをクリックする

これで「Tiled Diffusion & VAE」(multidiffusion-upscaler-for-automatic1111)のインストールは完了です。
②「ControlNet」をインストール
次に「ControlNet」のインストールに進みます。
先ほどと同じ要領で進めます。
web UIの「Extensions」タブを開く→「Installation from URL」のタブを開く→「URL for extension’s git repository」の欄に下記のURLをコピペする
https://github.com/Mikubill/sd-webui-controlnet
すぐ下の「Install」ボタンをクリックしてインストール開始。

インストールが完了したら「installed」タブを開き、「Apply and restart UI」のボタンをクリックする

次に「ControlNet」のモデルをインストールします。
ここからダウンロードします。

上記のサイトに飛んだらファイル名の最後が「.pth」というファイル全てをダウンロードします。
ダウンロード方法は「LFS」という赤いマークをクリックしてダウンロードします。
全部で14ファイルありますので全てダウンロードします。

ダウンロードが完了したら、ダウンロードした14個のファイル全てを下記に放り込んでください。
「stable-diffusion-webui」→「models」→「ControlNet」

以上で 「ControlNet」のインストールは完了です。
Stable Diffusion web UIで高画質化する方法【低スペックグラボ向け】:「ControlNet」と「Tiled VAE」を使った高画質化の手順
すでにtxt2imgで生成済の元画像をtxt2imgで512×512→1024×1024へ高画質化(アップスケール)する手順を解説します。
今回は下記の元画像を「ControlNet」と「Tiled VAE」の機能を使って高画質化(アップスケール)します。

あらかじめ、元画像を生成した時と同じ「モデル」と「VAE」を設定しておいてください。
以下、具体的な手順になります。
- 「PNG Info」から生成済の元画像のプロンプトやシード値を「txt2img」へ送る
- 「txt2img」タブの「Width」と「Height」を「512×512→1024×1024」へ指定
- 「Tiled VAE」の設定
- 「ControlNet」の設定
- 「Generate」ボタンを押す
順番に解説します。
「PNG Info」から生成済の元画像のプロンプトやシード値を「txt2img」へ送る
元画像のプロンプトやシード値と全く同じものを再現するために、「PNG Info」から生成済の元画像のプロンプトやシード値を読み込み、それを「txt2img」へ送ります。

すると、↓こういう状態になります。
元画像を生成した時のプロンプトやシード値などメタ情報が右の欄に全て表示されます。

「Send to txt2img」ボタンを押します。

すると、「txt2img」へ元画像生成時のプロンプトやシード値が再現されます。

「txt2img」タブのWidthとHeightを512×512→1024×1024へ変更する
「txt2img」タブのWidthとHeightを「512×512→1024×1024」へ変更します。
この数値を変更することで実際に高画質化(アップスケール)するサイズを指定します。

↓

「Tiled VAE」の設定
次に、txt2imgのタブの中の、「Tiled VAE」を開き「Enable Tiled VAE」にチェックを入れます。

「Tiled VAE」の設定は以上です。
「ControlNet」の設定
次に「ControlNet」の設定の設定です。
さきほどと同じくtxt2imgのタブの中の、「ControlNet」を開き「Single Image」の枠の中に高画質化したい元画像をドラッグ&ドロップします。

次に、「Enable」、「Low VRAM」、「Pixel Perfect」にチェックを入れます。

そして、その下にある「Tile」にチェックを入れます。

「Preprocessor」に「tile_colorfix+sharp」を選択します。

すると「Model」が自動的に「control_v11f1e_sd15_tile [a371b31b]」に変更されます。
最後に「Control Weight」を初期値の「1」から「0.5~0.7」ぐらいを指定します。
個人的に「Control Weight」が「1」のままだとテカテカした印象になりすぎるので、0.5~0.7ぐらいに数値を下げるとちょうどいいと感じました。

「Generate」ボタンを押す
最後に「Generate」ボタンを押します。
うまくいけば元画像が高画質化された画像が生成されます。
実際に高画質化(アップスケール)された画像がこちらです。↓

元画像と比較してみましょう。


どうですか?
元画像とほとんど構図を変えずに高画質化(アップスケール)できたと思います。
上記の方法を試しても、CUDA のメモリ不足エラーが発生した場合は「エンコーダータイルサイズ(Encoder Tile Size)」と「デコーダーのタイルサイズ(Decoder Tile Size)」の2つのタイルサイズを小さい値に変更してください。
デフォルトでは↓このような数字ですが
- エンコーダータイルサイズ(Encoder Tile Size):960
- デコーダーのタイルサイズ(Decoder Tile Size):64
下記のように数値を下げてください。
- エンコーダータイルサイズ(Encoder Tile Size):600~700ぐらい
- デコーダーのタイルサイズ(Decoder Tile Size):40~50ぐらい
「エンコーダータイルサイズ(Encoder Tile Size)」と「デコーダーのタイルサイズ(Decoder Tile Size)」の2つのタイルサイズを小さくするとVRAMにかかる負荷が減るため高画質化に成功しやすくなります。
うまく高画質化されず途中でエラーで止まった場合は試してみてください。
「エンコーダータイルサイズ(Encoder Tile Size)」と「デコーダーのタイルサイズ(Decoder Tile Size)」の2つのタイルサイズを小さい値に変更する方法は、「Tiled VAE」を併用する他の高画質化(アップスケール)にも応用できます。
まとめ:Stable Diffusion web UIで高画質化する方法【低スペックグラボ向け】
今回の記事では低スペックグラボでStable Diffusion web UIで高画質化する方法を解説しました。
私みたいに低スぺグラボで高画質化(アップスケール)しようとするとエラーが出てしまう方はぜひ試してみてください。
他にも高画質化するいい方法があれば随時紹介していきたいと思います。
今回は以上です。
コメント