こんにちは、スタジオ真榊です。今回は革新的な精度で話題を席捲した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モデルで生成すると、このように画像全体がジャギってしまいます。

SDwebUIで「AnimagineXL3.0」を動かしてみよう:図版1

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の方は"その他のオプションを確認"を押すと表示されます)

SDwebUIで「AnimagineXL3.0」を動かしてみよう:図版2

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

SDwebUIで「AnimagineXL3.0」を動かしてみよう:図版3

※「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上での使い方

SDwebUI上での使い方:図版1

このように、checkpointに「animagine-xl-3.0.safetensors」を、SD VAEに「sdxl_vae.safetensors」を設定します。

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

SDwebUI上での使い方:図版2

SDXLの基本サイズ設定

基本の生成サイズは基本が「1024x1024px」で、これより小さいサイズで生成すると精度が下がる傾向にあります。1024x1024=1048576ピクセルが推奨値となるので、縦横比5:4や7:4の画像だと近似値は以下のようになります。

▶正方形(基本):1024x1024px

▶縦長:1152x896px(5:4)1344x768px(7:4)1216x832px(13:19)

▶縦長:896x1152px(4:5)768x1344px(4:7)832x1216px(13:19)

SD1.5系でおすすめされていた768x512と同じ3:2比率だと1254x836px(近似値)となりますが、SDwebUIの仕様でデフォルトのスライダーでは指定できません。個人的には、3:2の比率が使い勝手がよいので、1152x768pxサイズか、1216x832pxで生成することが多いです。

縦横比は構図を決定する上で非常に重要なので、出したい構図に応じて慎重に検討しましょう。生成サイズをボタンで選べる拡張機能「Aspect Ratio selector」に各サイズを登録しておくと、呼び出すのが楽なのでオススメです。

おすすめスケール・ステップ・サンプラー

次に、スケール・ステップ・サンプラーのおすすめ設定についてです。公式によると、下記の設定でより良い結果が得られたとのこと。

▶CFG Scale:5~7程度

▶ステップ数:30以下(低めが推奨されています)

▶サンプラー:Euler Ancestral(=Euler Aのこと)

SD1.5では生成が早く結果も比較的まとまっていた「DPM++ 2M Karras」が人気でしたが、こちらも問題なく生成できます。EulerAはステップ数を上げるごとに絵が変化していくサンプラーなので、ステップ数は比較的低めが推奨されているのかなと想像します。サンプラーについてはあとで全30種の比較実験をしますので、そちらも参考にしてください。

AnimagineXL3.0のプロンプト記述

このモデルはNovelAIv3をヒントにトレーニングされており、以下のような語順でプロンプト入力することが推奨されています。

【1boy/1girl, (キャラクター名), (作品名), 以降その他のタグ】

つまり、冒頭は1boy/1girlといったメインモチーフの属性で始め、版権キャラクターの場合はすぐ次に「キャラクター名タグ」、その次に「作品名タグ」を入れて、その後に「looking at viewer」や「blond hair」といったその他の要素を続けていくのが良いということ。たとえば「1girl, hatsune miku, vocaloid,smile,sing,live stage...」といった語順になります。

プロンプト順が版権キャラを生成することを前提にされたものとなっていることからもわかる通り、NovelAIv3のように、LoRAなしでも相当多くの版権キャラクターを再現することができるのが「AnimagineXL3.0」の特徴です。

▶【重要】版権キャラクター再現と著作権

AnimagineXL3.0はNovelAIと同様、多くの日本の版権キャラクターの容姿を学習しており、生成物の扱いには著作権法上の注意が必要です。文化庁の「AIと著作権に関する考え方について(素案)」にも書かれていた通り、生成物に既存の著作物との類似性・依拠性があり、その著作物の「表現上の本質的特徴を直接感得」できてしまう場合、その生成物の利用は著作権侵害となります。そうした生成物を私的利用の範囲を超えて利用する場合(SNSで公開など、商用/非商用問わず)は、著作権者から提訴されるリスクがあることを十分に理解した上で行うようにしましょう。

版権キャラクターの二次創作をウェブなどで公開する行為については、描画手法が手描きかAIかに関係なく、大半が著作権侵害となりえます。SNSでは日常的に版権キャラの二次創作イラストを見かけますが、これは版権者にとってビジネスの障害にならないファンアートの文脈であることや、ファン活動を法的に咎めるとビジネス上のデメリットが大きいという合理的理由があるために黙認されているだけです。

私も「機動戦士ガンダム水星の魔女」が大好きで、Xで二次創作活動を行っていますが、こうした行為は版権側が「提訴したメリットの方が上回る」と判断した場合、多額の損害賠償責任が生じる恐れがあることを十分に理解した上で、自己責任で行う必要があると言えます。また、投稿内容がファンアートの文脈から外れるほどにその可能性は高まる点にも注意が必要です(もちろん、版権側が公表している二次創作ガイドラインを守っている場合は問題ありません)。

AIと著作権の考え方については、こちらの全体公開記事で「素案」の分かりやすい解説を行っていますので、参考になればと思います。