見出し画像

【画像生成AI】 step は多い方が良い? karras / beta scheduler の違い

はじめに

こんにちは、きまま / Easygoing です。

今回は、画像生成 AI の step と scheduler について考えてみます。

step は多い方が良い?

画像生成は、ノイズ画像から少しずつノイズを取り除いてイラストを生成します。

an animated female character with purple hair and blue eyes is surrounded by a lush green environment and flowers

ノイズを何回に分けて取り除くか を決めるのが step で、一般的には step が多いほど高画質になると言われています。

それでは、step を増やすとどのような利点があるのでしょうか?

step は割り算で考える!

step は、足し算ではなく 割り算 で考えます。

例として、5 steps でイラストを生成する場合を見てみます。

5 steps

5 steps noisy image
ノイズが残っている
simple 5 steps residual noise chart with comment

ComfyUI では、5 steps に設定すると最後に 1 step が自動で追加されるので、合計6つの step が存在します。

step が少ないと、それぞれの step が離れているため step 間の誤差 が大きくなります。

誤差が大きいと全体の描画が不正確になり、不明瞭で描き込みの少ない イラストになってしまいます。

また、最終 step でも十分なノイズの除去が行えないため、完成したイラストに ノイズが残って しまいます。

10 steps

今度は 10 steps でイラストを生成してみます。

10 steps clear image
描き込みが増える
simple scheduler 10 steps residual noise chart with comment

step 数を増やすと、step 間の誤差が減って計算が正確になり、イラストの 描き込み が増えます。

また、残留ノイズも少なくなるので クリアーで透明感のあるイラスト に仕上がります。

step は多ければ良い?

それでは、step 数 をもっと多くしてみます。

20 steps

20 steps clear image
細部が安定

30 steps

30 steps simple image
ノイズを過剰に除去して描き込みが減る

50 steps

50 steps burnt color image
色が焼けた感じになる

step 数を極端に増やすと、イラストの 描き込みが減り、色も 鮮やかさを失って焼けたような 印象になります。

モデルによっては、step が多すぎるのも逆に良くないようです。

最適な step 数は?

最適な Step 数は、モデルによって違います。

ローカルの 画像生成 AI は、主に3つのアーキテクチャに分かれています。

Gantt chart showing when e-pred and v-pred will appear
  • 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.5Stable 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 で満足できる画質が得られることが多いです。

an animated female character with purple hair and blue eyes wearing a red kimono surrounded by a lush green environment and flowers

ノイズを強力に除去するモデルは、step が極端に増えると色焼けする傾向があり、画質が維持できる範囲で なるべく少ない step 数 を目指す のが良いと思います。

scheduler について知ろう!

後半は scheduler について見てみます。

scheduler は画像生成の中でも難しく感じる部分ですが、図を見ながら確認していきます。

初期は構図、中盤でディティール

イラストを生成するときは 最初に大きな構図 が決まり、中盤で描き込み が増えて、最後に細部が整います。

画像生成では、特に 最初のフェーズ がクオリティに大きく影響するので、この部分の誤差を抑えることが重要になってきます。

simple scheduler

まずは、オーソドックスな simple scheduler を見てみます。

Simple 10 steps Residual Noise chart

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

karras scheduler

karras 10 steps Residual Noise chart

karras scheduler は、初期のノイズ除去量を抑えることで 初期の誤差を少なく しています。

その代わりに、中間部分で大きくノイズを除去 して最終的なノイズ量が simple scheduler より少なくなるように調整します。

karras scheduler は、少ない step でも安定して高品質なイラスト を生成することができます。

beta scheduler

Beta 10 steps Residual Noise chart

beta scheduler は 全ての step を無駄なく使う 設計思想で、ノイズの変化が滑らかになっています。

beta scheduler は中間部分に比較的多くノイズが残るので、イラストのディティール が上がります。

その代わり、ノイズを効率的に除去するモデルを使わないと、最後までノイズを除去しきれずに 完成したイラストにノイズが残る 場合があります。

測定データ

ComfyUI で測定した scheduler ごとのノイズの経過の表とグラフです。

Table of sigma values of 10step for each scheduler in comfyui
Graph of 10step sigma values for each scheduler in comfyui

結局何がおすすめ?

  • SD1.5 / SDXL で高速生成 → karras

  • 新世代モデルでディティールを上げる → beta

