Stable Diffusionに「a white vase with red flowers」を頼むと、別のものが出ることがよくあります。白い花、ピンクの背景、赤いテーブル。プロンプトのすべての単語が同じコンディショニングを共有するため、色が互いににじむのです。ComfyUIには、色を分けておく方法がいくつかあります。ここでは、シンプルなプロンプトの重みから、はるかに予測しやすい結果になる2つのコンディショニングノードまでを紹介します。
ポイント
- 重み:
(red:1.5)で単語が強くなります。約0.5〜1.5の範囲にとどめます。 - ランダム選択:
{red|blue|yellow|pink}は画像ごとに1つの選択肢を選びますが、色はやはりにじみます。 - Conditioning (Concat): 物体ごとに1つのプロンプトを、端から端へつなぎます。色は本来の場所にとどまります。
- ConditioningAverage: 2つのプロンプトをブレンドします。strengthスライダーでバランスを決めます。
ComfyUIが初めてなら、ComfyUIのノードの基本とテキストから画像へから始めてください。
セットアップ
Workflow → Browse Templates → Image generationから始めます。チェックポイントには、よりリアルな画像のSD 1.5モデルのepiCPhotoGasmを使います。テスト用プロンプトは「white vase with red flowers」です。Ctrl+Enterで実行し、Qでキューのパネルに以前の結果を表示します。Queueボタンの横のバッチ数が、1回の実行で作る画像の枚数を決めます。
単語に重みを付ける
単語を括弧に入れ、コロンと値を付けます:white vase with (red:1.5) flowers。これで赤がより赤くなります。単語を選択してCtrl+上またはCtrl+下を押し、小さな刻みで値を変えることもできます。コミュニティのComfyUIドキュメントが、入れ子や、以下の{a|b}の選択肢を含む完全な構文を説明しています。値は約0.5〜1.5にとどめてください。
もっと高い値も試しました。2.2では赤くなりすぎ、アーティファクトが出ました。
ランダムな選択肢と、にじみが出る場所
縦線|で区切った選択肢を波括弧に入れると、画像ごとに1つがランダムに選ばれます:white vase with {red|blue|yellow|pink} flowers。4枚のバッチを実行すると、異なる色が出ます。リストを順に回すわけではなく、ランダムです。(プロンプトを順に回すには、私のPrompt Cyclerノードをご覧ください。)
ここで問題がはっきりします。モデルは色をまとめて計算し、画像全体で混ぜます。青と白の花、青やピンクに変わる背景。各色がどこに行くかを制御できません。
Conditioning (Concat):物体ごとに1つのプロンプト
その制御を強制するために、プロンプトを分けます。
- 2つ目のCLIP Text Encodeを追加し、チェックポイントのclipを接続します。
- Conditioning (Concat)を追加します。2つのプロンプトをconditioning_toとconditioning_fromの入力に接続し、その出力をKSamplerのpositive入力に接続します。
- 一方のプロンプトにwhite vase、もう一方にred flowersを入れます。
Concatはconcatenation(連結)の略で、混ぜずに部品を並べることです。「Snow」と「ball」は「snowball」になり、数字の3、5、7、8は合計ではなく文字列の「3,5,7,8」になります。プロンプトは別々のままなので、赤はピンクの背景や赤いテーブルに染み出しません。
4枚のバッチでは、たいてい、きれいな背景の花瓶に赤い花が入った画像になりました。ときどき花畑になったり、花瓶が透明になったりしました。ネガティブプロンプトにtransparencyを加えると、透明な花瓶のほとんどが止まりましたが、毎回ではありません。
すべてを1つのプロンプトに入れると、重みがすべてのトークンに分散されるため、赤と白の花が混ざります。うまくいくこともありますが、予測できません。
3つ目のプロンプトを加える
Ctrl+C、Ctrl+Shift+V(接続付きで貼り付け)でプロンプトノードをコピーし、2つ目のConcatノードをつなぎます。最初のConcatの出力に3つ目のプロンプトblack backgroundを加えて、KSamplerのpositive入力に入れます。
タイプミスを直した後、黒い背景に赤い花の白い花瓶が得られました。ときどき不具合は出ます(花瓶が黒くなったこともあります)が、全体としてプロンプトははるかに予測しやすくなり、合うものを選別します。これがないと、色があちこちに混ざります。
ConditioningAverage:2つのプロンプトの間のスライダー
ConditioningAverageは、同じ2つの入力を受け取ってブレンドします。conditioning_to_strengthがバランスを決めます。
- 1.0: 主に赤い花、強い側。
- 0.5: バランスの取れた、赤い花の白い花瓶の画像。
- 約0.21: 白い花瓶に白い花。
「white skull」と「gold crown」で、ネガティブプロンプトにman, woman, female, maleを入れても、人物がいくつか出ました。低い値では、主に白い頭蓋骨を拾い、王冠はまったく出ませんでした。高いと、頭蓋骨も含めてすべてが金になるか、王冠だけが表示されました。その中間で、金の王冠をかぶった金の頭蓋骨と、不具合として、頭の上に頭蓋骨のようなものを載せた女性が出ました。これらの値を変えるのは本当に好きです。ランダムな結果は、魅力的なことがあります。プロンプトをさらに詰める(「white skull isolated」とネガティブにface)と、顔は減りました。
きれいな結果にはConcatを使う
この種のプロンプトでは、Concatのほうがはるかにうまくいきます。gold crownとwhite skull isolatedをConditioning (Concat)でつなぐと、金が頭蓋骨に混ざらなくなりました。
気に入った画像を選び、SD 1.5による無料のAIアップスケーリングのワークフローで4倍にアップスケールしました。
動画版を見る (7:46)
上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。
よくある質問
Stable Diffusionの色にじみとは何ですか?
1つのプロンプトに複数の色や素材が含まれると、モデルがそれらを混ぜてしまいます。「white vase with red flowers」が、白い花、ピンクの背景、赤いテーブルになることがあります。言葉が1つのコンディショニングを共有するため、影響が画像全体に広がるのです。
ComfyUIのプロンプトで、単語の重みを変えるにはどうしますか?
(red:1.5)のように、値を付けて括弧で囲むか、単語を選択してCtrl+上 / Ctrl+下を押します。約0.5〜1.5の値が安全です。2.2では画像があまりに赤くなり、アーティファクトが出ました。
Conditioning ConcatとConditioning Averageの違いは何ですか?
Concatは、プロンプトを並べた別々の部分として保つので、混ざりません。Averageはそれらをブレンドし、strengthスライダーがどちらのプロンプトが優勢になるかを決めます。
