CIVITAIを覗いていると、SDXL用のモデルやLoraが多数登場してきています。
「使ってみたいけど、実際生成しにくいからな・・・」
なんて思っているあなた!
確かにちょっと前までなら色々な面で画像生成がしにくい面はありました。
しかしながら最近は拡張機能もだいぶ整ってきています。ControlNetもSDXLで使えるようになりましたよ。
ControlNetとは?
ControlNetは、元画像からさまざまな情報を参照して画像の生成を助けてくれる拡張機能です。
参照できる情報は「線画」「放線」「深度」「ポージング」などなど様々あります。
Stable Diffusion の数ある拡張機能の中でも、一番知名度が高い拡張機能です。
SDXLでもControlNetが利用可能となっていますので、基本的な使い方を解説していきます。
Stable Diffusion SDXL版ControlNetをインストールする方法
SDXL版ControlNetの利用にはStable Diffusion のバージョンが v1.6.0以降の必要があります。
web ui を起動して画面の一番下に現在のバージョンが書いてありますので、それ以前のバージョンをお使いの方はバージョンアップが必要となります。
バージョンアップが必要な方はこちらの記事を参考にしてください。
SDXLの使用環境を作る
SDXLの利用にはSDXL対応のモデルやVAEが必要となりますので、普段SDXLを使わない方はそれらもダウンロードする必要があります。
モデルについてはCIVITAIからお好きなモデルを選ぶと良いでしょう。
モデルの保存先は、stable-diffusion-webui / models / stable-diffusion です。
VAEについてはHuggingFaceから
VAEの保存先は stable-diffusion-webui / models / VAE です。
VAEはwebuiのsettingsからVAEのセッティングをしてください。
Loraやembedding類もSDXL専用の物が必要なので、CIVITAIからお好きなものをダウンロードして所定の場所に保存してください。
ControlNetをバージョンアップする
もしも普段からSD1.5を使っているならばすでにControlNetは導入されていると思います。
バージョンがControlNet 1.1.400 以降であればそのままSDXLに対応しますので、バージョンの確認をしてみましょう。
web ui を起動して、Extensionsのタグから導入済みの拡張機能の状況を確認することができます。
check for updates をクリックするとupdate情報が表示されます。
上記のように「new commits」となっていれば新しいバージョンがあります。
Apply and restart UI をクリックして最新版にアップロードしてください。
ただ私のように多くの拡張機能を利用している場合は、必要なものだけを選択してバージョンアップしてください。一気に全てをアップデートすると、何かしらのエラーに遭遇します。
ControlNetを導入する
ControlNetが導入されていない場合は新たにに導入する必要があります。
1:「Extentions」タブを開き、「Install from URL」タブをクリック。
2:URLの欄に『https://github.com/Mikubill/sd-webui-controlnet』を入力して、「Install」をクリック。
リロードしても上手く起動しないことがあるので、その場合は一度web ui を立ち上げ直してください。
そしてControlNetはこれだけでは使えません。モデルが必要になるのでそれらをダウンロードしてくる必要があります。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
Stable Diffusion SDXL版ControlNetモデルについて
SDXL版ControlNetモデルは lllyasviel 氏がHugging Face にまとめてくれているのでそちらを使わせていただきます。
ここには各有志の方々が作成されたSDXL版ControlNetモデルが置かれている為、同じ用途の物もあるので全てをダウンロードする必要はありません。使うのもだけを選んでダウンロードしてください。
また、今回初めてControlNetを使う方はどのControl Typeで何ができるのかがまるでわからないと思います。
そんな方はこちらの記事でControlNetの機能を確認してください。
ダウンロードしたControlNetモデルは
stable-diffusion-webui\extensions\sd-webui-controlnet\models
もしくは stable-diffusion-webui\models\ControlNet
に保存してください。
Stable Diffusion SDXL版ControlNetの使い方
ControlNetは複数の効果を重ねがけして使うことがあります。
デフォルトの設定では1個しか使えませんので、設定を変更しましょう。
はsettings タグからControlNetを選択して「Multi-ControlNet: ControlNet unit number (requires restart)」の値を「3」くらいにしておきましょう。
値を変更したら忘れずにApply settings を押してください。
ではtxt2img の画面へ移動します。
①先ほどセッティングしたのでunitが3カ所に増えています。重ねがけで使う場合は各ユニットでそれぞれの設定が必要になります。
②ここに参照する画像をドロップします。
③Enable – 使う際には有効化しましょう。
Low VRAM – 消費VRAMを減らす。VRAM不足でエラーになる場合は有効化しましょう。
Pixel Perfect – プリプロセッサの解像度を自動で設定してくれます。基本的には有効化して、不都合があれば手動で設定しましょう。
Allow Preview – ControlNet で参照される画像を先に確認することができます。
爆発マークをクリックすると参照画像を書き出してくれます。実際の生成前に参照画像がどんなものかを確認した方が時短になる事も多いので、使ってみてください。
次にControl Typeを選択します。使うものを選択してください。
Preprocessorはいろいろ種類はあるのですが、OpenPoseから顔を抜く時ぐらいしか変更することはありません。デフォルトでいいでしょう。
Modelも自動的に選んでくれるのであまり選択の機会はないのですが、複数のモデルを所持している場合に限り手動で設定することがあります。
Weightについては参照する画像とプロンプトに乖離がある場合は調整の必要があります。また、複数のControlNet を使う際にも調整しないと変な画像が生成されます。
Control Mode でプロンプトとControlNet の強度を調節します。
Resize Mode は参照画像と生成画像のサイズが合わない時に変更してください。
Stable Diffusion SDXL版ControlNetを使って画像を生成してみた!
まずはCannyを使ってみます。
自作した元画像とCanny画像は
これを以下の条件で生成します。
A very elegant woman in Swim suit , beautiful hair, beautiful eyes, happy expression, Tattoo
Negative prompt: unaestheticXL_hk1
Steps: 30, Sampler: Euler a, CFG scale: 7, Seed: 3888181473, Size: 768×1344, Model hash: 92957019b4, Model: realismEngineSDXL_v20VAE, VAE hash: 63aeecb90f, VAE: sdxl_vae.safetensors, RNG: CPU, ControlNet 0: “Module: canny, Model: kohya_controllllite_xl_canny_anime [7158f7e0], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Processor Res: 512, Threshold A: 100, Threshold B: 200, Guidance Start: 0, Guidance End: 1, Pixel Perfect: False, Control Mode: Balanced, Save Detected Map: True”, TI hashes: “unaestheticXL_hk1: ca29d24a64c1, unaestheticXL_hk1: ca29d24a64c1”, Version: v1.6.0
するとこんな画像ができます。
着物の柄をタトゥーに変えてみました。
SDXL版で新しく登場した「Revision」も使ってみます。
この機能は元画像からプロンプトなしで新たに画像を生成できます。
元画像はこちら
Noise Augmentationの値「0」で生成
Noise Augmentationの値「1」で生成
Noise Augmentationを上げると元画像から離れていくようです。
ランダムに何かを生成したい時には結構面白いかもしれません。
まとめ
いかがでしたでしょうか?
Stable Diffusion SDXLでのControlNetの使い方!SDXL版のControlNetモデルについても解説について解説してきました。
今回のポイントをまとめると、以下のようになります。
- Stable Diffuisonのバージョンは v1.6.0以降&ControlNet 1.1.400 以降で利用可能
- ControlNetのインストールとモデルのダウンロードをする
SDXLも登場からしばらく経ちましたので、安定して動くようになってきましたね。
ControlNetも使えるとなれば、SD1.5から本格的に乗り換える人も増えていくでしょう。
もしまだSDXLで画像生成をしていない方はこれを機にチャレンジしてみてください。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい