メインコンテンツへスキップ
見出し画像

【画像生成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.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 で満足できる画質が得られることが多いです。

    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


     
     
    はじめまして、きまま です。ふとしたきっかけでAI画像生成に出会い、その魅力にすっかり取り憑かれました。AI画像で気づいたことを発信していきます。 画像はAIで生成したものですが、もし気に入ったものがあればご自由にお使い下さい。AI技術を否定する目的でのご利用はご遠慮下さい。

    あなたへのおすすめ