ComfyUI

Last-modified: 2025-12-14 (日) 19:18:43

このアプリについて

概要

特徴

  • ノード接続によるワークフロー形式のGUIが特徴
    • この形式は、処理の流れを可視化しやすい
    • ただし、ノードが増えるにつれ煩雑な画面になってしまうので自分であれこれ整理する必要がある
  • ワークフローはファイルに保存して公開できる
    • ComfyUI公式テンプレートだけでなくCivitai等でもかなりの数公開されているため、初めて使うモデルや機能については人のものを借りて試せば良い
    • また、生成した画像にもそのときのワークフローが自動で書きこまれる*1ComfyUIで生成した画像をComfyUIの画面にドロップするとそのときのワークフローが復元される親切設計*2

AUTOMATIC1111との比較

メリット

  • VRAM消費量が低いのでVRAMが少ないグラボでも使いやすくVRAMが多いグラボなら大きな画像も出しやすい
  • VRAMが8GB程のグラボでもSDXLを使うことができる(但しそれでもできれば12GB欲しい)
  • 生成が高速
  • インストールだけは非常に簡単(下記導入方法参照。拡張機能以外はコマンドプロンプトを使わない)
  • 動画系など、さまざまな新技術は1111より圧倒的に速く導入される傾向にある(仕組み上拡張機能で実質別アプリ並みの機能を実装できるので勝手に実装する人が出て来やすい)
    • 現在A1111Forgeなどは更新が停止ないし停滞しているので、将来性という面で利がある。

デメリット

  • 一般感覚でかなりわかりにくいUI
    • 代替UI(ComfyUIをバックエンドに使う)を使う事である程度軽減は出来るがその代替UIも説明がなかったり見つかりづらかったりそもそもManagerの管轄外だったり割と一筋縄ではいかない……
    • 代替UIとしては比較的お勧めできるものとしてSwarmUIがでてきた。
      翻訳はやや不自然(とは言え読める)だが一応日本語にも対応してる。
      アプデもそれなりにされているので機能面だけComfyUIを使いたい、と言う場合には有効な選択肢になる。
      • この手の代替UI等にありがちな「元の(ComfyUIの)Workflowが使えなくなる」と言うこともなく、ふつうにタブで切り替えてオリジナルのComfyUIの画面が使えるのでそっちを軸に使うことも出来る
      • なんなら既存のComfyUI環境を呼び出しても使えるので壊さなくても良い(ただしモデル共有などそれなりに知識のある人向け)
    • 上記はA1111系のUIに慣れてる場合の話なので、いきなりComfyUIを使うような人には関係ないかも。
  • 拡張機能が少ない(といっても数百ぐらいはあるし基本的な拡張機能は1111と似たようなものはある)
    • 現在は拡張機能のバリエーションだけなら1111と比較しても遜色ないレベルに増えてはいる。…どころか2025/04現在となっては出来ることの数は1111以上と言っていい。
      ただし後述の通り日本語情報は少ない上に、Managerの管理外のものになると英語でも探すのが難しいものも。
      動画などでは速度チューンなども始めると更なるおま環との戦いも……妥協できるところで程々にしよう……
      2024年になって増えてきたAI検索エンジンも活用するのが良いかも知れない。
      • Workflowが面倒くさければ既存のWebUIで出した画像をComfyUIにドラッグアンドドロップすると簡単な再現Workflowを作ってくれるようになっている。簡単なアップスケールなどならこれで既存のものを使い回すのも手。
  • 日本語ドキュメントが少なく初心者には厳しい
    • Gemini先生、Copilot先生やChatGPT先生も頼ろう。ときどきカスの嘘を流し込まれるが
    • 一応昔に比べたら増えてはいるがどうしてもあちこちに情報が散らばっている…(なお散らばっているのは英語でも同じだったりする…)
    • 公式ドキュメント非公式wikiが出来たので昔よりは探しやすくはなったか。
      ただしホントに新しい機能はドキュメントも追いついていないので最悪ソースを読むしか無いが…
  • 開発速度が速いがゆえの部分的な壊れやすさ
    • 時々標準ノードでもなぜか使えなくなった、とかがそれなりに起きる。
      大抵一個前のコミットに戻したり次のコミットでなおってたりするが…
      • A1111の開発が活発だった時も似たようなものだったのでアクティブな開発のUIはそういうものと割り切ろう。
      • デスクトップ版(公式)や、SwarmUIのアップグレードはある程度(あくまで相対的に)慎重にやってくれるので標準ノードが突然動かない、までは起きづらい、こういった安定リリースを利用するのも手
      • StabilityMatrixで更新のたびにアプデするとこれに引っかかりやすい。幸いStabilityMatrix版は過去コミットにロールバックも楽なので何がおかしければ一旦数個前のバージョンに戻すと良い

搭載機能

このアプリでできることは下記の通り

