DCAI
Loading Light/Dark Toggl

ComfyUIの基本的な使い方 Text-to-image編

⏱️16min read
📅 2024年7月20日
🔄 2024年8月12日
カテゴリー:📂 生成AI中級
ComfyUIの基本的な使い方 Text-to-image編のメイン画像
Supported by

今回はComfyUIの基本的な使い方を説明していきたいと思います。デフォルトワークフローを元に使い方を学習していきましょう。デフォルトワークフローの呼び出し方はメインメニューの「Load Default」ボタンで呼び出しが出来ます。

PR
落合陽一責任編集 生成AIが変える未来 ー加速するデジタルネイチャー革命ー (扶桑社ムック)の商品画像
落合陽一責任編集 生成AIが変える未来 ー加速するデジタルネイチャー革命ー (扶桑社ムック)
🔗Amazonリンク
FSP エフエスピー 80 PLUS GOLD 認証 ATX3.0 PCIe Gen.5 対応 フルモジュラー ATX 電源 Hydro G PRO ATX3.0(PCIe5.0) 1000W [ HG2-1000.GEN5 ]の商品画像
FSP エフエスピー 80 PLUS GOLD 認証 ATX3.0 PCIe Gen.5 対応 フルモジュラー ATX 電源 Hydro G PRO ATX3.0(PCIe5.0) 1000W [ HG2-1000.GEN5 ]
🔗Amazonリンク

GUIの使い方

まずはGUI(グラフィック ユーザー インターフェース)の使い方見ていきましょう。

キャンバス

GUIの何もない空間をキャンバスと呼びます。

グラフ

ノードをワイヤー組み合わせた一連の設計図

ワークフロー

プロジェクト全体の設計図。Json形式でファイリングされたデータ。

メインメニュー

メインメニューの基本的な使い方を説明していきます。

ComfyUIのメインメニューは非常にシンプルなので簡単に使うことが出来るでしょう。

  • :::メインメニューをドラッグする持ち手。
  • Queue size:現在の実行及び待機中のグラフ数。
  • ⚙️:ComfyUIの設定を開きます。
  • Queue Prompt:現在のグラフを実行または順番待ちに追加する。
  • Save:ワークフローをJsonファイルで保存します。
  • Load:ワークフローをJsonファイルまたはConfyUIで生成したPNG画像より読み込みます。
  • Refresh:グラフの更新。
  • Clipspace:クリップスペースにコピーした画像を表示します。
  • Clear:グラフを空にします。
  • Load Default:デフォルトのワークフローを読み込みます。
  • Reset View:キャンバスを初期状態に戻します。

Extra options

Extra optionsのチェックボックスを有効にするとBatch countが指定できます。これはQueue Promptボタンをを一回押したときに実行されるグラフの回数になります。

Auto Queue

Auto Queueのチェックボックスを有効にすると自動的にグラフを実行します。これには2つのモードがあり下記の通りに実行されます。

  • instant:Queue Promptボタンを押すと永遠に実行し続けます。止めるにはAuto Queueのチェックボックスを無効化しましょう。
  • change:ノードのパラメーターを変更したら自動で実行されます。バグなのか、仕様なのかが判りませんが、実行されたらAuto Queueのチェックボックスを無効化するまで止まりません。

Queue Front

このボタンは複数のグラフが順番待ちされている時、優先的に実行させたい時に使います。

View Queue

View Queueボタンを押すと現在のキュー状態を確認、操作ができます。また表示されているキューの「Load」でパラメーターを読み込み「Delete」でキューから削除することが出来ます。

  • Running:現在実行中のグラフ
  • Pending:待機中のグラフ一覧
  • Clear Queue:待機中のグラフをすべて取り消します
  • Refresh:キューリストを更新します

View History

View Historyボタンを押すとキューの履歴を確認できます。また表示されているキューの「Load」でパラメーターを読み込み「Delete」で履歴から削除することが出来ます。

  • Clear History:履歴をすべて取り消します
  • Refresh:履歴を更新します

ノード

ノードのUI操作方法を解説していきます。ノードメニュー等は難しく見えますが実際はそれほど難しくはありません。

