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

[Stable Diffusion] A1111系WebUIとComfyUIの生成画像の違い、破綻への対策

    タイトルのとおりなのですがStable Diffusionによる画像生成について「ComfyUIはA1111やForgeに比べて画像がすぐに破綻する」という意見をよく見かけます。これはA1111系WebUI(以下、WebUIと省略)とComfyUIのプロンプト記法と処理方法の違いが原因なのですが、検索してみると意外と原因・実例・対策の全体を解説した記事がありません。
    なので自分で書くことにしました。

    なおタイトルには分かりやすさのため「破綻」という言葉を使っていますが、あくまで両ツールの設計や処理方式の「違い」によるものであり、「良し悪し」によるものではありません。


    2026/6/28: smZNodesの代用としてComfyUI prompt controlとComfyUI Inspire Packを追記
    2026/5/28: 「Samplerについて」を追加
    2026/3/19: smZNodesとLTX-2の相性問題について追記

    概要

    WebUIとComfyUIの各メニューやノードで設定やseedを揃えて同じプロンプトを生成した場合に、まったく違う画像が生成される理由は大きく2つあります。
    それは「プロンプト記法」と「ノイズ生成ソース」の違いです。
    また画像が違うだけでなく「ComfyUIでは画像がすぐに破綻する」と言われたら、ほとんどの場合はプロンプト記法の「強弱」が原因です。
    順に説明します。

    WebUIとComfyUIの処理内容の違い

    プロンプト記法と強弱処理の違い

    WebUIで使われているプロンプト記法がStable Diffusionというモデルに対する標準記法だと勘違いしている人もいますが、これはA1111が定めた記法です(以降、A1111記法と呼称)。
    ComfyUIやStable Diffusion系の画像生成サービスではそれぞれ異なる記法が使われたり、同じ記法でも異なる処理がされるものがあります。

    A1111記法についてはGitHubのwikiページで説明されています。
    https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/features

    記法以外の機能の説明も混ざっているため分かりづらいですが、記法に関するものは以下です。

    • BREAK(分割)
      BREAK(大文字)によるチャンクの分割

    • Attention/emphasis(強弱、重み付け)
      ( )による強め、[ ]による弱め、(word:num)による強弱の重み付け

    • Prompt Editing(プロンプトエディティング、スケジュール構文)
      [from:to:when]によるステップ中のプロンプト切り替え

    • Alternating Words(交互指定)
      [A|B]によるステップ中のプロンプト交換ループ

    • Composable Diffusion(融合出力)
      AND(大文字)によるタグの融合

    • Prompt comments(コメント)
      #によるコメントアウト

    特にBREAKと強弱は利用頻度が高いため、これらをComfyUIでそのまま使うとほとんどの場合まったく異なる画像が生成されます。
    BREAKについてはComfyUIでは無視されるので画像が破綻することはありませんが、強弱については以下のような処理の違いがあります。

    • ComfyUIの強弱処理:重みの数値をそのまま処理

    • WebUIの強弱処理:重みの数値を正規化(1.0近辺に全体を平均化)

    ComfyUI Wikiで説明されている例を以下に示します。
    (https://comfyui-wiki.com/ja/faq/why-different-images-from-a1111より)

    (masterpiece:1.2) (best:1.3) (quality:1.4) girl

    ComfyUIでは強弱の数値がこのまま処理されますが、WebUIでは以下のような正規化によって全体が1.0近辺の数値になるよう平均化されます。

    (masterpiece:0.98) (best:1.06) (quality:1.14) (girl:0.81)

    WebUIでは正規化によって突出した数値が低減されるのに対して、ComfyUIではそのまま使用されるため一部のタグだけが突出した値となって少しの値(1.5程度)でも全体のバランスを崩して生成画像が破綻することがあります。

    ノイズ生成ソースの違い

    Stable Diffusionの画像生成は、ランダムな初期ノイズからノイズを除去(ancestralサンプラーでは追加もします)していくことによって進められますが、標準設定でのノイズ生成ソース(RNG: Random Number Generator source)に違いがあります。

    • WebUIのRNG標準設定: GPU

    • ComfyUIのRNG標準設定: CPU

    なおGPUとCPUで処理時間の差はほとんどありません。
    またCPUの場合はメーカーや世代が違っても同一のノイズを生成しますが、GPUの場合はメーカー(もしかしたら世代も?)が違うと異なるノイズを生成するため画像が変化します。
    個人的には、異なるPC環境でも同じ生成結果を得るためにRNGはGPUよりもCPUにしておいたほうがよいと思います(WebUIでもForge ClassicとForge Neoは標準でCPUに設定されています)。

    その他の違い

    もちろんそれ以外にもさまざまな違いがありますが、挙げていくとキリがありません。単純な画像生成で私が少し悩んだものでは、アップスケール処理(Hires.fix)の実現方法、バッチサイズを2以上にした際の生成画像の違いがありますが、それはまた別の記事に書こうと思います。

    生成画像の違いの例

    WebUIとComfyUIが生成する画像の違いの実例として、ForgeのGitHub Discussionsで議論された「Forge Is Not Using ComfyUI as A Backend」で示されたプロンプトを使います。
    この議論は、ForgeがComfyUIバックエンドのソースコードをパクっているのに隠しているという指摘に対して、Illyasviel氏がForgeはForgeバックエンドでありComfyUIとA1111では異なるという説明をしているもので、その中でForgeが(ComfyUIではなく)A1111と同様の画像を生成する実例としてこの生成例が示されています。
    (この議論はForgeのバックエンド処理やオープンソースの在り方について議論されていて非常に面白いので興味があれば読んでみてください)。

    • Model: WAI-illustrious-SDXL v16.0

    • Positive Prompt:
      fantasy landscape with a [mountain:lake:0.25] and [an oak:a christmas tree:0.75][ in foreground::0.6][ in background:0.25] [shoddy:masterful:0.5]
      BREAK
      a beautiful landscape, (nice:0.9) and (cool:0.5), (trees:0.4), (flowers:0.3), (lake:0.5)
      BREAK
      masterpiece

    • Negative Prompt:
      bad, (ugly:2.0), low quality, (bad anatomy:0.7), (signature:0.8), watermark, (username:1.1), (error:1.2), (missing limbs:1.3), error

    • Sampler: DPM++ 2M Karras

    • Size: 1024x1024

    • Steps: 20

    • Batch count: 4

    • CFG scale: 7

    • Seed: 12345

    プロンプトにBREAK、強弱、スケジュール構文のA1111記法を使っていることがポイントです。なお元の例はSD1.5を使っていますが、今更SD1.5も無いのでWAI-illustrious-SDXLを使います。

    以下がそれぞれComfyUIとA1111の生成画像です(4枚のグリッド表示)。

    画像
    ComfyUIの生成画像例(RNG: CPU)
    画像
    A1111の生成画像例(RNG: GPU)

    ComfyUIではクリスマスツリー(a christmas tree)と雪が中心に描かれ湖(lake)は描かれていないのに対して、A1111では湖が中心に描かれクリスマスツリーと雪はほとんど描かれてません。まったく逆になっています。
    またA1111の4枚は山・湖・木々の配置にある程度の共通性を感じますが、ComfyUIの4枚はバラバラに感じます(ComfyUIの1枚目の鳥がすごく謎)。
    先に説明したとおりComfyUIのBREAK、強弱、スケジュール構文の解釈と処理がA1111と違うことが主な原因で、もしかするとスケジュール構文を強弱として解釈してる可能性もあります。

    WebUIとComfyUIの生成画像を近づける方法

    ComfyUIでの対策方法

    冒頭にも書きましたが、生成画像の違いは両ツールの設計や処理方式の「違い」によるものであり、「良し悪し」によるものではありません。
    強弱の数値をそのまま処理するComfyUIのほうが分かりやすいとも考えられますし、BREAKやスケジュール構文はComfyUI標準ノードだけでもワークフローを組むことで同等の処理を実現できます。

    ただ、ここでは話を分かりやすくするため簡単で分かりやすい方法としてComfyUIでカスタムノードを導入し、A1111と同等の記法と処理で同じような画像を生成する方法を紹介します。

    ComfyUIでA1111と同等処理を実現するカスタムノードはいくつかありますが、smZNodesに含まれるSettings (smZ)とCLIP Text Encode++を使うのがもっとも簡単で確実だと思います。

    2026/3/19追記:smZNodesはLTX-2と相性が悪く、使用していなくてもインストールしているだけでLTX-2での動画生成がエラーとなってしまうため注意してください。これはsmZNodesがKSampler処理をグローバルにフックして書き換えていることが原因だそうです(LTX-2以外への影響は不明)。

    2026/6/28追記:smZNodesは2025年6月以降更新されておらず、最近のバージョンのComfyUIではエラーが発生するようになっています。代用となるカスタムノードはいくつかありますが、ComfyUI v0.26.0において以下の組み合わせで本記事と同様の結果が得られることを確認しました。


    Settings (smZ)をLoad CheckpointとKSamplerの間に挟み、CLIP Text Encode ++をCLIP Text Encode (Prompt)の代わりに繋ぐだけです。

    画像
    標準テンプレートのSDXL Simpleワークフロー
    画像
    smZNodesを用いたSDXL Simpleワークフロー

    Settings (smZ)のRNGをcpuからgpuに変更し、CLIP Text Encode ++のparserをcomfyからA1111に変更すればA1111と同じような画像を生成することができます。

    以下がその設定で生成した画像です。

    画像
    smZNodesを使用したComfyUIの生成画像例(RNG: GPU、parser: A1111 )

    細部は異なりますが、A1111と同じような画像になりました。

    A1111での対策方法

    A1111でRNGを標準のGPUからCPUに変更することも可能です。
    SettingsタブのStable Diffusionの設定項目で "Random number generator source." をGPUからCPUに変更します。

    画像
    A1111のRNG設定項目

    また"Quicksettings list"にrandn_sourceを追加すればこの選択ボタンを画面上部に常時表示させることも可能です。
    なおA1111系WebUIでCPU設定で画像生成すると、画像のメタデータに ”RNG: CPU" と記録されます。この画像を ”RNG: GPU" 環境でPNG InfoからSend to txt2imgするとOverride settingsとしてセットされます。

    画像
    Override settingsで "RNG: CPU" が設定された状態

    これまでの生成例とプロンプトとseed等の設定は同じ、RNGのみCPUにしてComfyUI(smZNodes使用)とA1111で生成した画像を以下に示します。

    画像
    smZNodesを使用したComfyUIの生成画像例(RNG: CPU、parser: A1111 )
    画像
    A1111の生成画像例(RNG:CPU)

    RNG以外はseedを含めてすべて同じですが、RNGをGPUからCPUに変えたことでseed違いのような画像が生成されます。一方でComfyUIとA1111の間では細部が異なりますが、同じような画像になりました。

    A1111以外のWebUIについて

    A1111以外のWebUI、すなわちForge, reForge, Forge Classic, Forge NeoについてもそれぞれA1111と細部は異なるものの、同じような画像が生成されます。
    記事中でも少し触れましたがForgeはComfyUIのバックエンド処理をパクってるという指摘がありましたし、reForgeはバックエンド処理においてComfyUIのアップストリーム(処理の上流部分)から機能を取り入れていることを "Basically this removes old forge backend and replaces it with the updated version of dev, which is mostly comfy upstream." と公言しています。
    しかしいずれもComfyUIとは異なるバックエンド処理となっており、A1111に近い生成画像が得られるようになっています。

    Samplerについて(2026/5/28追記)

    本記事で利用したSamplerのDPM++ 2M (dpmpp_2m) 以外では、Eulerでも本記事の方法でWebUIとComfyUIの生成画像をほとんど同じに近づけることができました。しかし、Euler a (euler_ancestral) や、reForgeとForge Neoに実装されているER SDE (er_sde) では近づけることができませんでした。

    まとめ

    ComfyUIとWebUIの生成画像の違いについて原因・実例・対策を解説しました。
    私はComfyUIもA1111系WebUIも用途に応じて使い分けますし、Stability Matrixを使いつつそれぞれのツールを理解するためgitとpythonコマンドを使った手動インストールも使います。それぞれに設計や処理方式の違いがあり、どれが良くてどれが悪いと一概に言えるものではないと思っています。

    ツールが悪いと文句のようなことを言う人もいて悲しいので、この記事がそういったことの理解の助けになればよいと思います。

    このような感じで、あまり体系的に整理や理解されていない技術的な内容を分かりやすく無料で解説しています。「スキ」「フォロー」「チップ」で応援よろしくお願いします。

    あなたへのおすすめ