
Stable Diffusionで大きい画像生成するのって時間かかるよね…



WebUI標準じゃなく、拡張機能として追加するアップスケーラを使うと性能が全然ちがうよ!
Stable Diffusionで画像を生成する際に必須となるアップスケーラ。
Stable DiffusionのWebUIに標準搭載されているhires.fixなどが有名かと思いますが、今回はWebUIの拡張機能として使えるUltimate SD Upscalerというツールを紹介します。
このアップスケーラは、hires.fixと比較しても画像のクオリティはそのままに、圧倒的な生成スピードでアップスケールが可能です。
Ultimate SD Upscalerはhires.fixと同じクオリティで速度は約4倍!
ぜひ画像生成で活用してみてください。
また、当ブログのStable Diffusionに関する記事を以下のページでまとめていますので、あわせてご覧ください。


Stable Diffusionの導入方法から応用テクニックまでを動画を使って習得する方法についても以下のページで紹介しています。


Ultimate SD Upscalerとは
Ultimate SD Upscalerは、画像生成AI Stable DiffusionのWebUIであるAUTOMATIC1111で拡張機能として使用できるアップスケーラです。
通常、Stable Diffusionで画像を生成する場合は、512×512など、モデルの学習に使用されている小さいサイズの画像を生成して置き、良い画像が出力されたらそれをアップスケーラで拡張して大サイズの画像にします。
その際に使用するアップスケーラの性能により、画像のクオリティや生成速度が大きく変わります。
今回、使用するUltimate SD Upscalerは以下のページで公開されています。


Ultimate SD Upscalerのインストール
ここからは、Ultimate SD UpscalerをWebUI AUTOMATIC1111にインストールする方法について解説します。
まず、WebUIを起動したらExtensions
タブをクリックします。


Install from URL
タブをクリックします。


URL for extension's git repository
の項目に、以下のURLを入力し、Installをクリックします。
https://github.com/Coyote-A/ultimate-upscale-for-automatic1111.git


以下のメッセージが表示されたらインストール完了です。WebUIを再起動してください。


Ultimate SD Upscalerを使って画像生成する手順
ここからは、実際にUltimate SD Upscalerを使用して画像生成する手順を解説します。
まず、img2img
タブをクリックします。


アップスケールの対象となる元の画像を生成した時のプロンプトと、ネガティブプロンプトを入力します。


アップスケールの対象となる元の画像をimg2img
タブの以下の赤枠エリアにドラッグ&ドロップして読み込みます。正常に読み込めると、以下のようにWebUIに画像が表示されます。


通常のimg2imgのパラメータを設定します。Sampling method
、Sampling steps
、Denoising strength
、Seed
を元画像に設定したものと同じ値に設定します。


img2img設定画面の一番下にあるScript
という項目をクリックし、Ultimate SD Upscaler
を選択します。


すると以下のようにUltimate SD Upscalerに関する設定項目が展開されます。


今回は、公式の推奨設定を参考に以下のように設定しました。Upscaler
はフォトリアル系で使用する場合はR-ESRGAN 4x+
など必要に応じて変更してください。


以上で設定は完了です。Generate
ボタンをクリックし、画像生成を実行してください。


Ultimate SD Upscalerのパラメータ設定
Ultimate SD Upscalerパラメータは以下の項目が用意されています。
パラメータ名 | 説明 | 推奨値 |
---|---|---|
Denoise | ノイズ除去の強度 | 0.35(画像強化)、0.15-0.20(変更不要) |
Target size type | 最終画像サイズの取得元 | – |
Upscaler | 画像のアップスケール方法 | ESRGAN(写真リアル)、R-ESRGAN 4x+(その他) |
Type | タイル処理のタイプ | Linear, Chess, None |
Tile width | 処理するタイルの幅 | 512px(2k画像) |
Tile height | 処理するタイルの高さ | 512px(2k画像) |
Padding | タイル処理時の隣接タイルのピクセル数 | – |
Mask blur | タイルマスクのぼかし度 | 12-16(512-768pxタイルサイズ) |
Seams fix | シーム修正の有無 | – |
Save options | 保存オプション(Upscaled, Seams fix) | – |
公式の推奨設定は以下のように提示されいます。