ノードの追加

クイックサーチの画面
クイックサーチ
画像を開く

キャンバスを右クリックで出てきたメニューから「Add Node」>「ノードの種類」>「ノード」となっているので目的のノードを選択します。また、ダブル左クリックでノードのクイックサーチを開くことが出来ます。

複数ノードの選択

Ctrlを押しながら選択したいノードをドラッグまたはクリックで選択します。

複数ノードの移動

複数ノードを選択した状態でSHIFTボタンを押しながらドラッグで動かします。

ノードの大きさを変える

大きさを変えたいノードを右下にマウスポインターを持っていくとポインターが変わるのでドラッグでサイズ変更が出来ます。

ノードメニュー

ノードを右クリックでノードメニューが表示されます。ノードメニューは選択したノードに多少の違いはありますが今回は「Load Checkpoint」を例に基本的な使い方を解説します。

  • Title:ノードのS&R変数名が表示されます。
  • Inputs:無効化されている為、用途不明
  • Outputs:無効化されている為、用途不明
  • Convert to Groupe Node:複数選択したノードを一つのノードに変換します。
  • Properties:S&R変数名を編集します。
  • Properties Panel:プロパティパネルを開きます。
  • Title:ノードのタイトルを変更します。変更後OKボタンを押さないと適応されません。
  • Mode:モード変更します。詳細はノードモードにて説明しています。
  • Resize:ノードをオリジナルの大きさに戻します。
  • Collapse:ノードを最小化することが出来ます。最小化状態でクリックすれば元の大きさに戻すこともできます。
  • Pin:ノードを固定できます。解除したい場合はもう一度クリックしてください。
  • Colors:ノードの色を変更できます。表示された色からご希望の色を選択します。
  • Shapes:ノードの形を変更できます。ボックス・ラウンド・カードの中から希望の形を選択します。
  • Bypass:ノードをバイパス(スキップ)することが出来ます。またはノードを選択状態でCtrl + bでも可能です。
  • Copy (Clipspace):ノードのパラメーターをClipspaceにコピーします。
  • Past (Clipspace):ノードのパラメーターをClipspaceからペーストします。
  • Convert Widget to Input:パラメーターを外部のノードから操作したい場合にコチラから選択します。使用例としては高さ等のパラメーターを複数のノードに共通して使用する場合にPrimitiveノードを使い一元管理にすることが出来ます。
  • Clone:ノードのクローン(複製)を作成します。
  • Remove:ノードを削除します。

ノードモード

ノードモードは以下の4つのモードがあります。

  • Always:デフォルトで通常モードで常にオン状態です。
  • On Event:未実装の為、用途不明
  • Never:ミュートと同様の動作でNeverモードのノードで流れが止まります。
  • On Trigger:未実装の為エラーが出ますがonExcutedから信号を受けたときに実行されます。
ノードのミュートとバイパスの違い
  • ミュート:ミュートされたノードで流れが止まります。
  • バイパス:ノードをバイパス(無視)して流れは継続されます。

グループ

Groupを使えばノードを纏めることが出来ます。非常に便利なのでオススメです。

  • 作成:キャンバスを右クリックして「Add Group」を選択します。
  • エリアの調整:グループの右下をドラッグしてエリアを調整します。
  • グループに追加:グループのエリア内に追加したいノードをドラッグ&ドロップします。
  • エリアのフィット:グループエリアを右クリックでメニューが出てくるので「Fit Group To Nodes」でエリアを自動で調節してくれます。
  • グループのバイパス:グループのメニューから「Bypass Group Nodes」をクリックするとエリア内のノードがバイパスされます。解除には「Set Group Node to Always」で解除されます。
  • 編集:グループのメニューから「Edit Group」でタイトル・色フォントサイズの変更とグループエリアの削除(ノードは残ります)が出来ます。

ノードの基本構成

ノードは「ノードベースGUI」の名前の通り非常に重要な部分となっています。しかし構造としては非常にシンプルに構成されているので簡単に使うことが出来るでしょう。

各エリアの説明

  • インプット:ノードの有効なインプットが表示されます。
  • アウトプット:有効なアウトプットが表示されます。
  • パラメーター:ノードのパラメーターを設定するエリアです。

