こんにちは、スタジオ真榊です。今回は革新的な精度で話題を席捲したStableDiffusionXL(SDXL)ベースのアニメ調モデル「AnimagineXL3.0」特集ということで、主にこれまでSD1.5系で生成してきたユーザー向けに、SDXLの入門記事から導入方法、XL用のおすすめ設定、プロンプトの基本、サンプラー比較などをまとめた記事をお届けします。
controlnetや各種拡張機能、プロンプト辞典の大刷新も含めた複数回の連載を想定しており、今回はその第一回「SDXLデビュー編」となります。
2024.02.10 AnimagineXL3.0の流行後、特定のプロンプトを使用したときだけ謎の絵柄崩壊(意味不明な画像が出力される)が報告されていましたが、hakomikanさんの検証とスクリプト公開によって解決しました。これに伴い、該当部分を差し替えています。
前書き:待ち望まれていた決定版
2023年7月にデビューしたSDXL1.0モデルは、デフォルトの画像生成サイズが従来モデルの4倍となる1024x1024pxでトレーニングされており、画質や生成精度が飛躍的に向上しているのが特徴です。これまで「小さく出して大きくアップスケールする」が画像生成の基本だったのに対し、SDXLモデルでは最初から高解像度で生成しても、人体が奇形化したり、背景がおかしくなったりしないのが最大の利点と言えるでしょう。
一方で、必要とするGPUメモリ(VRAM)が増加していることや、SD1.5系に比べるとCheckpointや各種拡張機能、追加学習ファイルなどが発展途上にある(SD1.5用のLoRA、Controlnetなどが互換しない)点がウィークポイント。nsfw生成が苦手だったり、高価なグラボがないと快適に振り回せないことなどもあって、なかなか従来モデルからの「移住」が進まない状況にありました。
そんな中、先行して登場したのがSDXLベースでトレーニングされたNovelAIの「v3」。v2以前に比べて驚異的な精度でアニメ調イラストを生成できることから、改めてSDXLの潜在能力を界隈に知らしめることになりました。ControlnetやLoRAなど各種拡張機能を使えるローカル環境でも、NAIv3と同じような精度で使えるSDXLベースのアニメ調モデルが待ち望まれる中、颯爽とデビューしたのが、今回紹介する「AnimagineXL3.0」というわけです。nsfw画像の生成にもしっかり対応しており、ジェネリックNAI的な立ち位置を期待している方が多いのではないかなと思います。
SDXL利用に必要なグラボは?
SDXLは前述の通り、かなり高性能なグラフィックボードを要求される点に注意が必要ですので、本題に入る前に必要スペックについて触れておきたいと思います。グラフィックボードの比較解析と言えば「ちもろぐ」さん。SDXLの解析もしてくださっており、詳しくはリンク先の該当箇所をお読み頂くのが早いと思います。
スタジオ真榊の環境は最近、3万9000円~のRTX3060(12GB)から18万円~のRTX4080(16GB)に乗り換えましたが(下記記事参照)、いまのところ全くストレスなくSDXLでの生成ができています。
ちなみに、後述するように「--medvram」や「--lowvram」オプションを使えば、VRAM不足のグラボでもSDXLを取り回すことは可能です。コスパ最強のスタンダードモデルRTX3060(12GB)でも、「非常に快適」とは言えないまでも生成は問題なく行えます。StabilityAIはVRAM8GBのコンシューマ向けGPUから生成が可能と説明していますが、「12GBが快適利用できる最低ライン」「できれば16GBほしい」「24GBから万全」というのがリアルなところではなかろうかと思います。12GBの場合、まだ1.5系のほうがメリットが上回るという方が多いのではないでしょうか。
NVIDIAは2024年1月に「GeForce RTX 4080 SUPER」「GeForce RTX 4070 Ti SUPER」「GeForce RTX 4070 SUPER」の3製品を発表したばかり。この中では、VRAM16GBの4070Ti SUPERが15万円前後で販売されており、SDXLデビューと同時にRTX3060などからアップグレードする場合は選択肢になるのではないかと思われます。
SDwebUIで「AnimagineXL3.0」を動かしてみよう
さて、こちらのFANBOXをご覧の皆様はautomatic1111版のSDwebUIをお使いの方が多いと思いますので、まずはa1111SDwebUIで「AnimagineXL3.0」を動かしてみるところから始めてみましょう。
1.「AnimagineXL3.0」とSDXL用VAEをダウンロード
こちらのリンク先から「animagine-xl-3.0.safetensors」をダウンロードし、SDwebUIの「models\Stable-diffusion」フォルダ内に保存します。LFSと書かれた右隣の「↓」ボタンを押せばOK。
SDXLでは1.5系と異なる専用のVAEが必要ですが、AnimagineXL3.0にはVAEが同梱されているようで、「none」「automatic」設定でも問題なく生成することができます。ただ、SDXLデビューするのであれば今後のためにも専用VAEを持っておいて損はないので、こちらもついでにダウンロードしておきましょう。下記リンク先にある「sdxl_vae.safetensors」を↓ボタンからDLし、「models\VAE」フォルダに保存しておきます。
ちなみに、SD1.5用のVAEを使ってSDXLモデルで生成すると、このように画像全体がジャギってしまいます。