各設定項目の詳細な説明については、公式のFAQに解説がありますので、下記ページを確認してください。


実行結果
ここからは、実際にUltimate SD Upscalerを使用した場合と、WebUI標準のアップスケーラhires.fixを使用した場合を比較しながら生成結果を確認していきます。
512x512
サイズの画像を、それぞれのアップスケーラを使用して2倍の1024x1024
のサイズにアップスケールします。
生成条件
生成条件は以下のようになります。
プロンプト
(masterpiece?1.5), (best quality?1.5), (illustration:1.5),(realistic body:1.2),(1gilr, solo : 1.5),
pointy hat, wizard dress, blonde hair, blue eyes ,bright eyes, expressionless,
Halloween festival, pumpkin, crowd, basket with sweets, candle,
ネガティブプロンプト
EasyNegativeV2, (worst quality, bad quality:1.4), (extra fingers, deformed hands, polydactyl:1.5), (bad hands, bad fingers, bad arm, missing finger, Incomplete hand:1.5), worst quality hands, monochrome, text, nsfw,
パラメータ
設定パラメータ:
Steps: 40, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 4264463637, Size: 512×512, Model hash: cd8732bdc3, Model: ShiratakiMix-add-VAE
元画像
生成条件で生成された元画像は、512x512
の以下の画像となります。