ノードには基本的にインプット・アウトプット・パラメーターがあります。アウトプットから出たデータをワイヤーでインプットに繋いでいきグラフを組み立てましょう。

ワイヤーの種類について

インプット・アウトプットにはそれぞれ種類があり異なる種類をつなぐことは出来ません。

  • MODEL:紫色:モデルデータ(Unet)
  • CLIP:黄色:CLIPモデル
  • VAE:赤色
  • LATENT:ピンク色:潜在空間イメージ
  • CONDITIONING:オレンジ色:エンベディングス(プロンプト)
  • IMAGE:水色:ピクセル空間イメージ

また、ワイヤーを直線にしたい時はComfyUIの設定の「Link Render Mode」をStraightに変更します。

パラメーターの変更について

パラメーターの値を変更する場合は値を入力後OKボタンまたはEnterボタンで確定してください。確定をしない場合は適応されません。

ノードエラーについて

グラフにエラーがある場合該当のノードが赤枠で表示されます。エラー箇所を修正しましょう。画像のエラーはVAE Decodeにvaeワイヤーが繋がっていない状態です。

ショートカット一覧

キー説明
Ctrl + Enter現在のグラフを実行または順番待ちに追加する
Ctrl + Shift + Enter現在のグラフを優先的に実行する
Ctrl + Z/Ctrl + Y取消/再実行
Ctrl + Sワークフローを保存する
Ctrl + Oワークフローを読み込む
Ctrl + A全てのノードを選択する
Alt + C選択しているノードを最小化する/元に戻す
Ctrl + M選択しているノードをミュートする/ミュートを解除する
Ctrl + B選択しているノードをバイパスする/バイパスを解除する
Delete/Backspace選択しているノードを削除する
Ctrl + Backspaceキャンバスを空にする
Space + マウススペースキーを押しながらマウスでキャンバスを移動する
Ctrl/Shift + Clickノードを複数選択します
Ctrl + C/Ctrl + V選択したノードをコピー&ペーストします(ワイヤー接続は無視されます)
Ctrl + C/Ctrl + Shift + V選択したノードをコピー&ペーストします(インプットも引き継がれます)
Shift + Drag一度に選択された複数のノードを動かします
Ctrl + Dデフォルトのワークフローを読み込みます
Alt + +キャンバスのズームイン
Alt + -キャンバスのズームアウト
Ctrl + Shift + LMB + Vertical dragキャンバスのズームイン/アウト
Qメニューの「View Queue」を開く
Hメニューの「View History」を開く
Rワークフローを更新します
Double-Click LMBノードのクイックサーチを開く

デフォルトワークフロー各ノードの説明

ココからはtext to imageの最小構成となっているデフォルトワークフローを解説していきます。

Load Checkpoint

チェックポイントモデルモデルを読み込むノードです。「ckpt_name」をクリックすれば一覧よりモデルを選択することが出来ます。モデルのインストール直後など一覧にチェックポイントモデルがない場合はメインメニューの「Refresh」ボタンを押せば一覧を更新することが出来ます。

また、下記の記事ではおすすめチェックポイントを紹介しています。

CLIP Text Encode (Prompt)

CLIP Text EncodeノードはCLIPモデルをUnetが理解できる形式(エンベディングス)にエンコードします。上下共に同じノードになりますがアウトプットに繋がる場所でポジティブ・ネガティブの違いを判断できます。

Empty Latent Image

空の潜在空間を作成するノードになります。高さと幅を設定します、バッチサイズは1度のQueueで生成する画像の枚数になります。

バッチサイズとバッチカウントについて

バッチサイズとバッチカウントは似ているようで少し違います。

  • バッチサイズ:Empty Latent Imageより設定:一度に生成する画像の枚数を設定
  • バッチカウント:メインメニューより設定:一回のQueueで実行するグラフの回数

例えばデフォルトワークフローでバッチサイズを2・バッチカウントを3の設定で実行すると2枚の画像を生成するグラフが3回実行されるので合計6枚の画像が生成されます。

KSampler

