【画像生成AI】 step は多い方が良い? karras / beta scheduler の違い
はじめに
こんにちは、きまま / Easygoing です。
今回は、画像生成 AI の step と scheduler について考えてみます。
step は多い方が良い?
画像生成は、ノイズ画像から少しずつノイズを取り除いてイラストを生成します。

ノイズを何回に分けて取り除くか を決めるのが step で、一般的には step が多いほど高画質になると言われています。
それでは、step を増やすとどのような利点があるのでしょうか?
step は割り算で考える!
step は、足し算ではなく 割り算 で考えます。
例として、5 steps でイラストを生成する場合を見てみます。
5 steps


ComfyUI では、5 steps に設定すると最後に 1 step が自動で追加されるので、合計6つの step が存在します。
step が少ないと、それぞれの step が離れているため step 間の誤差 が大きくなります。
誤差が大きいと全体の描画が不正確になり、不明瞭で描き込みの少ない イラストになってしまいます。
また、最終 step でも十分なノイズの除去が行えないため、完成したイラストに ノイズが残って しまいます。
10 steps
今度は 10 steps でイラストを生成してみます。


step 数を増やすと、step 間の誤差が減って計算が正確になり、イラストの 描き込み が増えます。
また、残留ノイズも少なくなるので クリアーで透明感のあるイラスト に仕上がります。
step は多ければ良い?
それでは、step 数 をもっと多くしてみます。
20 steps

30 steps

50 steps

step 数を極端に増やすと、イラストの 描き込みが減り、色も 鮮やかさを失って焼けたような 印象になります。
モデルによっては、step が多すぎるのも逆に良くないようです。
最適な step 数は?
最適な Step 数は、モデルによって違います。
ローカルの 画像生成 AI は、主に3つのアーキテクチャに分かれています。

e-pred:SD 1.5 / SDXL
v-pred:SDXL の一部
Flow-matching:SD 3.5 / AuraFlow / Flux.1 / HiDream
e-pred:SD 1.5 / SDXL
e-pred は、Stable Diffusioon 1.5 と Stable Diffusion XL で広く使われているオーソドックスな方法です。
v-pred:SDXL の一部
v-pred は、 Stable Diffusion XL の一部のアニメモデルで採用されている方式で、ノイズ除去の効率が良く、少ない step 数 で効率よく画像を生成 することができます。
Flow-matching:SD 3.5 / AuraFlow / Flux.1 / HiDream
Flow-matching は、Stable Diffusion 3 以降の 新世代の画像生成モデル で使われている方法で、v-pred と同じく効率的にノイズを除去しますが、より広範なアーキテクチャの変更を行っています。
SD 1.5 / SDXL は 20 ~ 40 steps
e-pred はオーソドックスなノイズの除去を行うので、十分な step を確保する必要があります。
Stability AI 公式の Hugging Face の SDXL_Base の Diffusers パイプライン では、標準の step 数が 40 step に設定されていて、これが SDXL を使うときの一つの目安になります。
ただし、最近では sampler や後述する scheduler の工夫によりノイズを除去する精度が上げることで、実際には 20 ~ 30 steps でも十分な画質が得られるようになっています。
独自の追加学習を行ったカスタムモデルでは、別途 推奨 Step 数 が設定されている場合もあるので、基本的にはそれに従うのが良いでしょう。
Animagine-XL 4.0 Opt の 推奨は 25 ~ 28 steps
新世代モデルは 10 ~ 20steps
v-pred は、 SDXL の一部のアニメモデルで使われている方式で、e-pred より 効率的にノイズを除去 します。
Flow-matching は新世代の画像生成AI で採用されていて、さらに高い精度 でノイズの除去を行います。
v-pred と Flow-matching はノイズを効率的に除去するため、10 ~ 20 steps で満足できる画質が得られることが多いです。

ノイズを強力に除去するモデルは、step が極端に増えると色焼けする傾向があり、画質が維持できる範囲で なるべく少ない step 数 を目指す のが良いと思います。
scheduler について知ろう!
後半は scheduler について見てみます。
scheduler は画像生成の中でも難しく感じる部分ですが、図を見ながら確認していきます。
初期は構図、中盤でディティール
イラストを生成するときは 最初に大きな構図 が決まり、中盤で描き込み が増えて、最後に細部が整います。
画像生成では、特に 最初のフェーズ がクオリティに大きく影響するので、この部分の誤差を抑えることが重要になってきます。
simple scheduler
まずは、オーソドックスな simple scheduler を見てみます。

simple scheduler は、イラストを生成する 初期に急激にノイズの除去 を行うので、一番重要な最初のフェーズで誤差が生じやすくなっています。
karras scheduler

karras scheduler は、初期のノイズ除去量を抑えることで 初期の誤差を少なく しています。
その代わりに、中間部分で大きくノイズを除去 して最終的なノイズ量が simple scheduler より少なくなるように調整します。
karras scheduler は、少ない step でも安定して高品質なイラスト を生成することができます。
beta scheduler

beta scheduler は 全ての step を無駄なく使う 設計思想で、ノイズの変化が滑らかになっています。
beta scheduler は中間部分に比較的多くノイズが残るので、イラストのディティール が上がります。
その代わり、ノイズを効率的に除去するモデルを使わないと、最後までノイズを除去しきれずに 完成したイラストにノイズが残る 場合があります。
測定データ
ComfyUI で測定した scheduler ごとのノイズの経過の表とグラフです。


結局何がおすすめ?
SD1.5 / SDXL で高速生成 → karras
新世代モデルでディティールを上げる → beta

まとめ:beta scheduler を使ってみよう!
SDXL は 20 ~ 40 steps
新世代モデルは 10 ~ 20 steps
オススメは beta scheduler
step と scheduler の最適な設定は、モデルによって違ってきます。
HiDream や Flux.1 など、最近のハイパラメータモデルは beta scheduler を使うと 素晴らしいディティールを表現 することができます。

最近は、高精度のモデル と sampler を使い、なるべく少ない step で画像を生成するのが良いのではないかと考えています。
最後までお読みいただきありがとうございます!
