🦊SDXL
🏠/🦊雑に学ぶComfyUI
前/🦊Hires.fix
次/🦊inpainting
SDXL 1.0はStability.aiから出た、Stable Diffusion 1.5の後継となる基盤モデルです
Stable Diffusion 2.1? 知らない子ですね…
使うのに難しいことは無いですが、覚えておくことが少しあります
Stable Diffuison 1.5系のモデル(LoRA、ControlNet...)との互換性はない
1024px × 1024pxのサイズで複数のアスペクト比の画像で学習されている
覚えなくていいこと
baseとrefinerがある
使っているCLIPモデルはそれぞれ
base : OpenCLIP ViT-G/14とCLIP-ViT/L
refiner : OpenCLIP ViT-G/14
🦊ComfyUIでやってみる
モデルのダウンロード (model/checkpoint)
https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/mainsd_xl_base_1.0_0.9vae.safetensors
https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/tree/mainsd_xl_refiner_1.0_0.9vae.safetensors
https://gyazo.com/1151ae12aa4eac2b0f42e71d5332b33a
SDXL_base.json
シンプルに、text2imageの基本形でモデルをSDXL baseに置き換えれば使えます
うまく生成できるサイズが決まっているのでそこには注意
cf. SDXL Resolution Cheat Sheet
🪸CLIPTextEncodeSDXLノード
覚えなくていいことに、SDXL baseはOpenCLIP-ViT/GとCLIP-ViT/Lの二つのCLIPを使っている。というのがありました
ComfyUIでは(一応)それぞれのCLIPに別のテキストを入力できるノードがあります
https://gyazo.com/5b915e9e8f10ea8dc1ad4d792a8681db
それぞれのCLIPに同じテキストを入れた場合、生成結果はCLIPTextEncodeノードを使ったときと同じになります
そして、両方のCLIPに同じテキストをいれると良い結果が出やすいことがわかっています
cf. SDXL baseでのCLIPの使い分け
つまりこのノードは使わなくていいです
🎀SDXL refiner
refinerは細部を書き込むためのimage2image専用モデルです
baseモデルで生成した画像に大して、refinerモデルでimage2imageしてみましょう
ちなみに、refinerモデル単体でtext2imageすると破綻した絵がでてきます
たぶん細部をクロップしたデータセットで学習してる
https://gyazo.com/da32a06309781341be1101adcaa33b71
SDXL-w-refiner.json
🟨SDXL base
🟪latentを受け取って、SDXL refinerでimage2image
基本的にあまり強くかけない方が良いです
このworkflowをもう少しおしゃれにすることもできます
https://gyazo.com/7b9e57e668ff3bbfb626007aff1c0c75
SDXL-w-refiner-advanced.json
🟩KSamplerAdvancedノード#659e86b5e2dacc000096cad0のテクニックを使って、20step中の前半17stepをbase、残りをrefinerでサンプリングします
convert text to inputとprimitiveノードを使ってbaseとrefinerに同じテキストが入るようにしています
😑基本refinerはいらない
人気のあるSDXLベースモデルはrefinerがいらないと謡っているものも多く、わざわざrefinerをworkflowに組み込まなくても良い結果がでるようになっています
workflowが複雑になる割に恩恵があんまりないですしね
ただし、最近は"後処理"という(ある意味本来の意味)でrefinerという言葉が使われることがあります
構図が上手いモデルで生成したのち、細部の描き込みが上手いモデルでimage2imageするといったものもrefinerのひとつです