KSamplerは入力されたmodel・positive・negative・Latent Imageを元にイラストを生成します。

  • seed:生成用シード
  • control_after_generate:シードの値を固定・ランダム・加算・減算の中から選択します。
  • steps:サンプリングステップの回数を設定します。
  • cfg:プロンプトにどれだけ忠実に画像を生成するかを設定します。
  • sampler_name:サンプラーの種類を選択します。
  • scheduler:ノイズスケジュールの種類を選択します。
  • denoise:0に近いほど元画像に近い画像になります。しかし今回の様に元画像がない場合は1で使用します。

サンプリングなどに関して詳しく説明しているので参考にしてください。

VAE Decode

ピクセル空間イメージを潜在空間イメージに入力されたVAEを使ってデコードします。チェックポイントモデルにVAEが内臓されている場合は今回の構成で問題ありませんが、内蔵されていない場合は「Load VAE」ノードを使いVAEを読み込む必要があります。

また、VAEについて詳しく知りたい方はコチラの記事を参考にしてください。

Save Image

入力されたピクセル空間イメージを保存します。filename_prefixがファイル名の先頭につきます。今回の例だとComfyUI_00001_.pngと言うファイルが生成されます。

生成された画像はComfyUI\outputフォルダーに書き出されています。

また、PNGのメタデータにプロンプトとワークフローが保存されます。

ComfyUI特有のプロンプトの書き方

ConfyUIのプロンプトの書き方はA1111 SD WebUIとほとんど変わりませんが幾つか相違点があります。

ウェイトについて

ウェイトはA1111 SD WebUIと同様の記述方法で使えますが数値の効き具合が違います。同じ設定でも生成画像が変わるので注意が必要です。また、ComfyUIのカスタムノード「🔗Advanced CLIP Text Encode🔗smZNodes」を導入すれば近い画像の生成は可能になります。

ウエイトの記述方法は(prompt:waight)となり、例えばa girl standing with red dressの様なプロンプトで赤いドレスの「赤い」を強調したい場合はa girl standing with (red:1.2) dressと記述します。

ネガティブエンベディングについて

ネガティブエンベディングの記述方法はembedding:nameとなりnameにはエンベディングスのファイル名が入ります。例えば「EasyNegative.safetensors」を使用したい場合はembedding:EasyNegativeと記述します。ウェイトで調節する場合は(embedding:EasyNegative:1.2)の様に記述する。

ランダムチョイスについて

ランダムチョイスとはA1111 SD WebUIのエクステンション「Dynamic Prompts」のように複数のプロンプトから1つをランダムに選択することが出来ます。例えば{smile|angry|cry}, 1girlとプロンプトに入力すると3つの中からランダムに一つを使ってくれ、笑顔・怒り・悲しみの表情の女の子がランダムで生成されます。

デフォルトワークフローを改良してみる

ここまでくればプロンプトやStep等を触って色々生成できるようになったと思います。しかし、このデフォルトワークフローの品質はそれ程良いものではありません。そこで、ComfyUIに慣れるためにもワークフローをを改良して品質を上げてみましょう。

Clip skipを適応させる

デフォルトワークフローではClipSkipの設定ノードは適応されていません。ComfyUIでClipSkipを使うには「Clip Set Last Layer」ノードを使います。AIイラストを生成している方はclip skipはよく使うので適応させましょう。

  • Add Nodeよりconditioning > CLIP Set Last Layerを作成します。
  • Load CheckpointのCLIPアウトプットをCLIP Set Last Layerのインプットへ繋ぎます。
  • アウトプットをポジティブ・ネガティブプロンプトをれぞれに繋ぎましょう。
  • A1111WebUIでClip skip2の設定と同じにしたい場合は「stop_at_clip_layer」の値を-2にしましょう。

LoRAを適応させる