hires.fixでのアップスケール結果
まずはWebUI標準のアップスケーラであるhires.fixを使った場合の生成結果です。
0%| | 0/40 [00:00<?, ?it/s]
2%|█ | 1/40 [00:00<00:20, 1.89it/s]
5%|██▏ | 2/40 [00:01<00:19, 1.93it/s]
8%|███▎ | 3/40 [00:01<00:19, 1.93it/s]
10%|████▍ | 4/40 [00:02<00:18, 1.94it/s]
12%|█████▌ | 5/40 [00:02<00:17, 1.95it/s]
15%|██████▌ | 6/40 [00:03<00:17, 1.95it/s]
18%|███████▋ | 7/40 [00:03<00:16, 1.95it/s]
20%|████████▊ | 8/40 [00:04<00:16, 1.96it/s]
22%|█████████▉ | 9/40 [00:04<00:15, 1.96it/s]
25%|██████████▊ | 10/40 [00:05<00:15, 1.95it/s]
28%|███████████▊ | 11/40 [00:05<00:14, 1.95it/s]
30%|████████████▉ | 12/40 [00:06<00:14, 1.96it/s]
32%|█████████████▉ | 13/40 [00:06<00:13, 1.95it/s]
35%|███████████████ | 14/40 [00:07<00:13, 1.95it/s]
38%|████████████████▏ | 15/40 [00:07<00:12, 1.96it/s]
40%|█████████████████▏ | 16/40 [00:08<00:12, 1.96it/s]
42%|██████████████████▎ | 17/40 [00:08<00:11, 1.95it/s]
45%|███████████████████▎ | 18/40 [00:09<00:11, 1.95it/s]
48%|████████████████████▍ | 19/40 [00:09<00:10, 1.95it/s]
50%|█████████████████████▌ | 20/40 [00:10<00:10, 1.95it/s]
52%|██████████████████████▌ | 21/40 [00:10<00:09, 1.96it/s]
55%|███████████████████████▋ | 22/40 [00:11<00:09, 1.96it/s]
57%|████████████████████████▋ | 23/40 [00:11<00:08, 1.95it/s]
60%|█████████████████████████▊ | 24/40 [00:12<00:08, 1.96it/s]
62%|██████████████████████████▉ | 25/40 [00:12<00:07, 1.96it/s]
65%|███████████████████████████▉ | 26/40 [00:13<00:07, 1.95it/s]
68%|█████████████████████████████ | 27/40 [00:13<00:06, 1.95it/s]
70%|██████████████████████████████ | 28/40 [00:14<00:06, 1.95it/s]
72%|███████████████████████████████▏ | 29/40 [00:14<00:05, 1.95it/s]
75%|████████████████████████████████▎ | 30/40 [00:15<00:05, 1.95it/s]
78%|█████████████████████████████████▎ | 31/40 [00:15<00:04, 1.95it/s]
80%|██████████████████████████████████▍ | 32/40 [00:16<00:04, 1.95it/s]
82%|███████████████████████████████████▍ | 33/40 [00:16<00:03, 1.95it/s]
85%|████████████████████████████████████▌ | 34/40 [00:17<00:03, 1.96it/s]
88%|█████████████████████████████████████▋ | 35/40 [00:17<00:02, 1.96it/s]
90%|██████████████████████████████████████▋ | 36/40 [00:18<00:02, 1.96it/s]
92%|███████████████████████████████████████▊ | 37/40 [00:18<00:01, 1.96it/s]
95%|████████████████████████████████████████▊ | 38/40 [00:19<00:01, 1.96it/s]
98%|█████████████████████████████████████████▉ | 39/40 [00:19<00:00, 1.97it/s]
100%|███████████████████████████████████████████| 40/40 [00:20<00:00, 1.95it/s]
Tile 1/9
Tile 2/9
Tile 3/9
Tile 4/9
Tile 5/9
Tile 6/9
Tile 7/9
Tile 8/9
Tile 9/9
0%| | 0/40 [00:00<?, ?it/s]
2%|█ | 1/40 [00:04<03:03, 4.69s/it]
5%|██▏ | 2/40 [00:09<02:58, 4.69s/it]
8%|███▎ | 3/40 [00:14<02:53, 4.68s/it]
10%|████▍ | 4/40 [00:18<02:48, 4.69s/it]
12%|█████▌ | 5/40 [00:23<02:43, 4.68s/it]
15%|██████▌ | 6/40 [00:28<02:39, 4.68s/it]
18%|███████▋ | 7/40 [00:32<02:34, 4.68s/it]
20%|████████▊ | 8/40 [00:37<02:29, 4.69s/it]
22%|█████████▉ | 9/40 [00:42<02:25, 4.69s/it]
25%|██████████▊ | 10/40 [00:46<02:20, 4.69s/it]
28%|███████████▊ | 11/40 [00:51<02:16, 4.70s/it]
30%|████████████▉ | 12/40 [00:56<02:11, 4.70s/it]
32%|█████████████▉ | 13/40 [01:01<02:07, 4.70s/it]
35%|███████████████ | 14/40 [01:05<02:02, 4.70s/it]
38%|████████████████▏ | 15/40 [01:10<01:57, 4.71s/it]
40%|█████████████████▏ | 16/40 [01:15<01:53, 4.71s/it]
42%|██████████████████▎ | 17/40 [01:19<01:48, 4.71s/it]
45%|███████████████████▎ | 18/40 [01:24<01:43, 4.71s/it]
48%|████████████████████▍ | 19/40 [01:29<01:38, 4.71s/it]
50%|█████████████████████▌ | 20/40 [01:33<01:34, 4.71s/it]
52%|██████████████████████▌ | 21/40 [01:38<01:29, 4.72s/it]
55%|███████████████████████▋ | 22/40 [01:43<01:24, 4.72s/it]
57%|████████████████████████▋ | 23/40 [01:48<01:20, 4.72s/it]
60%|█████████████████████████▊ | 24/40 [01:52<01:15, 4.72s/it]
62%|██████████████████████████▉ | 25/40 [01:57<01:10, 4.73s/it]
65%|███████████████████████████▉ | 26/40 [02:02<01:06, 4.73s/it]
68%|█████████████████████████████ | 27/40 [02:07<01:01, 4.73s/it]
70%|██████████████████████████████ | 28/40 [02:11<00:56, 4.74s/it]
72%|███████████████████████████████▏ | 29/40 [02:16<00:52, 4.74s/it]
75%|████████████████████████████████▎ | 30/40 [02:21<00:47, 4.74s/it]
78%|█████████████████████████████████▎ | 31/40 [02:26<00:42, 4.74s/it]
80%|██████████████████████████████████▍ | 32/40 [02:30<00:37, 4.74s/it]
82%|███████████████████████████████████▍ | 33/40 [02:35<00:33, 4.74s/it]
85%|████████████████████████████████████▌ | 34/40 [02:40<00:28, 4.74s/it]
88%|█████████████████████████████████████▋ | 35/40 [02:45<00:23, 4.75s/it]
90%|██████████████████████████████████████▋ | 36/40 [02:49<00:18, 4.75s/it]
92%|███████████████████████████████████████▊ | 37/40 [02:54<00:14, 4.75s/it]
95%|████████████████████████████████████████▊ | 38/40 [02:59<00:09, 4.75s/it]
98%|█████████████████████████████████████████▉ | 39/40 [03:04<00:04, 4.75s/it]
100%|███████████████████████████████████████████| 40/40 [03:08<00:00, 4.72s/it]
Total progress: 100%|███████████████████████████| 80/80 [03:48<00:00, 2.86s/it]
ログに表示されている通り、4分近い時間がかかりました。画質は綺麗に拡大されており、問題ないできです。


