今回はStable Diffusion XL(SDXL)に関する話題で、タイトルの通り
を丁寧にご紹介するという内容になっています。
SDXLがリリースされてからしばらく経ち、旧Stable Diffusion v1.5から乗り換える方も増えてきたとは思いますが、Stable Diffusion web UIにおいてSDXLではControlNet拡張機能が使えないという点が大きな課題となっていました。しかし本日、拡張機能の開発者であるlllyasviel氏がControlNet v1.1.400のリリースを発表しSDXLに一部対応したことが明らかになりました。
そこでここではSDXLでControlNetを使う方法を解説していきますね。
前提知識:ControlNetとは?
まずはじめに、ControlNetとは生成される画像の構図などを制御できる技術のことです。例えば
- 生成画像のキャラクターのポーズを指定する
- キャラクターを変えずに色や画風だけ変える
- キャラクターをリアル化する
- AIが苦手な手を綺麗に描写させる
などとても幅広い用途に使うことができ非常に強力なのが特徴です。Stable Diffusionを使いこなすならまさに必須の技術といっても過言ではありません。
詳しくは下記ページで解説していますのでそちらも併せてご覧ください。
サポートされているSDXL用のControlNetモデルについて
次に執筆時点ではSDXL用のControlNetモデルは(SD1.5用と比べると)一部のみがサポートされています。ただ一部のみといってもどれを使えばいいのか困る程度には多くのモデルが公開されていますので、現状使えるモデルについて簡単にご紹介しておきます。
ControlNet v1.1.400の公式ページからSDXL用のモデル一覧を抜粋すると次のようにたくさんのモデルがあることがわかります。
- diffusers_xl_canny_full.safetensors
- diffusers_xl_canny_mid.safetensors
- diffusers_xl_canny_small.safetensors
- diffusers_xl_depth_full.safetensors
- diffusers_xl_depth_mid.safetensors
- diffusers_xl_depth_small.safetensors
- ip-adapter_xl.pth
- kohya_controllllite_xl_depth_anime.safetensors
- kohya_controllllite_xl_canny_anime.safetensors
- kohya_controllllite_xl_scribble_anime.safetensors
- kohya_controllllite_xl_openpose_anime.safetensors
- kohya_controllllite_xl_openpose_anime_v2.safetensors
- sai_xl_canny_128lora.safetensors
- sai_xl_canny_256lora.safetensors
- sai_xl_depth_128lora.safetensors
- sai_xl_depth_256lora.safetensors
- sai_xl_recolor_128lora.safetensors
- sai_xl_recolor_256lora.safetensors
- sai_xl_sketch_128lora.safetensors
- sai_xl_sketch_256lora.safetensors
- sargezt_xl_depth.safetensors
- sargezt_xl_depth_faid_vidit.safetensors
- sargezt_xl_depth_zeed.safetensors
- sargezt_xl_softedge.safetensors
- t2i-adapter_xl_canny.safetensors
- t2i-adapter_xl_openpose.safetensors
- t2i-adapter_xl_sketch.safetensors
- thibaud_xl_openpose.safetensors
- thibaud_xl_openpose_256lora.safetensors
残念ながら公式ページには各モデルの詳細がほとんど書かれておらず、私も全部把握しているわけではありませんが、どうやら複数の開発者の方が別々に開発したモデルをそれぞれ公式に採用したというような形になっているようです(似たようなモデルがあるのはそのため)。中にはLoRAでお馴染みのKohya氏が作成したモデルもありますね。
私が分かる範囲でざっくりまとめると次のような感じです(※記載のないものはよく分からず…)。
- diffusers:
Diffusers公式のSDXL用ControlNetモデル。モデルのサイズごとに3種類ずつ用意されている。 - kohya:
LoRAでお馴染みのKohya氏によるSDXL用のControlNet-LLLiteモデル。イラスト向けのモデルが揃っています。ControlNet-LLLiteについては公式ページをご覧ください。 - sai:
Stability AI社のControlNet-LoRAモデル。ControlNet-LoRAの詳細は公式ページをご覧ください。 - sargezt:SargeZT氏によるSDXL用ControlNetモデル
- thibaud:thibaud氏によるSDXL用のOpenPoseモデル
CannyやDepthといったモデルは重複があるのでどれか好きなものを1つ選べばよいと思います。ちなみに個人的なオススメはやはりKohya氏のモデルです。モデルのサイズが軽くダウンロードの手間もかかりませんし、イラストに活用できるのは魅力的ですね。
Kohya氏の「ControlNet-LLLite」モデルを使ったサンプルイラスト
サンプルとしてKohya氏のControlNet-LLLiteのCannyモデル(kohya_controllllite_xl_canny_anime.safetensors)を使ってイラストを生成してみました(入力画像の素材提供:ぱくたそ 様 https://www.pakutaso.com/)。
入力画像 | 生成されたイラスト |
---|---|
元画像のポーズをきちんと保ったイラストが生成されました。モデルによっては効きがイマイチなものもありましたが、おおむねしっかり構図などを制御できたのでSD1.5のControlNetと同じような感覚で使えそうです。
SDXLでControlNetを使う方法まとめ
ではここからが本題でSDXLでControlNetを使う方法をご紹介していきます。ここではStable Diffusion web UIの場合のやり方を解説していきますね。
主な手順は次のとおり。
- Stable Diffusion web UI&ControlNet拡張機能のアップデート
- 必要なモデルのダウンロード
- 必要な設定を行う
それぞれ詳しく見ていきましょう。
手順1:Stable Diffusion web UIとControlNet拡張機能をアップデートする
まずはStable Diffusion web UIをv1.6.0以降へアップデートしましょう。また、SDXL用のControlNetを使うにはControlNet拡張機能がv1.1.400以降であることが必要なので、まだアップデートしていない方は両方とも最新版にしておいてください。
手順2:必要なモデルのダウンロードを行い、所定のフォルダに移動する
次は必要なControlNetモデルをダウンロードし、所定のフォルダに移動させます。モデルはHugging Faceの下記ページからダウンロードできます。全部ダウンロードするのも大変ですから必要なモデルを選んで落としましょう。
ダウンロードできたらそのファイルを下記フォルダに移動してください。
手順3:必要な設定を行う
そうしたらあとはControlNetの必要な設定を行って画像を生成するだけです。基本的なやり方はSD1.5のControlNetと同じですが、一応Cannyの場合の設定例を載せておくと次のような感じになります。
- (上の画像にはないですが)SDXLモデルを選択していることを確認します。
- 入力画像をドラッグ&ドロップします。
- 「有効化」に忘れずチェックを入れます。
- ここではCannyモデルを使うのでContro Typeは「Canny」を選択。
- プリプロセッサが「canny」になっていることを確認します。
- モデルはSDXL用のCannyモデルを選択しましょう。ここではKohya氏のモデルを選択しています。
これで準備OKです。あとは呪文を記入して生成ボタンを押せば画像が生成されます。
トラブルシューティング
最後にトラブルシューティングです。SDXL用のControlNetモデルを使うと生成画像がフラットな感じになってしまうことがあるようなのですが、そのような場合はControl Modeを変更してみてほしいとのことです。
例えばControl Modeが「Balanced」になっているなら「My prompt is more important」か「ControlNet is more important」に変更してみるといった具合ですね。ただしこの方法は非常に影響が大きいので、他に手段がない場合に使うようにした方がいいらしいです。生成画像が平坦になってしまってどうしても困る場合は試してみるとよいでしょう。
おわりに
以上、SDXLでControlNetを使う方法について詳しく解説しました。
これでStable Diffusion XLの弱点がかなり克服されて非常に汎用性が高くなったので、まだ旧SD1.5をお使いの方はこの機会に乗り換えを検討してもいいのではないかなと思います。最新モデルで思い通りの画像を生成できるのはとても便利で楽しいので、ぜひ皆さんも上記の内容を参考にSDXLのControlNetで遊んでみてください。
この記事が画像生成のお役に立てば幸いです。