2023年7月25日に公開されたAUTOMATIC1111版webui v1.5.0にてSDXLが正式にサポートされるようになりました。そこで、この記事ではAUTOMATIC1111版webuiでSDXLを使用する方法について書いていきます。
AUTOMATIC1111版webuiを使用したことがないという方は併せてこちらの記事もご覧ください。
SDXLの概要
SDXLはStability AIが2023年7月27日にリリースしたStable Diffusionの最新モデルです。SD1系やSD2系と比べてかなり変化していますが、大きな違いは以下の二点です。
- 学習ベースが512×512 (SD1系)/712×712 (SD2系) から1024×1024になった。
- 過程が1passから2passになった。
学習ベースが大きくなったことで、hires.fixやTiled Diffusionを使用せずとも、ある程度の高画質画像を素出しすることが可能になっています。
また、過程が1passから2pass (BaseとRefiner) になることで画質が向上するとされています。
モデル等のダウンロード
SDXLは2passを採用しているため、モデルはBaseとRefinerの二つが必要となります。よって以下の二つのモデルとVAEをダウンロードしてください。
AUTOMATIC1111版webui環境の整備
SDXLを使用する場合、SD1系やSD2系のwebuiとは環境を分けた方が賢明です(既存の拡張機能が対応しておらずエラーを吐くなどがあるため)。
適当な階層 (Cドラ直下など) に作業ディレクトリ (ここではaiworks2-sdxl
とした) を作成、直下にstable-diffusion-webui
ディレクトリがない状態でコマンドプロンプト等を開きます。その後以下を順に実行します。行頭の>
は不要です。
> cd c:\aiwork2-sdxl
> git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
無事作業ディレクトリにstable-diffusion-webui
が作成されたら、先ほどダウンロードしておいたモデルをstable-diffusion-webui\models\Stable-diffusion
に、VAEはmodels\VAE
に置いて下さい。
stable-diffusion-webui\webui-user.bat
をメモ帳などで開き、--autolaunch
と--no-half-vae
を付けます。その他必要なオプションがあれば適当に付けてください。
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--autolaunch --no-half-vae
call webui.bat
後はwebui-user.bat
をクリックして実行し、webuiを起動して下さい。
画像の生成
前述しましたがSDXLは2passを採用しているためstable-diffusion-xl-base-1.0
とstable-diffusion-xl-refiner-1.0
の二つのモデルを使用する必要があります。しかし、執筆時点 (2023/07/28) ではAUTOMATIC1111版webuiはrefiner
に対応していません。
このため通常の画像生成とは異なり、少し特殊な生成方法となります(v1.5.0からバージョンアップしていけば対応する可能性はあります)。
checkpointでstable-diffusion-xl-base-1.0
を、VAEでsdxl-vae
を指定します。
モデルとVAEを指定したら適当にプロンプトを入れ、幅と高さをデフォルトの512から1024×1024に変更します。ここまで出来たらGenerateを押して画像を生成します。
これが2passの内、Baseでの推論となります。
続いて生成された画像をi2iに転送します。checkpointをstable-diffusion-xl-refiner-1.0
に変更、プロンプトや幅高さ、CFG Scaleなどの設定値はそのままで、Denoising strengthのみ0.1~0.3程度に変更します。Upscaleは行いません。設定が完了したらGenerateを押して画像を生成します。
これが2passの内、Refinerでの推論となります。
AUTOMATIC1111版webuiがRefinerに対応するまでは、このようにt2iで生成した後にi2iへ転送し、checkpointを切り替え生成するという方法を取る必要があるようです。
Refinerを通した後は十分綺麗になっていますがi2i後も解像度は1024×1024と変わらないため、高解像度化する場合などはこの後にTiled DiffusionやSD Upscalerを使用する形になります。
【Base後(左)とRefiner後(右)の比較】SD1系やSD2系のデフォルトと比較するとBaseでも十分綺麗になっているように見えますが、2pass処理でRefinerを使用すると書き込みが増えていることがわかります。
以上、AUTOMATIC1111版webuiでSDXLを使用する方法でした。
コメント