ときどき聞く「SDXL」ってなに?
より高解像度の画像を生成できるStable Diffusionの新モデルです
2023年7月にStable Diffusionの新モデルである「SDXL(Stable Diffusion XL)」がリリースされました。
本記事ではこの「SDXL」の導入方法や使い方について解説します。
SDXLとは
SDXLは、高画質な画像を生成できる「Stable Diffusionの新モデル」です。
1024×1024のような大きなサイズの画像もきれいに生成できるようになりました。
BaseモデルとRefinerモデルの二段構えで高画質な画像を生成する仕組みとなっています。
SDXLを使うときの注意点
SDXLはモデルファイルが大きいのでモデルを読み込むだけでもメモリをかなり消費します。
また、高解像度に向いているモデルのため、低解像度の画像生成はうまくいきません。
SDXLの導入方法(AUTOMATIC1111)
「Stable Diffusion WebUI(AUTOMATIC1111)」にSDXLを導入する方法を解説します。
といっても、普通にSDXLのモデルファイル(チェックポイント)をダウンロードするだけです😊
それでは順番にみていきましょう。
バージョンの確認
AUTOMATIC1111ではv1.5.0からSDXLをサポートしています。そのため、まずは使っているWeb UIのバージョンを確認しましょう。
AUTOMATIC1111のバージョンはWeb UI画面の下の方に表示されています。
なお、新たにWeb UI(AUTOMATIC1111)をダウンロードする人は、こちらの記事を参考にダウンロードしてみてください。最新版がダウンロードされます。
>> Stable Diffusion Web UIのインストール方法を解説
SDXLのモデルのダウンロード
次はSDXLのモデルをダウンロードしていきます。
SDXLはBaseモデルとRefinerモデルの二段構えになっているので、モデルも「Baseモデル」と「Refinerモデル」がそれぞれ公開されています。
下の模式図を見ると、BaseとRefinerのどちらも必要に見えますが、実際にはBaseモデルだけで問題なく動作します。
Refinerモデルを組み入れても生成画像に大きな変化はなく、生成時間が伸びるだけなので、基本的にはBaseモデルだけでもいいと思います。
Baseモデルは、以下のHugging Faceのリンクから入手できます。「sd_xl_base_1.0.safetensors」というファイルをダウンロードしましょう。
ファイルサイズが約7GBもあるので、ダウンロードに時間がかかるかもしれません。
ダウンロードしたモデルファイルは、通常のモデルと同様に「models/Stable-diffusion」に格納すればOKです。
Baseモデルと合わせてRefinerモデルも使いたい人は下記のリンクから「sd_xl_refiner_1.0.safetensors」をダウンロードしてください。ダウンロードしたファイルはBaseモデルと同様に「models/Stable-diffusion」に格納します。
webui-user.batの編集
SDXLを使う場合、Web UIを起動するときにオプションを指定する必要があります。
そのため、Stable Diffusionを起動するときに実行する「webui-user.bat」というファイルの中身を修正します。
テキストエディタなら何でも構いませんが、たとえば「メモ帳」を開いて、そこに「webui-user.bat」をドラッグ&ドロップしてみましょう。中身を開くことができます。
この中の「set COMMANDLINE_ARGS=」の行を次のように書き換えればOKです。
set COMMANDLINE_ARGS=--no-half-vae
「ファイルを上書き保存」しましょう。
なお、パソコンのGPUが「NVIDIA社」製の場合には、以下のようにxformersに関するオプションもつけることをオススメします。
set COMMANDLINE_ARGS=--no-half-vae --xformers
メモリ使用量が減って、生成時間も少し早くなるはずです
Web UIの起動&画像生成
これで準備はOKなので、webui-user.batをダブルクリックしてWeb UIを起動しましょう。
Web UIが起動したら、モデル(チェックポイント)から「sd_xl_base_1.0.safetensors」を選択します。
Refinerモデルも合わせて使いたい場合は、「Generation」タブにある「Refiner」にダウンロードした「sd_xl_refiner_1.0.safetensors」を指定します。
あとは普通にプロンプトを入力して画像を生成すればよいのですが、画像のサイズには注意してください。SDXLは高解像度の画像で学習しているため、512×512などの低解像度だと品質が悪くなってしまいます。以下のサイズが推奨されています。
適切なサイズを指定したら、画像生成してみましょう。私はこのような画像を生成してみました。
猫の毛並みの感じもきれいです✨
ちなみにアニメ系の絵もそこそこの出来なのですが、SDXLのアニメ系モデルがあるので、あえてこのモデルで作る必要は感じません。
これはこれで結構かわいいけどね
アニメ系のSDXLモデル
では、最後にSDXLをベースにしたアニメ系のモデルを2つだけ紹介します。高解像度で美しいイラストを生成できるので、ぜひ楽しんでみてくださいね✨
✅CounterfeitXL
✅Animagine XL V3
コメント
はじめまして。
SDXLを使いたいと思いこちらの記事を拝見し、無事に導入することができました。
しかし、いざ出力してみると非常に汚いベタ塗のような絵が出力されます。
(ponyXL,animagineXLで試しました。)
モデルをSD1.5系のものに戻すと、問題なく出力されます。
色々調べてみても解決の糸口が掴めず手詰まりになってしまったためコメントさせていただきました。何か解決の手掛かりはご存じないでしょうか?
WebUIのバージョンは1.8.0、pythonは3.10.11、グラボはRTX4060Ti:16GB(最近3060から交換したばかり)、メモリは32GBです。
よろしければ、お返事お待ちしております。
はじめまして、ご質問ありがとうございます。
SDXLで出力が汚くなる要因として考えられるのは、出力サイズが小さすぎる場合(512×512など)です。
他の原因は私も思いつかないです…。すみません。
このブログをご覧の方で何か情報がお持ちの方がいらっしゃればコメントいただけると助かります!
絵が汚い場合→サイズを1024*1024や894*1152に
支離滅裂な絵の場合→Emphasis modeをNo normに
情報ありがとうございます!