導入方法(Windowsネイティブ環境)

  • 代替UIを使いたい場合、SwarmUIを記載されている手順に従ってインストールする(最低限gitと.netをインストール出来る知識は必要、gitを使える必要はあまりない)
    https://github.com/mcmonkeyprojects/SwarmUI
    • 通常インストールの場合、実体としては"SwarmUI\dlbackend"以下に上記のPortable版ComfyUIをインストールしているので何か困ったときにはPortable版ComfyUIの情報を探すと解決しやすいかもしれない。
  • 上のSwarmUIをインストールするのに使える(且つこれそのものが代替UIとしても使える)StablilityMatrixというものもある。
    • ただし、現在これの最新版(v2.13.4)でComfyUIをいれるとCUDA12.6版の環境を作る為、(特に動画系で使う高速化のsageattention等)一部ライブラリが上手く導入できない問題が起きるため注意が必要。
      • 回避策として手軽なのは少し旧版のStablilityMatrixで環境を作ることv2.13.3以前のものなら問題ないはず…?
    • さらなる最新版で公式にsageattention等をインストールする機能が追加されたのでむしろ高度な高速化は導入しやすくなった。
      • その他、packageフォルダ以下のルートフォルダをそのまま取り込むimport機能もあるので、直下で手動でComfyUIを導入するなどして無理やり回避も可能ではある(そこまでして管理下で使うべきかは悩ましいが)
    • リリースページを見る限りComfyUI-Zludaにも対応しているようだが…

導入方法(Windows + WSL環境)

WSLでComfyUIを動かす

使用方法

起動方法

ComfyUI_windows_portable フォルダにある run_nvidia_gpu.bat を起動

起動

1.最初に表示される画面

正しく起動できれば、ブラウザ画面にこのように表示される。
ブラウザのズームは100%でない場合、正しく動かないことがあるので注意!
20241228_main.png

2.機能説明

20241228_main_explanation.png
初心者だけど少し説明するよ
手短に言うと
③-Ⅰに出したい画像のprompt、Ⅱに出したくない内容のpromptを入れて
①-Ⅳを押せば画像が生成される

  • ①部分
    画面の大半を占めるワークフロー(③の配線がごちゃごちゃしてるやつ)を保存したり、生成実行をしたりする部分

    • workflow クリックで現在表示中のワークフローを保存したり、すでにあるワークフローを読み込んだりできる
      ワークフローの読み込みは情報が残っているなら生成画像を③にドロップしても可能だったり、
      ②-Ⅳで既に保存したことのあるものの履歴があったりするのであまり出番はない

    • 現在読み込み済みのワークフローが表示される
      起動、再読み込み後は前回最後に表示していたワークフローのみが表示されるので要注意

    • この画面は ComfyUI Manager 導入済みの画面なのでそれが表示されてる
      掃除機マークでキャッシュの削除などできるように見えるけど自分は使ったことがないよ
      △マークは今朝見つけたので全く分からない

    • キューボタン
      生成を実行するボタン。プロンプトをボタン右側の数字だけ送り、画像を生成する。
      生成待ち、生成実行中は②-Ⅰに表示される
      ×を押すと生成実行中のプロンプトを取り消し、
      □を押すと生成待ちのプロンプトを取り消せる
      プロンプトを「送ること」自体はキャンセルできないので、数が多い時は何度か押す必要がある

    • 左のボタンで実行ログを表示する。
      三で①部分の表示を最小化できる。
  • ②部分

    • 生成待ちのプロンプト数が表示される
      クリックすると生成した画像と生成待ちの予約表示が表示される

    • ノードライブラリ
      ノードの検索とプレビューができる。

    • モデルライブラリ
      各種モデルのプレビューができる

    • ワークフローの読み込みや作成ができる
      一度保存済みのワークフローは履歴で確認、ロードできるので便利
    • (Ⅴ)
      現在のバージョンではワークフローのさらに下に「テンプレート」ボタンがある
      初めて行う処理はまずこのテンプレートを開くか、なければCivitai等でワークフローを拾ってきて読み込むと良い
      基本的な使い方については一通り網羅されており、また英語だが説明書きも付いている
    • 下の方に設定ボタンがある。
      ノードをつなぐ線の表示の変更とか、スペルミスっぽいのを指摘するかなどの設定などもできる
  • ③部分
    ここはワークフローやノードによって色々変わるので、デフォルトのワークフローでは一旦
    ⅠがLoad checkpointのCLIPから繋げられてて、Ksamplerの「positive」に繋がってるポジティブプロンプト
    ⅡがLoad checkpointのCLIPから繋げられてて、Ksamplerの「negative」に繋がってるネガティブプロンプト
    ってだけ覚えていてくれればいいです。

workflow

繰り返しになりますがComfyUIには豊富なテンプレートがあるので、初めて行う処理はまずテンプレートから探してそのNoteを読みながらやってみると良いです。

t2i(画像生成/text2img)

テンプレートから開いてもいいですが、全てのワークフローを閉じたときも「画像生成」のテンプレートが自動で読み込まれます。

プロンプトを書き換える前に「空の潜在画像」のサイズを画像生成モデルに合わせて変更したほうがいいです。
生成結果は画像サイズにもかなりの影響を受けます。SDXLであれば1344x768など、ベースモデルごとに推奨サイズがあります。
デフォルトではSD1.5推奨の512x512になっています。

なお、「SDXL~」というテンプレートもありますが、SDXLモデルでもテンプレートは「画像生成」でいいです。
「SDXLシンプル」はその名前と異なり、refinerを使う複雑なワークフローです。refinerを使った画像生成は現在主流ではありません。 → SDXLモデル


※自分は詳しくないので、生成メインの視点で記述しています
いくつかの必須入力①をサンプラー②に渡し、最終的に出来上がったものを保存する③が画像生成機能としての基本的な動き
動作テストとして画像プレビューを表示させて保存せず終えたり、目的によっては画像に埋め込まれた情報を読み込んでテキストなどで表示して終わる、ということもある
また、設定がなんであれ、outputフォルダには自動で保存される
20241228_workflow.png