2.SDwebUIをバージョンアップ
a1111版SDwebUIは「ver.1.6.0」からSDXLを完全サポートしていますので、それ以前のバージョンをお使いの方はアップデートの必要があります。今更かもしれませんが、アプデのやり方は以下の通り。
▶Gitを使って自力インストールした方
webUIのインストールフォルダの何もないところを右クリックして「Open Git Bash Here」を選択し、「git pull」と入力するいつもの方法です。
▶sd.webui.zipのパッケージでインストールした方
同梱されているupdate.batを実行しましょう。
▶StabilityMatrixをご使用の方
「Packages」タブから三点リーダ「︙」をクリックし、Check for Updatesを選べばOKです。
SDwebUIの大規模アップデート後は拡張機能との整合性などで動作が不安定になることがあるため、リリース後すぐにアップデートするのを嫌うユーザーが多いです。気になる方は、アップデート前のコミットハッシュ値を書き留めておくことをお勧めします(webUIを立ち上げ時、コマンドプロンプトにCommit Hash:~と表示される英数字部分です)。最新版で問題が発生した場合は、この文字列を使ってもとのバージョンにダウングレードすることができます。

▲コレ
ダウングレードの方法は簡単で、「git pull」の代わりに「git checkout(ハッシュ値)」と入力するだけ。例えばコミットハッシュ値が「cf2772fab0af5573da775e7437e6acdca424f26e」なら「git checkout cf2772fab0af5573da775e7437e6acdca424f26e」と入力すればOKです。(ちなみにこれはver1.7.0のコミットハッシュ値です)
3.Diffusersなどを導入
さらに、AnimagineXL3.0の利用に必要な環境を構築する必要があります。次の手順で、SDwebUI環境に最新のDiffusersライブラリとtransformersパッケージをインストールしてください。環境構築にはGit Bashを使うので、StabilityMatrixなどでSDwebUIを導入したWindowsユーザーはこの期にGit for windowsをインストールしておきましょう(下記の記事が参考になります)
①webUIのインストールフォルダの何もないところを右クリックして「Open Git Bash Here」を選択(Win11の方は"その他のオプションを確認"を押すと表示されます)

②「pip install diffusers --upgrade」(左右のかぎかっこを含まない)を入力してENTERキーを押下します。「Ctrl+C」や「Ctrl+V」を使うと「^[[200~」という文字列が頭についてしまってうまく貼り付けられませんので、右クリックを使って貼り付けましょう。下記のようになっていればOKです。

※「Successfully installed diffusers~」と表示され、再び「$」マークが表示されてコマンド入力できるようになればインストール成功
③さきほどと同じように、「$」マークの横に「pip install transformers accelerate safetensors」(同)を入力してENTERキーを押下。これも貼り付け方は先ほどの注意点を踏まえて入力してください。
(4.必要に応じてVRAM削減のコマンドライン引数を指定する)
SDXLを利用するのにVRAMが足りない場合は、webUI起動時に使う「webui-user.bat」で特定のコマンドライン引数を指定することで、VRAM消費量を削減することができます。xformersを導入したときと同様、「set COMMANDLINE_ARGS=」以下に「--medvram-sdxl」を入れることで、SDXLを使用したときのみVRAM消費量を削減する設定になります(GPUからCPUへモジュールを転送することで、生成速度と引き換えにVRAM消費量を抑制する仕組み。--lowvram-sdxlだとさらにCPUへ転送するモジュール量が増えますが、生成速度はさらに遅くなります)
VRAM不足による「CUDA out of memory」エラーが発生しない場合は速度が殺されるだけですので、まずは通常通り生成してみて、SDXLを普段使いする上でVRAM不足となるかどうかを確かめてみることをお勧めします。
これで準備は終了です。SDwebUIを立ち上げてみましょう。
SDwebUI上での使い方

このように、checkpointに「animagine-xl-3.0.safetensors」を、SD VAEに「sdxl_vae.safetensors」を設定します。
SD VAEのウィンドウがこの位置に表示されていない方は、【設定▶インターフェイス▶クイック設定】から、下記のように「sd_vae」を追加しておくと切り替えが便利です。