Ultimate SD Upscalerのアップスケール結果
続いて、今回インストールしたUltimate SD Upscalerでアップスケールした結果です。
Startup time: 27.0s (launcher: 1.8s, import torch: 7.1s, import gradio: 1.2s, setup paths: 0.7s, other imports: 1.0s, setup codeformer: 0.6s, load scripts: 2.1s, create ui: 1.9s, gradio launch: 10.6s).
Canva size: 1024x1024
Image size: 512x512
Scale factor: 2
Upscaling iteration 1 with scale factor 2
Tile 1/9
Tile 2/9
Tile 3/9
Tile 4/9
Tile 5/9
Tile 6/9
Tile 7/9
Tile 8/9
Tile 9/9
Tile size: 512x512
Tiles amount: 4
Grid: 2x2
Redraw enabled: True
Seams fix mode: HALF_TILE
0%| | 0/9 [00:00<?, ?it/s]
11%|█████ | 1/9 [00:02<00:17, 2.20s/it]
22%|██████████ | 2/9 [00:03<00:09, 1.40s/it]
33%|███████████████ | 3/9 [00:03<00:06, 1.15s/it]
44%|████████████████████ | 4/9 [00:04<00:05, 1.03s/it]
56%|█████████████████████████ | 5/9 [00:05<00:03, 1.04it/s]
67%|██████████████████████████████ | 6/9 [00:06<00:02, 1.09it/s]
78%|███████████████████████████████████ | 7/9 [00:07<00:01, 1.12it/s]
89%|████████████████████████████████████████ | 8/9 [00:08<00:00, 1.14it/s]
100%|█████████████████████████████████████████████| 9/9 [00:08<00:00, 1.01it/s]
0%| | 0/9 [00:00<?, ?it/s]
11%|█████ | 1/9 [00:00<00:06, 1.18it/s]
22%|██████████ | 2/9 [00:01<00:05, 1.19it/s]
33%|███████████████ | 3/9 [00:02<00:05, 1.18it/s]
44%|████████████████████ | 4/9 [00:03<00:04, 1.18it/s]
56%|█████████████████████████ | 5/9 [00:04<00:03, 1.19it/s]
67%|██████████████████████████████ | 6/9 [00:05<00:02, 1.19it/s]
78%|███████████████████████████████████ | 7/9 [00:05<00:01, 1.19it/s]
89%|████████████████████████████████████████ | 8/9 [00:06<00:00, 1.19it/s]
100%|█████████████████████████████████████████████| 9/9 [00:07<00:00, 1.19it/s]
0%| | 0/9 [00:00<?, ?it/s]
11%|█████ | 1/9 [00:00<00:06, 1.18it/s]
22%|██████████ | 2/9 [00:01<00:05, 1.19it/s]
33%|███████████████ | 3/9 [00:02<00:05, 1.19it/s]
44%|████████████████████ | 4/9 [00:03<00:04, 1.19it/s]
56%|█████████████████████████ | 5/9 [00:04<00:03, 1.19it/s]
67%|██████████████████████████████ | 6/9 [00:05<00:02, 1.19it/s]
78%|███████████████████████████████████ | 7/9 [00:05<00:01, 1.19it/s]
89%|████████████████████████████████████████ | 8/9 [00:06<00:00, 1.19it/s]
100%|█████████████████████████████████████████████| 9/9 [00:07<00:00, 1.19it/s]
0%| | 0/9 [00:00<?, ?it/s]
11%|█████ | 1/9 [00:00<00:06, 1.18it/s]
22%|██████████ | 2/9 [00:01<00:05, 1.19it/s]
33%|███████████████ | 3/9 [00:02<00:05, 1.19it/s]
44%|████████████████████ | 4/9 [00:03<00:04, 1.19it/s]
56%|█████████████████████████ | 5/9 [00:04<00:03, 1.19it/s]
67%|██████████████████████████████ | 6/9 [00:05<00:02, 1.19it/s]
78%|███████████████████████████████████ | 7/9 [00:05<00:01, 1.19it/s]
89%|████████████████████████████████████████ | 8/9 [00:06<00:00, 1.19it/s]
100%|█████████████████████████████████████████████| 9/9 [00:07<00:00, 1.19it/s]
0%| | 0/11 [00:00<?, ?it/s]
9%|████ | 1/11 [00:00<00:05, 1.93it/s]
18%|████████ | 2/11 [00:01<00:04, 1.92it/s]
27%|████████████ | 3/11 [00:01<00:04, 1.94it/s]
36%|████████████████ | 4/11 [00:02<00:03, 1.94it/s]
45%|████████████████████ | 5/11 [00:02<00:03, 1.95it/s]
55%|████████████████████████ | 6/11 [00:03<00:02, 1.95it/s]
64%|████████████████████████████ | 7/11 [00:03<00:02, 1.95it/s]
73%|████████████████████████████████ | 8/11 [00:04<00:01, 1.95it/s]
82%|████████████████████████████████████ | 9/11 [00:04<00:01, 1.96it/s]
91%|███████████████████████████████████████ | 10/11 [00:05<00:00, 1.97it/s]
100%|███████████████████████████████████████████| 11/11 [00:05<00:00, 1.96it/s]
0%| | 0/11 [00:00<?, ?it/s]
9%|████ | 1/11 [00:00<00:05, 1.94it/s]
18%|████████ | 2/11 [00:01<00:04, 1.92it/s]
27%|████████████ | 3/11 [00:01<00:04, 1.93it/s]
36%|████████████████ | 4/11 [00:02<00:03, 1.93it/s]
45%|████████████████████ | 5/11 [00:02<00:03, 1.94it/s]
55%|████████████████████████ | 6/11 [00:03<00:02, 1.94it/s]
64%|████████████████████████████ | 7/11 [00:03<00:02, 1.94it/s]
73%|████████████████████████████████ | 8/11 [00:04<00:01, 1.94it/s]
82%|████████████████████████████████████ | 9/11 [00:04<00:01, 1.95it/s]
91%|███████████████████████████████████████ | 10/11 [00:05<00:00, 1.95it/s]
100%|███████████████████████████████████████████| 11/11 [00:05<00:00, 1.95it/s]
0%| | 0/11 [00:00<?, ?it/s]
9%|████ | 1/11 [00:00<00:05, 1.95it/s]
18%|████████ | 2/11 [00:01<00:04, 1.95it/s]
27%|████████████ | 3/11 [00:01<00:04, 1.95it/s]
36%|████████████████ | 4/11 [00:02<00:03, 1.95it/s]
45%|████████████████████ | 5/11 [00:02<00:03, 1.96it/s]
55%|████████████████████████ | 6/11 [00:03<00:02, 1.96it/s]
64%|████████████████████████████ | 7/11 [00:03<00:02, 1.95it/s]
73%|████████████████████████████████ | 8/11 [00:04<00:01, 1.96it/s]
82%|████████████████████████████████████ | 9/11 [00:04<00:01, 1.96it/s]
91%|███████████████████████████████████████ | 10/11 [00:05<00:00, 1.96it/s]
100%|███████████████████████████████████████████| 11/11 [00:05<00:00, 1.96it/s]
0%| | 0/11 [00:00<?, ?it/s]
9%|████ | 1/11 [00:00<00:05, 1.95it/s]
18%|████████ | 2/11 [00:01<00:04, 1.95it/s]
27%|████████████ | 3/11 [00:01<00:04, 1.95it/s]
36%|████████████████ | 4/11 [00:02<00:03, 1.95it/s]
45%|████████████████████ | 5/11 [00:02<00:03, 1.96it/s]
55%|████████████████████████ | 6/11 [00:03<00:02, 1.95it/s]
64%|████████████████████████████ | 7/11 [00:03<00:02, 1.95it/s]
73%|████████████████████████████████ | 8/11 [00:04<00:01, 1.95it/s]
82%|████████████████████████████████████ | 9/11 [00:04<00:01, 1.95it/s]
91%|███████████████████████████████████████ | 10/11 [00:05<00:00, 1.95it/s]
100%|███████████████████████████████████████████| 11/11 [00:05<00:00, 1.95it/s]
Total progress: 80it [00:59, 1.35it/s]
ログに表示されている通り、1分弱というhires.fixよりも圧倒的速い生成スピードです。画質も遜色ないクオリティでした。