繋ぎ先がわからない場合、とりあえず入力/出力ポートをドラッグして何もない所で離すとメニューが開いて接続先が提案される
20241228_connect_tips.png

何もない所でダブルクリックするとノード検索が開く
20241228_nodesearch.png

入力の型があっていれば、入力ポートが無くても入力ソースにすることができる
(元に戻すときは ノードを選択して右クリック>Convert Input to Widget で戻したい項目を選ぶ)
20241228_connect_tips2.png

ノードを選択してctrl+Bで動いてほしくないノードをバイパスできる
接続は維持され、バイパス中の工程は無視されて次の工程に進む
(が、basic_pipeなんかはエラーになってしまったので止まっちゃう情報やカスタムノードとかもあるのかも)
作業途中で生成したくなったとか、いつもと違うものの生成で不必要になった工程を一時的に使用しないようにするなどの際に便利
20241231_nodebypass.png

完全なカスタムノードはどう繋ぐかわからないので、
カスタムノードのgit上でサンプルワークフローをダウンロードしてインポートし、繋ぎ方の参考にしてみよう
もちろんそのまま出力をしてもOKだ




i2i(画像から画像へ/img2img

テンプレート「画像から画像へ」でできます。
t2iのワークフローを転用したいときは、"空の潜在画像”ノードを置換してください。

変更元:"空の潜在画像"
変更後:”画像を読み込む" → ”VAEエンコード"

はじめに言葉だけがあるのではなく、ベースとなる画像も与えて生成させるイメージです。

  • ある程度描き換えたい構図が決まっている場合は、すべて文章プロンプトで指示するよりも先に画像上に手描きで色を付けてしまったほうが成功しやすいです。
    • 「画像を読み込む」ノードの右クリックメニューにある「Open in MaskEditor|Image Canvas」でごく簡単な落描きができます。この落描きは元の画像とは別のレイヤーとして扱われるので元に戻せなくなったりもしません。
  • おおむね希望通りの画像の一部分だけニュアンスを変えたり、ほぼ期待通りの画像の「清書」だけさせたい場合には向いています。
    • 「キャラは同じで構図だけ変えたい」とか「構図だけ借りて別のキャラにしたい」というときは、現在はi2iよりも特化された画像処理モデルが色々と開発されています。
      ControlNet、Flux KontextやQwen-Image-Editのほうが向いているかもしれません。
  • サンプラーノードの「ノイズ除去」値によって元の画像からどれだけ離れた画像になるか変わります。大きいほど元画像からの変化が激しくなります*3
    • 1.0(Kサンプラーノード初期値)だと元画像は無視されそうに思えますが、モデルによっては特に元画像の色使いや構図にけっこう引っ張られます。
      • SDXLモデル(ε予測モデル)以前のモデルは原理的に元画像を100%ノイズとして扱うことができません。実はt2iでもです。
    • 0.5ぐらいから少しずつ調整していくと良いです。
  • (ランダム生成したいのではなく)i2iで完成形のイメージが定まっている場合は、「シード値」0「生成後の制御」fixedに固定し、プロンプトの他はノイズ除去の強さ、サンプラーアルゴリズムやスケジュールをいじって調整するのがセオリーといわれています。


  • maskをかける方法
    • 「画像を読み込む」ノード右クリックで、マスクエディターで範囲指定
    • 「VAEエンコード」ノードと「Kサンプラー」ノードの間に「潜在ノイズマスクを設定」ノードを挿し込む。
    • 「画像を読み込む」ノードのmaskを「潜在ノイズマスクを設定」ノードへつなぐ
    • 以降は通常のi2iと同じ。
    • なお、作業性を改善させたいなら、「マスクを反転」などを適宜適用
    • 特定の部位を自動でマスクしたい場合については、Detailerのページに詳しく書いてあります。
  • 画像指図の指定
    • アスペクト比を維持しつつ拡縮するなら、
      「画像を拡大(指定サイズ)」ノードあたりが便利

ノード概要(comfy core)

以下は標準でよく使うと思われるノードについて

Utils

ノード名説明
プリミティブinputに変換したウィジェットに使うノード。
空の潜在画像(Empty Latent Image)の設定値やseed値を使い回す際に便利。
Note文字通りメモ帳。プロンプトのメモ書きやワークフローの説明などに。
rerouteワークフローの見た目を整えるのに使うノード。
プリミティブノードなど一部とは接続できない。
これに頼る前にLink Render Modeの変更を試してみよう。

Sampling

ノード名説明
Kサンプラー潜在画像にノイズを加え、画像を復元するノード。所謂生成を行う。
ManagerMenuなどでPreviewMethodを設定した場合、生成中の画像がプレビューされる。
KSサンプラー(高度)ノイズの有無・stepの途中停止などが設定できるKSamplerノード。
Refinerの利用を可能にする。

CustomSampling

ノード名説明
SamplerCustomSampler・Sigmas(Scheduler)が分離したSamplerノード。
Sampler・Sigmasの一部はKSamplerでは指定できなかった項目や種類が存在する。
SamplerCustomAdvanced全ての項目が分離したSamplerノード。
主にGuider(CFG関連)を細かく制御する為に用いる。
Samplers
KSamplerSelectKSamplerと同じようにSamplerを選択するノード。
Schedulersノイズの上限値(sigma_max)と下限値(sigma_min)が制御できる物が多い
BasicSchedulerKSamplerと同じようにSchedulerを選択するノード。
KarrasScheduler後半にかけてノイズを除去する。
SDTurboScheduler少ないstepでノイズを除去する。
AYSSchedulerAlign Your Steps。
高品質・低stepでノイズを除去する。
GITSSchedulerGenerate In Transition Steps。
ディテールを強調して高品質・低stepでノイズを除去する。
ExponentialScheduler指数関数に従ってノイズを除去する。
PolyexponentialScheduler指数関数かつ細かい制御でノイズを除去する。
BetaSamplingSchedulerベータ分布に近似してノイズを除去する。
LaplaceSchedulerラプラス分布に近似してノイズを除去する。
VPSchedulerVariance Preserving(分散保存)に則ってノイズを除去する。
LTXVSchedulerLTXVideo用のScheduler。
Sigmas
SplitSigmas指定したstep部分でSigmasを二つに分割するノード。
途中でSchedulerやモデルを変更するのに利用する。
SplitSigmasDenoiseDenoise(加えるノイズの割合)も指定できるSplitSigmasノード。
FlipSigmasSigmasを反転するノード。
つまり、生成が逆向きに進む。
Guiders
BasicGuiderNegative・CFGScaleのないGuiderノード。
FluxやDMD2など、Negativeが必要ない場合に利用する(ノードを削減できる)
CFGGuiderKSamplerと同じようにCFGScaleを設定するGuiderノード。
DualCFGGuider2種の異なるCFGScaleを設定できるGuiderノード。
一部のカスタムノードに使用する。

Conditioning

ノード名説明
CLIPテキストエンコード (プロンプト)プロンプトテキストエンコーダにかけるノード。
主にCFGGuiderやKサンプラーなどに接続する。
CLIPの最終層を設定
Clip Set Last Layer
Clip skip
基本的に「チェックポイントを読み込む」の直後に接続する。
条件付け(連結)
Conditioning (Concat)
_toのconditioningに_fromのconditioningを連結するノード。
出力すると_toに_fromの情報を足す。
条件付け(組み合わせ)
Conditioning (Combine)
_1のconditioningと_2のconditioningを統合するノード。
出力すると_1と_2の両方を同じ強さで持つ。
主にSetMaskやSetAreaなどの異なる領域を指定したconditioningを統合するのに用いる。
条件付け平均
ConditioningAvearage
_toと_fromの平均を取るノード。指定値は_toの強さ。
領域指定を伴わないならcombineよりもこちらを使った方が動作は軽い。
条件付け(エリア設定)(マスク設定)とは用途が異なる。conditioningでSamplerが生成を行う範囲を指定するノード。
x,y,width,height,strengthを指定する。
条件付け(パーセンテージでエリア設定)(SetArea)の指定する値が全て%指定になったノード。
条件付けエリア強度
ConditioningSetAreaStrength
(SetArea)のStrengthのみを指定するノード。
条件付け(マスク設定)(エリア設定)とは用途が異なる。condtioningの効果範囲をmaskで指定するノード。
主にsolidmaskやカスタムノードのエディタを接続する。所謂forge coupleの機能。
CLIPビジョンエンコードclipvision用ノード。
clipvisonモデルと似せたい画像を用意したLoadImageをinputに接続する。
unCLIP条件付け
unCLIPConditioning
clipvision用ノード。
Clip Vision Encodeの直後に接続する。
Encodeに接続された画像に近づける値を指定する。
ConditioningStableAudioStableAudio用ノード。
接続されたconditoningの開始位置・範囲の時間を指定する。

Mask

  • Maskは特定範囲の指定に活用される。
    ノード名説明
    SolidMask矩形のMaskを新規作成するノード。
    valueが1に近いほど白、0に近いほど透明=黒になる。
    CropMask指定範囲を基準にMaskを切り取るノード。
    MaskCompositeMask同士を合成するノード。
    Destinationに接続したMaskに、Sourceに接続したMaskを乗算・減算・加算する。and・or・xorも使える。
    InvertMaskMaskを反転するノード。
    他ノードで指定した範囲以外の(余剰部分の)一括指定などに用いる。
    FeatherMask指定した値・方向にvalueが0になっていくグラデーションをかけるノード。
    GrowMask指定した値分0でないvalue部分を引き延ばすノード。
    角を伸ばす・伸ばさない設定項目がある。
    ThresholdMask指定した値より大きいvalue部分を検出し、value1.0で返すノード。
    画像を読み込む(マスクとして)画像のカラーチャンネルをMaskとして読み込むノード。
    画像色をマスクに変換
    ImageColorToMask
    画像から合致する色部分をMaskとして読み込むノード。
    尚、指定範囲は0~16777215(2^24)である。カラーコード指定は不可。
    翻訳もおかしいが原文も理解しづらい。

その他

ノード名説明
アニメーションWEBPを保存webp形式で保存できる。保存サイズを小さくしたいならlosslessをfalseにしよう
ただし名前にある通りベースがAnimeWebpなので、
一枚ずつ出してるときは良いがバッチで6枚とかまとめて出そうとすると
「6枚の出力がアニメーションする1ファイル」になって泣くことになるので気をつけよう。

データ形式概要

ComfyUI上の各ノード間でやりとりされるデータについてのざっくりした説明

画像類

画像
青い線でつながる普通の画像。おそらくメモリ上ではビットマップ形式。
潜在画像(latent image)
画像をVAEでエンコードしたもの。ピンク色の線でつながるやつ。
同じ「潜在画像」形式でもVAEによってエンコード形式が異なる
それぞれ異なるベースモデル(VAE)を用いて複数回サンプラーを適用するときは、基本的にそれぞれのVAEでデコード/エンコードしなおす必要がある。
不適切なVAEでエンコードした潜在画像をサンプラー等に入力すると、エラーにはならないが出力が崩れるサイレントキラーな仕様。
とはいえVAEエンコード/デコードは不可逆式の処理なのでむやみにかければいいというものでもない。
ビデオ
あるにはあるが、処理中は画像リスト/バッチとして扱われていることが多い。
最後の最後で「動画を作成」ノードによって画像からビデオ形式に変換される。
マスク
画像中の特定の範囲を指示するためのマスク。画像とも相互に変換できる。
segs
segmentations. Impact Packで使うマスクの亜種。マスクと一緒にその範囲を示すラベル(faceなど)が入っている。マスクと相互に変換できる。

その他のデータ

条件付け(conditioning)
生成する画像等の方向性を指示するもの。
プロンプトテキストエンコーダ(CLIP)でエンコードしたもののほか、ControlNetによる条件付けも含まれる。
同じプロンプトでもテキストエンコーダによってエンコード形式が異なる
それぞれ異なるベースモデル(CLIP)を用いて複数回サンプラーを適用するときは、基本的にそれぞれのCLIPでプロンプトをエンコードする必要がある。

Embeddingのように「条件付け」を変える画像処理もあれば、LoRAのように「モデル」側に作用する画像処理もある。
文字列(複数) / 整数 / 浮動小数点 / ブール値
プログラミングでいうところのいわゆる基本データ型。
任意のノードのパラメータに入力としてつなぐことができる。
残念ながら選択式項目には入力できない。
ComfyUIでは基本的にワークフローの整理用で、手作業でいじるパラメータを一か所にまとめるために使う。
自分しか使わないワークフローなら別に使わなくても良い。

AIモデルなど

モデル、clip、VAEはSD系のモデルだと「チェックポイントを読み込む」からまとめて生やすことが多い。

モデル
紫色の線でつながるモデルは画像生成モデルの本丸。拡散モデル(diffusion model)。SD系ではU-Net拡散モデルが使われている。
CLIP
ComfyUIではテキストエンコーダのこと。CLIPは本来固有名詞なのだが、ComfyUIではT5もQwen-VLもCLIP扱いされる。動画編集やってる人だとビデオクリップだと思ったかもしれないが違う。Contrastive Language-Image Pre-training(言語-画像の対照についての事前学習)の頭文字を取ったもの。
VAE
名前の通り。詳しい解説はそちらのページで。ComfyUIでは画像と「潜在画像」の相互変換を行うノードで必要とされる。
コントロールネット
ControlNet用のモデル。やりたい処理(と画像生成用のベースモデル)に合ったControlNetモデルを選択する必要がある。詳細はControlNetのページを参照。
こいつも不適切なモデルを入力するとエラーを出さずに出力を破綻させるサイレントキラー。

このほかアップスケーリングやマスク範囲の自動検出などを行う場合はそれ専用のモデルが要求されることもある。
特定の処理に特化したモデルについてはComfy UI ManagerのModel Managerから入れるのが楽。

basic_pipe
Impact Packを入れると使えるようになる。
モデル、CLIP、VAEとポジティブ/ネガティブ条件付けをひとまとめにしたもの。
To/FromBasicPipeで結線する。
Impact PackのKSampler (pipe)や各Detailer (pipe)で使え、ワークフローがすっきりする。

バッチ/リスト

ComfyUIにはプログラミング言語でいうところのいわゆる配列みたいなものとして、「バッチ」と「リスト」という2つの概念がある。
この2つはどちらも同種のデータのまとまりだが、似て非なる動作をする。

バッチ
(潜在)画像の場合、同じサイズの画像しかまとめられない。
インデックス0と異なるサイズの画像を追加すると、インデックス0の画像に合わせて勝手にリサイズされる。

サンプラー等に潜在画像3枚分の「バッチ」を渡すと、要素ごとに乱数系列を変えて処理される。
同じ潜在画像3枚の「バッチ」を入力したサンプラーからでも、それぞれ異なる画像3枚が生成される。
バッチ未対応のノードに渡すとエラー終了する。
リスト
サイズの異なる(潜在)画像もまとめることができる。

サンプラー等に潜在画像3枚分の「リスト」を渡すと、同じシード値で順々に処理される。
同じ潜在画像3枚の「リスト」を入力したサンプラーからは、同じ画像が3枚出力される(時間の無駄)。
どのノードでも正常に処理される。

プラグイン

ComfyUI Manager

おすすめ
プラグインを使う人は初めにインストールしておくと便利です。Managerメニューから他のプラグインをダウンロード、インストール等ができます。
これでdanbooru語のオートコンプリートも使えるようになるのでスペルミスも減らせる。
https://github.com/ltdrdata/ComfyUI-Manager
インストール方法は、comfyui/custom_nodesフォルダで git clone https://github.com/ltdrdata/ComfyUI-Manager.git

  • デスクトップアプリ版など、インストール方法によっては始めからManagerがついてることも多いので、他のツール経由で入れている場合コマンド叩く前にComfyUI-Managerフォルダがいないか軽く確認してみたほうが良いかもしれない。
    基本的にgit側の仕様で既に存在するフォルダがあるものをcloneをしようとしてもcloneが失敗するだけなので壊れたりする心配はほぼ無いが……

ComfyUI-Custom-Scripts

タグのオートコンプリート、グラフの自動配置やグリッドスナップ等々便利な機能をひとまとめにインストールできるスクリプト。
上のManagerが入っていれば、Managerボタンを開いたメニューのCustom Nodes Managerから検索して出てくるのでInstallボタンを押せばOK。

インストール後にオートコンプリートを有効にするには、歯車を押してText AutocompleteメニューのManage Custom Wordsボタンをクリック。
その後のメニューでそのままLoadボタンを押してSave!を押せばdanbooru語で補完されるようになる。

2025/01/13時点で、Manage Custom Wordsボタンのjsが正しく作動せずメニューを開けないことがある。その場合は
https://gist.githubusercontent.com/pythongosssss/1d3efa6050356a08cea975183088159a/raw/a18fb2f94f9156cf4476b0c24a09544d6c0baec6/danbooru-tags.txt
をダウンロードして
ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui-custom-scripts\user\autocomplete.txt
に保存してから画面をリロードすればOK。

WAS Node Suite

中級者向け。数値や文字列の演算や、画像の簡単な加工などができる。かゆいところに手が届くパッケージ。

ComfyUI_rotate_image

任意の角度で画像を回転できる。標準の「Rotate Image」ノードは90度単位でしか回転できない。
So what? って思うじゃん?
立ち絵を持ってきて15度ぐらい回転させて対角線に収まるように切り抜き、MaskEditor|ImageCanvasで顔とかアカン所にマスクをかけて必要に応じ構図を落書きしてからアレなプロンプトでi2iすると、雑コラを量産できる。それだけ。

TIPS

画像の出力先を変更

デフォルトでは /output に保存される。
起動オプションに「--output-directory "D:\hogehoge"」みたいに書き足すことで変更可能。

(2024/7/30)
・ComfyUI Revision: 2417 [c75b5060] | Released on '2024-07-29'
・Stability Matrix 2.11.5
の組み合わせにて確認

また、Auto1111と同様、基本的には保存時のファイル名指定でパスを追加できるので /output以下にフォルダ分けをするには普通にフォルダをファイル名として書いてやれば良い。
※ただしパスの処理などは厳密には画像保存するノード依存なのでノードが対応する書き方が必要になる、以下は基本的にはデフォルトの画像保存ノード、SaveImageを前提とする。

  • 例えばsfw/fileと書けばsfwフォルダ以下にfile-0001.pngが、nsfw/eroと書けばnsfwフォルダ以下にero-0001.pngが生成されると言った感じ。
    • ファイル名につく数字は単純に生成したファイル名に対する連番のようで基本的には生成した順番に付く、単に上書きを避けてくれるためのものと思って問題ない。
    • わかる人向けだが、フォルダ指定を応用してoutputの下にシンボリックリンク(ジャンクション)で別のディレクトリに保存するファイルを誘導してやることも可能
  • auto1111同様に日付などもファイル名に含めるように指定できる、下記のリンク参照
    Save File Formatting - ComfyUI Community Manual

Embeddingを使いたい

ComfyUIでのEmbeddingモデルの使用方法(ComfyUI wiki)

Emebeddingモデルを適切なフォルダに置いておけば、Emebeddingだけは特別なノードは必要ない。
プロンプトに「embedding:~」と書けば適用される。

同じ名前のEmbeddingモデルを複数使い分けたい場合、それぞれのファイル名を変更し「embedding:(リネーム後のファイル名)」と書けばよい。

LoRA読み込みノードがとっ散らかってつらい

rgthreeパッケージのPower Lora Loaderほか1ノードで複数のLoRAを読み込めるカスタムノードがいくつかある。
LoRA適用強度についても各LoRAごとに設定可能なものが多い。

Web UIのモデルデータを使いたい

Web UIにあるモデルデータ等を読み込む方法です。モデルデータを共用出来るので便利。

  • ComfyUI_windows_portable\ComfyUI\extra_model_paths.yaml.example のファイル名を extra_model_paths.yaml に変更
  • extra_model_paths.yaml をメモ帳等で開いて6行目のパスをWebUIの場所に変更
    6: base_path: C:\stable-diffusion-webui

xFormers

2023/10/8以降のバージョンではpython 3.11 with pytorch 2.1 cu121が使用されxFormersが不使用になったようです。1080tiで導入しても生成時間が変わりませんでした。
https://comfyanonymous.github.io/ComfyUI_Blog/comfyui/update/2023/10/08/Weekly-update.html

プロンプト入力欄の文字を見やすくしたい

ComfyUI\web\user.cssに次の文字列を書き込んで、ComfyUI上でスーパーリロード(Ctrl+Shift+R)をすると反映される。
フォントサイズを大きくすれば、文字サイズも大きくなるがノートノードの文字なども大きくなるので注意。

.comfy-multiline-input {
  font-family: "Segoe UI";
  font-size: 12px;
}


ランダムでいろいろな画像を生成したい

プロンプト中「{みかん|りんご|バナナ}」のように波括弧で囲み縦棒で区切ると、ComfyUIではワークフロー実行のたびにその中からランダムで一つが選ばれる。(NovelAIと違って強調構文ではないので注意)

もっと長い選択肢リストを使いたい場合は、ComfyUI-Impact-Packに入っているImpactWildcardProcessorを使うと改行区切りのテキストファイルを選択肢リストとして使うことができる。
選択肢リストは「custom_nodes\comfyui-impact-pack\custom_wildcards」以下に置く。
ImpactWildcardProcessorは選択肢リスト内にもランダム選択構文(__hoge__)を書くこともでき、もちろんそれもまたランダムで抽出される。

画面の明るさに影響するプロンプトが効かない

SD系モデル(非v-predモデル)には明度の平均値が固定されやすいという問題があり、通常t2iでは極端に明るい画像や極端に暗い画像を作ることができない。 → 理由
i2iで黒や白の下絵を渡すことでもっと暗い絵や明るい絵を描かせることができる。
適切なノイズ除去値は出したい絵やモデル、サンプラー設定による。1.0でも効く。スイートスポットは結構狭い。
なおノイズ除去値が大きくても下絵の影響が大きいのは明度で、プロンプトがなければ色相などはあまり反映されない。

単色の下絵はWAS Node SuiteのImage Blankで生成できる。
Image BlankはRGB値で指定するが、面倒であればそちらは灰色で固定し、同じくWAS Node SuiteのImage Filter Adjustmentsでbrightness(-1.0~+1.0)を調節するようにもできる。

下は夕日の逆光(sunset, backlight)での例。
sdxl-brightness.jpg
サンプラーはDPM++ 2M SDE Karras

コントラストを弄って眠たいイラストをパキっとさせたり逆に印象派みたいにボカしたりしたい

コントラストというか周波数成分(ピクセル間の色の変化の激しさ)だが、プロンプト以外でもComyfyUIコアノードのFreScaで画風を弄れる。
ControlNet同様に画像生成処理中ステップごとに適用されるので、FreScaを通すと色彩だけでなく構図も変わるがその分馴染む。
ただし、実写には向かない。

FreSca(RunComfy Comfyノードリファレンス)

  • scale_lowは1.0を基準として、上げると全体的に鮮やかな画面になる。下げるとコントラストの低い落ち着いた画面になる。
  • scale_highは1.0を基準として、上げると細部の描き込みが増えてにぎやかな画面になる。下げるとディティールが削られるがノイズが減る。
    • 下の例だとscale_high=3.0のものはツインテールに衣装の色が色移りしてツートンカラーになってしまっている。
  • 両方下げると印象派チックな抽象的な絵画になるが、極端に下げると溶けて得体のしれないものになる。
  • 両方上げるとパキっとした絵になりやすいが、scale_lowを上げすぎると目に痛く、scale_highを上げると変なものも生えてきやすくなる。
    fresca-scale.jpg
  • freq_cutoffはどのくらい大きな構造(主線とか顔とか服の陰影とか)を低周波数域とし、それより小さい構造を高周波数域とするかのしきい値を決める。
  • freq_cutoffを上げるとより大きな構造が低周波数域とみなされてscale_lowで処理されるようになる。
  • freq_cutoffを下げるとより大きな構造が高周波数域とみなされてscale_highで処理されるようになる。
  • 下の例だとfreq_cutoff=10の時点で各部の主線が高周波数域に入ってscale_high=2.5と強調されているが、ディティールが詳細な分ノイズも増えており指の生え際が少しおかしい。
    freq_cutoff=1だと衣装の陰影や背景などほぼすべてが高周波数域とみなされてscale_high=2.5で過度に明暗を強調された結果目に痛いだけで滲んだ画面になってしまっている。
    fresca-cufoff.jpg

もうちょっと詳しく原理的な話

音楽に詳しい人は画像用のバンド数が2個しかないイコライザみたいなものだと考えて欲しい。
フーリエ変換については画像処理より音声信号処理のほうが資料も多く図も理解しやすい。

FreScaは画像生成モデルが各ステップで(潜在)画像に変更を描き加える際、その差分画像に対して補正を行う。
まず画像の差分について、差分画像を「ピクセル列の色の変化の波」として捉えたときのその波形に対し、2次元フーリエ変換で方向と周波数ごとの単純なサイン波・コサイン波の重ね合わせとして表す。
このとき、波の振幅の大きさ、つまり音声であれば音の大きさは、画像では色の変化の激しさになる。
対し、周波数は逆数で表すと周期の長さ。画像では環境光など大きな構造における色の変化が低周波に現れ、主線などの小さな構造における色の変化が高周波に現れる。
freq_cutoffを基準に低周波、高周波に分けた各波形に対し、scale_low, scale_highで補正をかけると、小さくすれば色の変化が緩やかに、大きくすれば色の変化が劇的になる。
最後にこの補正後の波形を逆フーリエ変換して画像差分に戻してからそれを潜在画像に反映する。

多段生成ワークフローのパラメータ手動調整に時間がかかる件の改善

HiresFixなど、1回実行する間にサンプラーを何度も走らせるような長大なワークフローを組んでいる場合。
調整が面倒になるので、2つ目以降の乱数生成ノードはi2i等と同様にシード「0」生成後の制御「fixed」に固定してしまった方が良い。

ComfyUIは2回目以降のワークフロー実行の際、前回から変更がないノードについては処理を省略し、前回の結果をそのまま流用する。
乱数が使えるノードで生成後の制御が「randomize」になっていると毎回シード値が更新されるので、省略されずワークフロー実行のたびに計算されなおすことになる。
2つめ以降のノードを「fixed」にすることで、後ろのほうの処理のパラメータをチューニングしたいときでも、再計算のトリガーとなる最初の乱数生成ノードを「fixed」にしてしまえばパラメータをいじったノード以降からしか再計算されなくなる。

サンプラーなど乱数を使えるノードでは生成後の制御の初期値が「randomize」になっている。

ノード作るとか面倒なのでなんとかしてよ

現行のバージョンだと大抵のユースケースは左メニューから呼べる「テンプレート」機能でカバーされています。
SD系で初心者向けの簡素なユースケースは「はじめに」に含まれています。
(「はじめに」の中でも(新)が付いているテンプレートはQwen-Image等を使う「重い」ワークフローなので、新しくないもののほうが初心者向けです。)

「モデルが足りない!」と怒られた場合は、指定されたモデルをダウンロードして指定された場所に置けばいいです。

あとは適当にプロンプト入れてQueue Promptを押してしばらく待てば生成されます。
右下側にある紫なやつは無効化してる機能で、使いたい場合はクリックしてCtrl+Bを押せばOK。


「ノードが足りない!」と怒られた場合。足りないノードにバツ印が付きます。

まず、ComfyUIをインストールして起動し、ComfyUI Managerをインストールするとこまでは自力でなんとかする。して。

そうすると、出来合えのワークフローが出てくる(真っ赤だと思う)ので、ここまでできたら、メニューからManager->Install Missing Custom Nodesを押して、出てきたやつを全部Installする。
Install後は再起動しろと言われるので、ComfyUIを再起動して開き直せばワークフローが使えるはず。

としあきのコメント

コメント

最近の主な出来事ページより抜粋

161 無念 Name としあき 23/07/29(土)16:57:08 ID:/U5B09QU No.1121768109 そうだねx1

>3060の12Gで速度を大きく犠牲にしてVRAM消費低減オプションを全部詰め込んでやっと動いたレベル……
WebUIじゃなくComfyUI使ったら普通に解決したわ……モデル読むのも早いし生成も早い

147 無念 Name としあき 23/07/29(土)20:23:08 ID:4pXOuVCU No.1121838383

>ComfyUI構築できた

>ノード繋ぐのだけ分かれば結構簡単ね
ノードのこと全然わからなくてもワークフローがどこから入手できればいいかわかれば基本的に生成できるので覚えておくといい
ComfyUIで生成した画像にもワークフローが残ってるし
https://civitai.com/models/118406/counterfeitxl
Workflow欄にあるコピーボタン押して入手できる
この場合ComfyUIの画面でペーストすれば構築してくれる
画像の場合はcomfyUIにドロップすれば構築してくれる

23 無念 Name としあき 23/07/30(日)11:15:58 ID:jwS1aTvM No.1122036409 そうだねx3
ComfyUI面白いね
低スペックでもSDXLがサクサク動くのはいいぞ

71 無念 Name としあき 23/07/30(日)11:52:18 ID:jwS1aTvM No.1122048117 そうだねx1
SDXLのリアル系とアニメ系の出方がいまいち制御できねぇ……
ComfyUIベースだとWebUIでout of memoryしてたサイズでも出力できるのが本当に助かる…

150 無念 Name としあき 23/07/30(日)12:53:21 ID:jwS1aTvM No.1122067784

>もうちょいVRAM消費が減ってくれたらいう事ないのだけどComfyUIも触ってみた方がいいのかな?
VRAM消費量もそうだけど何より速度が体感で露骨に違うから触った方が良いと思う
割とシステムの根幹部分だからWebUIで同等な速度にはできないらしいし

159 無念 Name としあき 23/07/30(日)13:03:46 ID:O8zskrno No.1122071458 そうだねx4
8Gクラスだと現状はComfyUIで動かすのが一番じゃないかな
12Gでも1111だと結構カツカツで何度かwebuiを再起動する目にあってる

179 無念 Name としあき 23/07/31(月)14:33:55 ID:hX0W4wac No.1122467339 そうだねx1

>なんかシビタイ見てても

>XL系はcomfyUIで作ったサンプル画像が多い気がする
今はどの道XL対応の拡張もろくに無いので
comfyUIでとにかく軽く早くって感じなんだと思う
1024*1024ならVRAM8GBでも1111と同時起動出来て
comfyUIで素材作って1111でi2iみたいな事出来て便利

228 無念 Name としあき 23/07/31(月)21:25:00 ID:YEPIH06k No.1122585722 そうだねx1
SDXL使うときにWebUIで速度に不満があったらまずはComfyUI使うと良いぞ……
違うUIを使うわけだから最初はちょっとハードルあるけどそれ以上にリターンが大きいからね


*1 変なものを使って生成したときはうっかりお漏らししないよう注意が必要
*2 Civitai上のモデル等のカバー画像でもComfyUIにドロップするとワークフローが見られるものが多数ある
*3 なので(i2iではない)通常のtext2imgでは、最初のサンプラーのノイズ除去値は1.0に固定したほうがいいです。さもないと「空の潜在画像」に引っ張られて変なものが生成されます。