High quality image with heunpp2, beta57, 12steps, upscale x3
heunpp2, beta57, 12steps, upscale x3

まとめ:beta scheduler を使ってみよう!

  • SDXL は 20 ~ 40 steps

  • 新世代モデルは 10 ~ 20 steps

  • オススメは beta scheduler

step と scheduler の最適な設定は、モデルによって違ってきます。

HiDream や Flux.1 など、最近のハイパラメータモデルは beta scheduler を使うと 素晴らしいディティールを表現 することができます。

an animated female character with purple hair and blue eyes wears a kimono with floral patterns and a red flower in her hair set against a backdrop of glowing lights in a dark rainy night

最近は、高精度のモデル と sampler を使い、なるべく少ない step で画像を生成するのが良いのではないかと考えています。

最後までお読みいただきありがとうございます!


English Article


いいなと思ったら応援しよう!

ピックアップされています

SDXL・Flux.1・HiDream・Qwen-Image

  • 61本

コメント

3
kazumu(シズミ)
kazumu(シズミ)

お疲れさまです。
とても分かりやすく、興味深い記事でした。少しだけ気になった点がありましたので、もしご参考になればと思い、コメントさせていただきます。

「ノイズを何回に分けて取り除くか を決めるのが step」について

 この表現についてですが、「ノイズを段階的に分けて除去する」というよりは、ノイズ除去の処理を何回繰り返すか(反復処理の回数)という意味合いのほうが実態に近いかなと感じました。

「完成したイラストに ノイズが残って しまいます。」について

 おそらく「ノイズ」という言葉が人間の目線で使われているのだと思いますが、AIにとっては潜在空間の意味ある情報として扱われることもあるため、少しだけニュアンスに幅があるかもしれません。

「v-pred は、e-pred より効率的にノイズを除去します。」について

 v-predは予測の方式そのもので、結果的に「効率的」と言われることもありますが、除去効率を目的に設計されたものというよりは、方式の違いによってそう見える場面があるという印象です。

kazumu(シズミ)
kazumu(シズミ)

「10~20ステップで満足できる画質が得られることが多い」について

 このあたりは用途やプロンプトによって個人差もあるため、「満足できる画質」という表現は、少し幅を持たせて伝えるとより伝わりように思いました。

「stepが多すぎると色焼けする」点について

 こちらはその通りだと思います。モデルの特性やプロンプトの内容によって最適なstep数は変わってきますし、色味の偏りが出ることもよくありますよね。(特にNoobAI…)

「stepとschedulerの最適な設定はモデルによる」について

 構造や学習内容に個性がある分、サンプラーやスケジューラとの組み合わせにも違いが出やすいと思います。この点の記述も納得感がありました。

 記事の中で書かれていた「高精度なモデルと適切なサンプラーで、なるべく少ないstepで生成する」という方向性は、最近のv-pred系モデルや軽量化の流れを考えると、実用上とても理にかなっているなと感じました。

内容はとても丁寧で、初学者の方にも伝わりやすい構成だったと思います。
少しでも参考になれば幸いです。今後の更新も楽しみにしております☺️

きまま / Easygoing
きまま / Easygoing

> kazumu さん
コメントありがとうございます!
最初の step 数は今回の肝に当たる部分で、実は step を増やすことは反復処理の回数を増やすのとは異なります。
これは、5 step で生成したイラストと、10 step の生成途中で 5 step で止めたイラストが違うことから分かります。Ksampler (Advanced) ノードを使うと生成途中の画像を実際に確認することができます。
step はあくまで1回の画像生成のプロセスを分割しているので、一定以上に増やしても画質の向上は見込めないのです。
v-prediction はもともと画像生成の高速化を意図して開発された技術ですが、結果としてコントラストとディティールの改善につながっています。
https://arxiv.org/abs/2202.00512
その他の部分については、用語として不正確な部分もありますが、分かりやすく簡単に書いたことをご容赦いただければ幸いです。

コメントするには、 ログイン または 会員登録 をお願いします。
買うたび 抽選 ※条件・上限あり \note クリエイター感謝祭ポイントバックキャンペーン/最大全額もどってくる! 12.1 月〜1.14 水 まで
【画像生成AI】 step は多い方が良い? karras / beta scheduler の違い|きまま / Easygoing
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1