ComfyUIでLoRAを適応させるには「Load LoRA」ノードを使います。今回はディテールを追加してくれる「add_detail」を適応させます。モデルはComfyUI\models\loraに置きましょう。LoRAモデルについては下記の記事を参考にしてください。

  • Add Nodeよりloaders > Load LoRAを作成します。
  • Load CheckpointのMODELアウトプットをLoad LoRAのmodelインプットへ繋ぎます。
  • CLIP Set Last LayerのCLIPアウトプットをLoad LoRAのclipインプットへ繋ぎしょう。
  • MODELアウトプットをKSamplerのmodelに繋ぎます。
  • CLIPアウトプットをポジティブ・ネガティブプロンプトをれぞれに繋ぎましょう。
  • lora_nameに使用したいモデルを選択します。
  • strangth_modelはモデルへの影響力でA1111と同じLoRAのウェイト値になります。
  • strangth_modelはクリップ(プロンプト)への影響力になります。基本出来には1で使用します。

また、複数のLoRAを適応させたい場合は、Load LoRAを数珠つなぎにすれば複数のLoRAを適応できます。カスタムノードを使うなら「rgthree’s ComfyUI Nodes」のLora Loader Stack等を使えば一つのノードで複数のLoRAを適応させることが出来ます。カスタムノードの使い方は下記のリンクを参考にしてください。

Hires. Fix(簡易版)を適応させる

Hires. Fixといっても簡易版でアップスケールモデルは使っていませんが、アップスケールしたLatentを元にディテールを追加していく処理を導入します。

  • Add Nodeよりlatent > Upscale Latent Byを作成します。
  • KSamplerのアウトを先ほど作成したUpscale Latent Byのインプットに繋ぎます。
  • Upscale Latent Byのupscale_methodをnearest-exactに、scale_byを2.00に設定します。
  • KSamplerをクローン、またはAdd Node > sampling > KSamperより作成してmodel/positive/negativeをそれぞれ繋いでいきます。(最初のKSamplerと同じ)
  • Upscale Latent Byのアウトを先ほど作成したKSamplerのlatent_imageに繋ぎます。
  • KSampler(2回目)のパラメーターを下記の様に設定します。
    steps: 35
    cfg: 10.0
    sampler_name: euler_ancestral
    scheduler: karras
    denoise: 0.55
  • Add Nodeより_for_testing > VAE Decode (Tiled)を作成し、tile_sizeを512にします。
  • VAE Decode (Tiled)のアウトを元からあったSave Imageにつなぎます。
  • 1回目のKSamplerの後のVAE Decodeのアウトから右クリックでキャンバスにドラッグします。ドラッグを離すと適応できるノードの候補が出てくるのでPreviewImageを選択します。

KSamplerのSeedを共通させる(オプション)

この工程は後ほどseedを使って同じイラストを生成したい時などに便利な機能なので必要ない方は組み込まなくでも問題ありません。

  • KSampler(1回目)を右クリックしてノードメニューを出します。
  • ノードメニューよりConvert Widget to Input > Convert seed to inputを選択しseedを外部ノードが繋がるようにします。
  • Add Nodeよりutils > Primitiveを作成しアウトを先ほどのKSamplerのSeedインプットに繋ぐ
  • KSampler(2回目)も同様にseedインプットを作り先ほどのPrimitiveのアウトを繋ぎます。

これで各KSamplerのseed値をPrimitiveノードで管理できるようになります。

以上でデフォルトワークフローの改良の完成です。DCAIのPatrionにワークフローを置いておきますので上手くいかなかった人は参考にしてみて下さい。

まとめ

今回はデフォルトワークフローを通じてComfyUIの基礎を解説しました。A1111 SD WebUIと比べると複雑に感じるかもしれませんが、引き続きComfyUIに関する記事をお楽しみにしてください。

PR
落合陽一責任編集 生成AIが変える未来 ー加速するデジタルネイチャー革命ー (扶桑社ムック)の商品画像
落合陽一責任編集 生成AIが変える未来 ー加速するデジタルネイチャー革命ー (扶桑社ムック)
🔗Amazonリンク
GIGABYTE NVIDIA GeForce RTX4090搭載 グラフィックボード GDDR6X 24GB【国内正規代理店】 GV-N4090AORUSX W-24GDの商品画像
GIGABYTE NVIDIA GeForce RTX4090搭載 グラフィックボード GDDR6X 24GB【国内正規代理店】 GV-N4090AORUSX W-24GD
🔗Amazonリンク
Supported by