以上のような結果となりました。
Ultimate SD Upscalerを使った方が圧倒的に速く、使うメリットは充分あるかと思います。
Stable Diffusionのテクニックを効率よく学ぶには?



Stable Diffusionを使ってみたいけど、ネットで調べた情報を試してもうまくいかない…



そんな時は、操作方法の説明が動画で見られるUdemyがおすすめだよ!
動画学習プラットフォームUdemyでは、画像生成AIで高品質なイラストを生成する方法や、AIの内部で使われているアルゴリズムについて学べる講座が用意されています。
Udemyは講座単体で購入できるため安価で(セール時1500円くらいから購入できます)、PCが無くてもスマホでいつでもどこでも手軽に学習できます。
Stable Diffusionに特化して学ぶ
Stable Diffusionに特化し、クラウドコンピューティングサービスPaperspaceでの環境構築方法から、モデルのマージ方法、ControlNetを使った構図のコントロールなど、中級者以上のレベルを目指したい方に最適な講座です。


画像生成AIの仕組みを学ぶ
画像生成AIの仕組みについて学びたい方には、以下の講座がおすすめです。
画像生成AIで使用される変分オートエンコーダやGANのアーキテクチャを理解することで、よりクオリティの高いイラストを生成することができます。


まとめ
今回は、WebUIの拡張機能として使えるアップスケーラUltimate SD Upscalerの使い方について解説しました。
私も今までは単純なサイズの拡張ではhires.fixを使用してきましたが、生成スピードの面ではUltimate SD Upscalerが大きく上回る形となりましたので、今後はこちらに切り替えていく予定です。
今回は2倍のサイズへのアップスケールでしたが倍率が大きくなるほど効果が上がると思われますので、ぜひ活用してみてください。
過去に当サイトで紹介したStable Diffusionのアップスケーラについても以下の記事で解説していますので、あわせてご覧ください。


また、プロンプトの作成が難しいと思われている方には、AIでプロンプトを自動生成するのがおすすめです。
「StableDiffusionのプロンプト(呪文)を自然言語処理モデルGPT-3(Catchy)で自動生成する方法」で詳細を解説していますので、あわせてご覧ください。
それでは、また次の記事でお会いしましょう。





