Stable Diffusion web UIでSDXLを利用する方法 (WSL+Ubuntu環境)

[Stable Diffusion] Stable Diffusion web UIでSDXLを利用する方法 (WSL+Ubuntu環境)

※ 当サイトは広告を含みます。

Stable Diffusion web UIがSDXLに対応したので環境を整えました。
今回もWSLとUbuntuの環境を使って画像生成で遊びたいと思います。

動作にはStable Diffusion web UIが必要になります。
以下にインストール手順をまとめてるので参考にしてください。

[]バージョン1.6でSDXLのrefiner機能が正式にサポートされました。
これまでは手動でモデルを切り替える必要がありましたが、最新版では自動で処理されます。

この機能に関しては後半で解説しますので、web UIのアップデートを行ってください。
ちなみに自身のバージョンが不明な場合、トップ画面の一番下を見ると書いてあります。

Stable Diffusion web UI バージョン情報

[]Stable Diffusion web UIの更新方法について記事を分離しました。
特定バージョンへの更新方法も記載してるので、環境が古い人は参考にしてください。

◆ Stable Diffusion web UIのインストール方法について

◆ 学習モデルのダウンロード方法と追加方法について

Stable Diffusion web UIをアップデート

SDXLを利用するためには、Stable Diffusion web UIのバージョンが1.5以上である必要があります。
また、refiner機能がサポートされたのが1.6のため、実質的に1.6以上でないと動きません。

学習モデルとVAEの追加

SDXLにはBaseRefinerの2種類のモデルがあります。Baseが通常利用するモデルでRefinerがimg2imgで利用するモデルです。
これはBaseで生成した画像を元にRefinerで再生成を行うことで、画質を向上させることができます。

各モデルとVAEは以下にあります。
https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0
https://huggingface.co/stabilityai/sdxl-vae

では、これらを次のコマンドで追加しましょう。


cd ~/stable-diffusion-webui
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors -O ./models/Stable-diffusion/sd_xl_base_1.0.safetensors
wget https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors -O ./models/Stable-diffusion/sd_xl_refiner_1.0.safetensors
wget https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors -O ./models/VAE/sdxl_vae.safetensors

WSLのメモリ不足対策

ダウンロードした時点でお気づきかもしれませんが、モデルのファイルサイズが非常に大きいです。
そのため、WSL経由で利用するとモデルを変更する時にメモリ不足でプロセスが落ちます。

これの解決は物理メモリの強化ですが、それはお金も掛かるし、そもそも僕の環境32GBなんですよね。

りさ

32GBって一般的に多い方では?

管理人

まさかミジンコPCだったか。もっと精進します。

では、どうするかですが、仕方がないので仮想環境のメリットを活かしてSSDを多少犠牲にします。
Swap(スワップ)と呼ばれる機能があり、これを使うとSSDの一部をメモリとして利用できます。

Windowsのユーザー用フォルダに次のファイルがあるので、好きなテキストエディタで開いてください。


C:\Users\(ユーザー名)\.wslconfig

このファイルの中身に以下を記述します。値は好きに変更しても大丈夫です。


[wsl2]
memory=16GB
swap=64GB

有効化はWSLの再起動が必要です。次のコマンドをWindows側で実行しましょう。


wsl.exe --shutdown

動作確認

これで追加作業は終わりです。さすがweb UIです。WSL以外の部分は簡単でしたね。
では、いつも通りの手順で起動してブラウザからアクセスしましょう。


./webui.sh

Baseモデルの利用

今までと利用方法は変わりません。ただし、SDXLは推奨サイズが1024x1024となり、これ以外を選択すると効果が薄れます。
Base用のモデルとVAEを選択して好きなプロンプトを入力。いつも通りGenerateで生成できます。

Baseモデルの利用
生成画像 (Baseモデル)

ParametersSampler: Euler a, Steps: 20, CFG scale: 7, Seed: 1986473260, Size: 1024x1024, Model: sd_xl_base_1.0

PromptCoexistence of humans and AI

NegativePrompt未使用

管理人

プロンプトの意味は人間とAIの共存。いや、共存どころか融合してるが...

りさ

なるほど。人間がAIに取り込まれることが共存なんですね。

管理人

せめて逆では。

Refinerモデルの利用 (Version 1.5以前)

先に伝えた通り最新版は自動でモデルが切り替わります。そのため、本手順は無視して構いません。

現時点ではRefinerはちょっと使い勝手が悪いです。単にtxt2imgで生成した画像をimg2imgするだけですが、この時にモデルを変更する必要があります。
そのため、軽い気持ちで生成と再生成を繰り返すのは無理があります。ここは未来のアップデートに期待しましょう。

使い方はtxt2imgで画像を生成した後、下の方にあるSend to img2imgを選択します。
そうすると利用したプロンプト等の情報を簡単に引き継げます。モデルは手動で変更してください。
ただし、このまま生成すると全然違う画像になってしまうので、Denoising strengthの値を0.1くらいまで下げます。

Send to img2imgを選択する
Denoising strengthの設定値を変更する
管理人

そして再生成した画像がこちらです。追加の描き込みにより繊細差が増しました(たぶん)。

生成画像 (Refinerモデル)

ParametersSampler: Euler a, Steps: 20, CFG scale: 7, Seed: 1959981540, Size: 1024x1024, Model: sd_xl_refiner_1.0, Denoising strength: 0.1

PromptCoexistence of humans and AI

NegativePrompt未使用

Refinerモデルの利用 (Version 1.6以上)

まずは通常通りRefiner以外の設定を行います。Baseとなるモデルに対して、いつもと同じ様に設定をしましょう。
そして通常の設定が終わったらRefinerに関する設定を行います。まずは次の画像を見てください。

Refinerの使い方

この青枠部分がRefinerに関する設定になります。ここをクリックすると設定可能な項目が展開されます。

Refinerの使い方

設定項目は2つです。1つ目はRefinerで利用するモデルです。SDXL用のRefinerモデルを選択してください。
2つ目は、どのタイミングでモデルを切り替えるかです。これはSwitch atの数値で設定します。

仕組みは簡単でSampling stepsSwitch atを掛けた数値を超えるとモデルが自動的に切り替わります。
例としてSampling steps20Switch at0.8なら、20 x 0.8 = 16となり、16ステップを超えると利用するモデルが変わります。

設定はこれだけです。手動で切り替えるのと比べて凄く楽ですよね。
では、いつも通りにGenerateで画像を生成しましょう。

生成画像 (Refinerモデル)

ParametersSampler: Euler a, Steps: 20, CFG scale: 7, Seed: 2255638359, Size: 1024x1024, Model: sd_xl_base_1.0, VAE: sdxl_vae.safetensors, Refiner: sd_xl_refiner_1.0, Refiner switch at: 0.8

PromptThe coolest future robot

NegativePrompt未使用

管理人

意味は「最高にかっこいい未来のロボット」です。いや、これラピュタでは...

りさ

むしろ古代のロボット感ある。

あとがき

描画される絵が繊細すぎて震えました。また、1.6以上ならRefinerの利用も現実的になり、手動と比べて格段に使い勝手が向上してます。
ただし、SDXLはモデルの大きさやRefinerの存在により生成に要する時間が増加しました。前みたいに適当に連打できないのが辛いですね。

今後は続々とアニメ系のモデルも登場するでしょうし、みなさんも今のうちにSDXLに対応しては如何ですか?

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。