【雑記】SDXLで今一度Samplerの比較をしてみる日があってもいい
◆はじめに
SDXLを使ったSamplerの比較を行います。Samplerの選択には慎重さが求められますが、比較することでより良い選択ができるでしょう。本記事では、SDXLを使用してSamplerを比較する方法やポイントを紹介します。具体的には、各Samplerの特徴やメリット、デメリットを解説し、それぞれの適用範囲や効果の違いを明確にすると思ったか!画像のっけていくだけじゃ!コラ!途中までAIが書いた文章みたいだと思ったろ!AIもまだまだじゃのう!!!かかってこいよ!AI!!ほら!こいよ!!ママのアップルパイでも食って寝とけ!!(脈絡なさすぎてforget-gate-vector=0になりそう)
ちなみに似た内容の記事はごまんとあると思いますが、比較はちゃんとしますのでSamplerの選択に迷っている方や違いを再確認したい方は必見です。
◆設定について
model:DefmixXL-1v3.safetensors [e4fbb656cb]
SD VAE:SDXL_vae.safetensors [63aeecb90f]
clip skip:2
Eta noise seed delta:0
Positive Prompt:
(cute girl:1.0), (clear skins:1.0), (simple background:1.0),
(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0),
(half body:1.0)
Negative Prompt:
(low quality, worst quality:1.1), (beautiful, cute:1.2)
Sampling steps:14
Width:768
Height:1024
CFG Scale:5.5
Seed:1731832030~1731832038
このあたりの設定はそれぞれ検証を重ねた結果、普段から使用しているパラメータです。(20240203時点)
順に、modelsは自作のα版SDXLモデルで、VAEは一般的なSDXLに用いられるものを準用しています。
clip skipの値は「Text EncoderとImage EncoderからなるCLIPのOutput Layerの"最終層の1つ前"を出力として使用すると何か良い感じになる」という迷信(?)がSD1.5系modelsの時代からあり、私は盲目的に"2"という値を採用しています。実際、"3"や"4"といった値を試したことがありますが、さすがに意図していない画像が出力される傾向にあったため、適さないような気がします。(近年のmodelsがclip skip=2を前提に学習されているという背景もあります。)
Positive Promptの"clear skins"は完全に気分です。少し昔話をすると、1年以上前は"flawless and clear skins"というpromptが好きでよく使っていましたが、SD1.5系後期(リアルな画像を学習し始めた頃)から露骨にnsfw系の画像が出力されやすくなってしまったため、使わなくなっていきました…。当時は「”and”というtokenに意味はあるのか?でも代わりに","は使えないしなあ…」や「"clear"と"skins"に類似度はどれだけあるんだろう?」みたいなAIの顔色を伺うようなことをしていました。あと一応、"skin"より"skins"が好きです。"illustration"より"illustrations"の方が好きみたいなノリです。
また、アンダースコアがついているものはExtensionsの"Wildcards"です。txtファイルにあらかじめ書き込んである文章を乱数的に入力してくれるものです。比較をするときに、ある程度は出力画像間に違いを出したいと思っているので採用しています。
Negative Promptの"beautiful, cute"は最近の試みです。"best quality"や"masterpiece"のようなQuality Tagと呼ばれるものをNPに採用することで多様性が見えてこないかなあ…という発想です。Defmix-V2を作っていた頃(2023/1月頃?)には既に持っていたアイデアですが、LoRAで制御することが主流になってきてからは息をひそめていました。最近SDXLで遊んでいる中で、また試してみてもいいかなということでDefmixXLを作っている過程では少し考慮しています。
Sampling stepsは以前よりも小さい値で安定した出力を得られるようになったことや、highresを使用しやすいという点から"14"という小さな値を使っています。
CFG Scaleについても、かつてよりも小さな値になっています。10以上の値を使用していた縄文時代もありましたが、最近は値が大きいと過学習したような画像が出力されることが増えてきた気がします。(過学習ではないです。)
前置きが長くなりましたが、早速本題のSamplerの比較に入っていきましょう。
◆Samplerの比較
ここからは淡々とSamplerの比較画像を載せていきます。
画像の違いに着目することも大切ですが、生成時間を意識することも重要だと思います。今回記載する時間については、各々使われているGUIや環境で異なるので、相対的な比較と思っていただければ良いなと思います。
ちなみに筆者はクラウドサーバー上で遊んでいますが、gabbage collectionの設定が上手くいかないせいでほとんど高速化ができていません。(いや、なんで?(某桃太郎の顔))
DPM++ 2M Karras
Steps: 14, Sampler: DPM++ 2M Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)"
Time taken: 48.9 sec.
DPM++ SDE Karras
Steps: 14, Sampler: DPM++ SDE Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)"
Time taken: 1 min. 28.3 sec.
DPM++ 2M SDE Exponential
Steps: 14, Sampler: DPM++ 2M SDE Exponential, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)"
Time taken: 49.3 sec.
DPM++ 2M SDE Karras
Steps: 14, Sampler: DPM++ 2M SDE Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)"
Time taken: 49.0 sec.
Euler a
Steps: 14, Sampler: Euler a, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)"
Time taken: 48.7 sec.
Euler
Steps: 14, Sampler: Euler, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)"
Time taken: 49.7 sec.
LMS
Steps: 14, Sampler: LMS, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 49.7 sec.
Heun
Steps: 14, Sampler: Heun, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)"
Time taken: 1 min. 28.0 sec.
DPM2
Steps: 14, Sampler: DPM2, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 1 min. 27.2 sec.
DPM2 a
Steps: 14, Sampler: DPM2 a, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 1 min. 28.7 sec.
DPM++ 2S a
Steps: 14, Sampler: DPM++ 2S a, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 1 min. 27.2 sec.
DPM++ 2M
Steps: 14, Sampler: DPM++ 2M, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 49.9 sec.
DPM++ SDE
Steps: 14, Sampler: DPM++ SDE, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 1 min. 28.5 sec.
DPM++ 2M SDE
Steps: 14, Sampler: DPM++ 2M SDE, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 50.0 sec.
DPM++ 2M SDE Heun
Steps: 14, Sampler: DPM++ 2M SDE Heun, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 48.8 sec.
DPM++ 2M SDE Heun Karras
Steps: 14, Sampler: DPM++ 2M SDE Heun Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 48.8 sec.
DPM++ 2M SDE Heun Exponential
Steps: 14, Sampler: DPM++ 2M SDE Heun Exponential, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 48.6 sec.
DPM++ 3M SDE
Steps: 14, Sampler: DPM++ 3M SDE, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 48.8 sec.
DPM++ 3M SDE Karras
Steps: 14, Sampler: DPM++ 3M SDE Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 48.7 sec.
DPM++ 3M SDE Exponential
Steps: 14, Sampler: DPM++ 3M SDE Exponential, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 49.2 sec.
DPM fast
Steps: 14, Sampler: DPM fast, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 49.5 sec.
DPM Adaptive
Steps: 14, Sampler: DPM adaptive, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 4 min. 24.4 sec. (whata!?)
LMS Karras
Steps: 14, Sampler: LMS Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 48.6 sec.
DPM2 Karras
Steps: 14, Sampler: DPM2 Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 1 min. 27.4 sec.
DPM2 a Karras
Steps: 14, Sampler: DPM2 a Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 1 min. 27.4 sec.
DPM++ 2S a Karras
Steps: 14, Sampler: DPM++ 2S a Karras, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 1 min. 27.5 sec.
Restart
Steps: 14, Sampler: Restart, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 1 min. 27.4 sec.
DDIM
Steps: 14, Sampler: DDIM, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 50.3 sec.
PLMS
Steps: 14, Sampler: PLMS, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 52.3 sec.
UniPC
Steps: 14, Sampler: UniPC, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 52.8 sec.
LCM
Steps: 14, Sampler: LCM, CFG scale: 5.5, Seed: 1731832030, Size: 768x1024, Model hash: e4fbb656cb, Model: DefmixXL-1v3, VAE hash: 63aeecb90f, VAE: SDXL_vae.safetensors, Clip skip: 2, Wildcard prompt: "(cute girl:1.0), (clear skins:1.0), (simple background:1.0), \n(__haircolor__:1.0), (__hairstyle__:1.0), (__outfit__:1.0), \n(half body:1.0)", Version: v1.7.0
Time taken: 47.9 sec.
◆まとめ
いかがだったでしょうか?
個人的には試したことがなかったSamplerの中にも、かなり魅力的なものがあると気づきました。今回検証した環境や条件によって、本来のポテンシャルが発揮できていないSamplerもあると思います。しかし、それぞれ出力したい目的の画像によって使い分けられるものが多いと感じました。最後にいくつかサンプルを紹介して締めたいと思います。
DPM++ 2M SDE Karras
メリハリがあるので、そこを活かすと良さそうだと感じました。
DPM++ 2M SDE Exponential
強めなコントラストを活かしてみようと思います。
Euler a
全体的に淡い印象なので、それを活かしてみます。
DPM2 a
セルライクに寄せてみました。
ここまで読んで頂きありがとうございました。
一助となれば嬉しいです。それでは。
この記事が気に入ったらサポートをしてみませんか?