【Stable Diffusion WebUI 】 ui-config 活用法。SDXL に合わせて設定を最適化＋デフォルト設定を変更してみた！

# はじめに

Stable Diffusion WebUI で SDXL を使うときには、 SDXL に合わせて設定を最適化する必要があります。 SDXL で必要な設定と、 ui-config を変更してデフォルト設定を変更する方法をまとめました！わーわー。

# WebUI で SDXL が使える！

Stable Diffusion WebUI を使うことで、簡単に SDXL を使うことができます！

詳しくは、以下の記事を参照してみてください！

https://qiita.com/tonosamart/items/16c99b4abbed0852af0b

## 【PR】
ちなみに、このサーバーは、[Innovation Farm 株式会社](https://www.inn-farm.co.jp/) さまのサーバーを使わせてもらっています！[本来は企業向けにクラウドを提供したり、IoT機器の製造から量産までを一気通貫に行うサービス](https://www.inn-farm.co.jp/index.html#service)を提供している会社です！最近では、AIを活用した新規プロダクトの研究開発なども行っているとのこと！今回は特別に、個人でも使用させていただいています！わーわー。

# デフォルト設定がめんどくさい！

SDXL になって、従来の設定とは違う部分が多数あります。
毎回それを設定するのは、面倒になってきました・・・。

# デフォルト設定を変えるには？

stable-diffusion-webui フォルダにある ui-config.json が設定ファイルになっています。ここを変更することで、デフォルトの値を変更したり、上限を変更したりすることができます。

# そもそも SDXL に最適な設定とは？

公式のドキュメントに、 SDXL の注意事項みたいなのが載ってました。

https://platform.stability.ai/docs/features/api-parameters#about-dimensions

ここを参考にして、大事そうなとこを設定していきます。

### dimensions / 幅と高さ

| dimensions |  | | |
|:-:|:-:|:-:|:-:|
|1024 x 1024|1152 x 896|896 x 1152|1216 x 832|
|832 x 1216|1344 x 768|768 x 1344|1536 x 640|
|640 x 1536||||

### Steps / サンプリングステップ数

| Steps | |
|:-:|:-:|
| デフォルト  | 30 |
| 範囲  | 30-50 |

### CFG Scale / CFG スケール

| CFG Scale | |
|:-:|:-:|
| デフォルト  | 7.0 |
| 範囲  | 4-14 |

### Sampler / サンプリング方法

| Sampler | |
|:-:|:-:|
|ddim|plms|
|k_euler|k_euler_ancestral|
|k_heun|k_dpm_2|k_dpm_2_ancestral|
|k_dpmpp_2s_ancestral|k_dpmpp_2m|
|k_dpmpp_sde||

## 早速変更しよう！

早速、 ui-config.json を変更していきましょう。上記の値の他、 img2img の Denoising strength を 0.3 にするのと、ついでなので、バッチの最大値を 1000 にしておきます。

以下は変更前と変更後の設定です。本当は各行の前後に他の項目があるけど省略しています。

変更前

```
    "txt2img/Width/value": 512,
    "txt2img/Height/value": 512,
    "txt2img/Sampling steps/value": 20,
    "txt2img/Sampling method/value": "Euler a",
    "txt2img/Batch count/maximum": 100,
    "img2img/Sampling steps/value": 20,
    "img2img/Sampling method/value": "Euler a",
    "img2img/Batch count/maximum": 100,
    "img2img/Denoising strength/value": 0.75,
```

変更後
```
    "txt2img/Width/value": 1024,
    "txt2img/Height/value": 1024,
    "txt2img/Sampling steps/value": 40,
    "txt2img/Sampling method/value": "DPM++ SDE Karras",
    "txt2img/Batch count/maximum": 1000,
    "img2img/Sampling steps/value": 40,
    "img2img/Sampling method/value": "DPM++ SDE Karras",
    "img2img/Batch count/maximum": 1000,
    "img2img/Denoising strength/value": 0.3,
```

## できたー

初期値が設定されて便利！

![スクリーンショット.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/91497630-837d-ae3d-f20c-9cfb6740b80c.png)

### おまけ

ためしに、 1000 枚画像生成したら、どのくらいの速度か測ってみました。

```
manga of cat in akihabara
```

![00001-3814990169.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/ba72d26b-31bd-08ac-6c45-f871b423b640.png)

```
100%|███████████████████████████████████████████| 40/40 [00:17<00:00,  2.28it/s]
100%|███████████████████████████████████████████| 40/40 [00:17<00:00,  2.32it/s]
 55%|███████████████████████▋                   | 22/40 [00:09<00:07,  2.28it/s]
Total progress:   0%|                     | 102/40000 [00:44<4:51:58,  2.28it/s]
```
約 5 時間かかるみたいですねー。1 枚 17 秒かかってる計算！
（サーバーのスペックは、[この記事](https://qiita.com/tonosamart/items/16c99b4abbed0852af0b)を参照してくださいー）

### おまけ 2

ためしに、昔の設定だとどのくらいかかるのか試してみました。モデルは BraV6 です。

![スクリーンショット.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/eac9213a-0635-5b88-27b5-ab58d90fc9f7.png)

![00001-1141913894.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/73844a8d-4d68-feab-769d-4bd3a13d34a4.png)

```
100%|███████████████████████████████████████████| 20/20 [00:01<00:00, 11.33it/s]
100%|███████████████████████████████████████████| 20/20 [00:01<00:00, 11.46it/s]
100%|███████████████████████████████████████████| 20/20 [00:01<00:00, 11.45it/s]
 10%|████▍                                       | 2/20 [00:00<00:02,  8.72it/s]
Total progress:   0%|                        | 63/20000 [00:06<34:23,  9.66it/s]
```

サンプリングステップ数が小さいのと、解像度が 512x512 なので、 1 枚 1 秒で終わりますね。 1000 枚でも 34 分！ うーん。こうしてみると Brav6 なので女の子は可愛いけど、 SDXL に比べると解像度が圧倒的に低いのが気になりますね・・・。

### おまけ 3

BraV6 で作った画像を、 refiner で生成してみました！ 画像サイズは 1024x1024 に設定してみます。

![00001-3050158921.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/42cbf7c7-e24f-0674-d74f-484356797bb2.png)

じゃーん。なんかいい感じに拡大＆細部の描写ができた気がします！ただ、顔の印象が変わっちゃってるので、この辺はやっぱりガチャなのかなあ・・・。 SDXL 対応の新しいモデルが発表されるまでは、こういう手法もありかもしれないですね！

## まとめ

・Stable Diffusion WebUI の初期設定は、 ui-config.json で変更できる
・SDXL は、従来のモデルとは推奨設定が違う
・デフォルトを変更しておくと便利！
・こないだは manga of にしたら白黒だったのに今日はカラーだな・・・
・わーわー