私的AI研究会 > Diffusion > ComfyUI2

画像生成AI「ComfyUI」2(基本編) == 編集中 ==

 「ComfyUI」を使ってローカル環境でのAI画像生成を検証する

▲ 目 次
※ 最終更新:2025/11/28 

「ComfyUI」基本操作と『text-to-image』

「StableDiffusion WebUI」の text2img 生成過程に沿って「ComfyUI」で実行してみる

プロジェクトで作成するワークフロー

「StableDiffusion WebUI」の生成画像から生成

  1. 画像をキャンバスにドラッグ&ドロップする
    ・生成情報が埋め込まれた画像は情報を引き継ぐことができるようだ

  2. ワークフローが表示されるので手を加える
    ・「Save Image」ノードの「filename_prefix」が ComfyUI となっているのを変更する(日付ディレクトリに「ComfyUI_YYYY-MM-DD_連番_.png」)
    %date:yyyy%-%date:MM%-%date:dd%/ComfyUI_%date:yyyy%-%date:MM%-%date:dd%
    ・「Load Checkpoint」のモデルを再設定(これをしないとエラーで実行不可となる)
    ・「CLIP Set Last Layer」ノードを削除(とりあえず不要)
    ・「KSampler」schedular で kerras を指定
    ・きれいな画像が生成できるよう、パラメータをいじってみる
  3. プロンプト/ネガティブ・プロンプトを修正(ComfyUI の書式に準じる)すると、近いイメージの画像が生成できる
    ComfyUI1_2025-10-24_00011_m.jpg ComfyUI1_2025-10-24_00014_m.jpg ComfyUI1_2025-10-24_00015_m.jpg ComfyUI1_2025-10-24_00016_m.jpg ComfyUI1_2025-10-24_00017_m.jpg ComfyUI1_2025-10-24_00018_m.jpg
    Prompt masterpiece,best quality,8k,raw photo,photo realistic,shiny skin,detailed skin,detailed face,detailed eyes,1girl,Japanese idol,beautiful face,
    傑作、最高品質、8k、生写真、フォトリアル、光沢のある肌、詳細な肌、詳細な顔、詳細な目、1人の女の子、日本のアイドル、美しい顔、
    Negative prompt worst quality,low quality,painting,sketch,flat color,monochrome,grayscale,ugly face,bad face,bad anatomy,deformed eyes,missing fingers,acnes,skin blemishes,nsfw,nude,nipples
    最悪の品質、低品質、絵画、スケッチ、フラットカラー、モノクロ、グレースケール、醜い顔、悪い顔、悪い解剖学、変形した目、欠けている指、ニキビ、皮膚の傷、nsfw、ヌード、乳首
  4. プロンプト/ネガティブ・プロンプト以外のパラメータはそのままでも品質は維持できそう
  5. ワークフローを「txt2img_webui_test」という名前で保存(Save)する
     ※ ワークフロー:filetxt2img_webui_test.json

『text-to-image』ワークフローを作る

  1. チェックポイントを読み込む
    ① キャンバス上でダブルクリックして「Load Checkpoint」を検索して選択する
    ② 使用するモデルを指定する

  2. プロンプト入力欄を作る
    ① キャンバス上でダブルクリックして「CLIP Text Encode」ノード選択2つ貼り付ける
    ②「Load Checkpoint」の CLIP と接続する
    ③ プロンプト/ネガティブ・プロンプトをそれぞれ入力する(前節の例をコピー&ペースト)

  3. 画像生成用のノードを追加する
    ① キャンバス上でダブルクリックして「KSampler」ノード選択する
    ②「CLIP Text Encode」の CONDITIONING と positive/negative をそれぞれ接続する
    ③「Load Checkpoint」の MODEL と model を接続する

  4. キャンバス(空の潜在空間 Latent Image)を用意する
    ①「Empty Latent Image」ノードを追加する
    comfyui_108_s.jpg
    ② LATENT と「KSampler」の latent_image を接続する
    ③ 生成画像サイズを指定する

  5. 画像を人間が見える形にして出力する
    ① 潜在空間画像を復元する「VAE Decode」ノードを配置する
    ② 生成画像を表示し保存する「Save Image」ノードを追加する
    ③ 「VAE Decode」の IMAGE と「Save Image」を接続する
    ④「KSampler」の LATENT と「VAE Decode」sample を接続する
    ⑤「Load Checkpoint」の VAE と「VAE Decode」vae を繋ぐ
    ⑥「Save Image」ノードの「filename_prefix」が ComfyUI となっているのを下記に変更する
    %date:yyyy%-%date:MM%-%date:dd%/ComfyUI_%date:yyyy%-%date:MM%-%date:dd%
    ⑦「Save As」メニューからワークフローを「bs_text2img」という名前で保存する

  6. 『text-to-image』基本ワークフローの完成
    ①「Run」を押して画像を生成する
    ComfyUI9_2025-10-30_00003_m.jpg
     ※ ワークフロー:filebs_text2img.json

『Hires. Fix』(高画質化)ワークフローを作る

  1. filebs_text2img.json『text-to-image』基本ワークフローを読み出す
    ①「Upscale Latent」ノードを追加する
    ②「VAER Decode」の samples を外し、 最初の「KSampler」の LATENT を「Upscale Latent」sampling に接続
    ③「Upscale Latent」で、最終的に出力したい画像の幅(width)と高さ(height)を指定する
    ④「KSampler」ノードを追加する
    ⑤「Upscale Latent」の LATENT を 2つ目の「KSampler」の latent_image に接続する
    ⑥ 2つ目の「KSampler」の LATENT を「Upscale Latent」の samples に接続
    ⑦ 2つ目の「KSampler」の denoise パラメータを 0.5~0.8 程度の値に設定する
      これにより、元の画像の構図を保ちつつ、高解像度化に伴うディテールを維持できる

  2. 『Hires. Fix』ワークフローの完成
    ①「Run」を押して画像を生成する
    ComfyUI9_2025-10-30_00010_m.jpg
     ※ ワークフロー:filebs_text2img_hires.json

「Stable Diffusion」生成演習1『LoRA』

  1. ワークフロー filebs_text2img.json を読み出す
    ・「Negative Prompt」を変更する
    ・キャンバス上でダブルクリックして「Load LoRA」というノードを選択する
    ・LoRA のモデルは、「lora_name」をクリックして指定する
    LoRA の強度は、「strength_model」と「strength_clip」で設定(同じ値にする)
    ・「CLIP Text Encode」ノードの黄色の●をドラッグして「Load LoRA」ノードの clip 入力に接続
     (2か所とも同様にする)
    ・「Load LoRA」ノードから2つの「CLIP Text Encode」ノードの clip 入力に接続する
    ・「KSampler」ノードの model 入力の接続を「Load LoRA」ノードの入力に接続しなおす
    ・「Load LoRA」ノードの MODEL 出力を「KSampler」ノードの model 入力に接続する

  2. 「Run」を押して生成を開始する

  3. 生成画像1
    5213245484389192623281671
    flat2:1.0lora:siitake-eye:1.0eye-nolight_03:0.0flat2:1.0lora:siitake-eye:1.0eye-nolight_03:0.0
    ComfyUI4_2025-10-26_00004_m.jpg ComfyUI4_2025-10-26_00005_m.jpg ComfyUI4_2025-10-26_00008_m.jpg ComfyUI5_2025-10-26_00003_m.jpg ComfyUI5_2025-10-26_00006_m.jpg ComfyUI5_2025-10-26_00007_m.jpg
     ※ ワークフロー:filebs_text2img_lola.json

「Stable Diffusion」生成演習2『Negative Prompt』『embedding』

  1. ワークフロー filebs_text2img.json を読み出す
    ・「Prompt」「Negative Prompt」を変更する

  2. ComfyUI特有のプロンプトの書き方
    ConfyUIのプロンプトの書き方はA1111 SD WebUIとほとんどおなじだがいくつか相違点がある

    ・ウェイト
     ウェイトはA1111 SD WebUIと同様の記述方法で使えるが数値の効き具合が違うので注意が必要
     ウエイトの記述方法は (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つの中からランダムに1つを使ってくれ、笑顔・怒り・悲しみの表情の女の子がランダムで生成される

  3. 生成画像2
    3955280644
    beautifulRealistic_brav5beautifulRealistic_v7OpenBra
    P1
    なしN1なしN1なしN1
    ComfyUI6_2025-10-27_00004_m.jpg ComfyUI6_2025-10-27_00005_m.jpg ComfyUI6_2025-10-27_00006_m.jpg ComfyUI6_2025-10-27_00007_m.jpg ComfyUI6_2025-10-27_00008_m.jpg ComfyUI6_2025-10-27_00009_m.jpg
    P2
    なしN1なしN1なしN1
    ComfyUI7_2025-10-27_00010_m.jpg ComfyUI7_2025-10-27_00011_m.jpg ComfyUI7_2025-10-27_00012_m.jpg ComfyUI7_2025-10-27_00013_m.jpg ComfyUI7_2025-10-27_00014_m.jpg ComfyUI7_2025-10-27_00015_m.jpg
     ※ ワークフロー:filetest_text2img_nprompt.json

「Stable Diffusion」生成演習3『Prompt』

  1. ワークフロー filebs_text2img.json を読み出す
    ・「Prompt」「Negative Prompt」を変更する

  2. 生成画像3
    P1
    913559669083337832887919842012261402233137575356309103399082105940239934935299874597180971
    ComfyUI8_2025-10-27_00067_m.jpg ComfyUI8_2025-10-27_00068_m.jpg ComfyUI8_2025-10-27_00069_m.jpg ComfyUI8_2025-10-27_00071_m.jpg ComfyUI8_2025-10-27_00073_m.jpg ComfyUI8_2025-10-27_00075_m.jpg
    P2
    333901649834521280670394181617615478897186822143792520793111080424332037322604815860609048
    ComfyUI8_2025-10-27_00076_m.jpg ComfyUI8_2025-10-27_00078_m.jpg ComfyUI8_2025-10-27_00084_m.jpg ComfyUI8_2025-10-27_00090_m.jpg ComfyUI8_2025-10-27_00094_m.jpg ComfyUI8_2025-10-27_00095_m.jpg
    P3
    410816805561864680805372857779463598639959289767258135852801108251993051534427785283160074
    ComfyUI9_2025-10-27_00054_m.jpg ComfyUI9_2025-10-27_00055_m.jpg ComfyUI9_2025-10-27_00058_m.jpg ComfyUI9_2025-10-27_00059_m.jpg ComfyUI9_2025-10-27_00060_m.jpg ComfyUI9_2025-10-27_00061_m.jpg
    P4
    9987742462455721033988615213225580225426555743309616154968213314964941560066609007044556325
    ComfyUI9_2025-10-27_00097_m.jpg ComfyUI9_2025-10-27_00098_m.jpg ComfyUI9_2025-10-27_00099_m.jpg ComfyUI9_2025-10-27_00101_m.jpg ComfyUI9_2025-10-27_00102_m.jpg ComfyUI9_2025-10-27_00104_m.jpg
     ※ ワークフロー:filetest_text2img_nprompt2.json

「ComfyUI Manager」を使ったカスタムノードの導入

 インストール  「ComfyUI」にカスタムノード「ComfyUI Custom Scripts」 を導入

  1. 「Manager」ボタンを押し「ComfyUI Manager」から「Custom Nodes Manager」を選択
  2. 希望するノードが表示されていない場合は「Custom Scripts」を検索。インストールするノードの「Install」を押す
    Title: ComfyUI-Custom-Scripts
  3. バージョン番号を選択(基本「latest」を選択)

  4. インストールが完了すると、ComfyUI の再起動を求められるので、下部の「Restart」ボタンを押す
  5. 「Confirm」(確認)ボタンを押すとインストール開始する
  6. インストール完了すると再度確認ウインドウが開く(別のウインドウがオープンするので閉じる)
  7. 「ComfyUI Manager」でインストール完了となっていることを確認してブラウザと「Stability Matrix」を終了する

 ※「StabilityMatrix」環境の場合、リスタート後の挙動に注意(2025/11/01 現在)
 ※ 次節「Git clone」によるインストール ①~⑦ でも導入可能

 動作確認 
 ・「ComfyUI Custom Scripts」の機能の一つである接続線を直線にしてみる

 ① 画面の左上隅をクリックして ②「Setting」を選択する
 ③「Settings」ダイアログで「pysssss」を選択
 ④「Link Render Mode」の項目を「Straight」に設定する
 ※ この設定は保存できない(理由は不明)

「Git clone」を使ったカスタムノードの導入

 インストール  「Stability Matrix」上の「ComfyUI」にカスタムノード「ComfyUI_Local_Media_Manager」 を導入

  1. 「Anaconda PowerShell」を起動し一時的に PATH を変更(例:D:\StabilityMatrix に設置の場合)
    python -V Python のバージョン確認
    $env:Path = "D:\StabilityMatrix\Data\Assets\Python310;" + $env:Path 一時的なPATHの変更
    python -V パッケージ実行時のPython のバージョン確認
    (base) PS D:\anaconda_win> python -V
    Python 3.11.8
    (base) PS D:\anaconda_win> $env:Path = "D:\StabilityMatrix\Data\Assets\Python310;" + $env:Path
    (base) PS D:\anaconda_win> python -V
    Python 3.10.11
  2. パッケージ・ディレクトリに移動してパッケージ内の仮想環境を起動する
    cd "D:/StabilityMatrix/Data/Packages/ComfyUI" パッケージのディレクトリに移動
    ./venv/Scripts/activate 仮想環境を起動
    (base) PS D:\anaconda_win> cd "D:/StabilityMatrix/Data/Packages/ComfyUI"
    (base) PS D:\StabilityMatrix\Data\Packages\ComfyUI> ./venv/Scripts/activate
    (base) (venv)
  3. 「custom_nodes」フォルダへ階層変更し、git clone を実行
    cd custom_nodes custom_nodes フォルダへ移動
    git clone https://github.com/Firetheft/ComfyUI_Local_Media_Manager git clone を実行
    (base) (venv) PS D:\StabilityMatrix\Data\Packages\ComfyUI> cd .\custom_nodes\
    (base) (venv) PS D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes> git clone https://github.com/Firetheft/ComfyUI_Local_Media_Manager
        :
  4. 「ComfyUI_Local_Media_Manager」階層に移動して必要なパッケージ類を導入する(パッケージの導入が必要なノードの場合)
    cd ComfyUI_Local_Media_Manager ComfyUI_Local_Media_Manager フォルダへ移動
    pip install -r requirements.txt 必要なパッケージ類を導入
    (base) (venv) PS D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes> cd ComfyUI_Local_Media_Manager
    (base) (venv) PS D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI_Local_Media_Manager> pip install -r requirements.txt
        :
  5. カスタムノードの導入は完了。「Anaconda PowerShell」を終了する
    ▼ インストール・ログ

 動作確認 

  1. 「Stability Matrix」から「ComfyUI」を起動する
  2. キャンバス上でダブルクリックして「 Local Media Manager 」というノードを検索する
  3. 「Local Media Manager」選択し表示されたノードの Path: に「output」(出力画像フォルダ)と入力する
  4. 生成画像の一覧が表示される

「ComfyUI」『image-to-image』

「ComfyUI」で img2img を実行してみる

「img2img」の基本ワークフロー

  1. filebs_text2img.json『text-to-image』基本ワークフローを読み出す

    ①「test_text2img.json」ワークフローをキャンバス上にドラッグ&ドロップする
    ②「Empty Latent Image」ノードを削除する

  2. 画像を読み込む
    ①「Load Image」ノードを追加する
    ② 画像のサイズを変更できるように「Upscale Image」ノードを追加する
    ③「VAE Encode」ノードを追加する
    ④「Load Image」の IMAGE と「Upscale Image」の image を接続する
    ⑤「Upscale Image」の IMAGE と「VAE Encode」の pixels を接続する
    ⑥「VAE Encode」の LATANT を「KSampler」の latent_image に接続する
    ⑦「Save As」メニューからワークフローを「test_text2img」という名前で保存する

    ※「KSampler」の denoise 値が、変更の度合いを決定する
      1.0に近づくほど元の画像は無視され、プロンプトの影響が強くなる
      0に近づくほど元の画像が維持される(一般的には 0.6~0.9 の範囲で調整)

  3. 画像の読み込みを追加して『image-to-image』ワークフローの完成
    ①「Run」を押して画像を生成する
    ComfyUI9_2025-10-30_00005_m.jpg
     ※ ワークフロー:filebs_img2img.json

「img2img」インペインティングによる画像の部分修正

  1. filebs_text2img.json『text-to-image』基本ワークフローを読み出す
    ①「Load Image」ノードに入力画像をドラッグ&ドロップする

  2. マスクを作成する
    ①「Load Image」ノード上でミグクリック「Open in MaskEditor」を選択
    ② 画像の修正部分を黒で塗りつぶす
    ③「Save」を押してマスク画像を作成する
    ④「VAE Encode (for inpainting)」ノードを追加する
    ⑤「Load Image」の IMAGE と MASK を「VAE Encode (for inpainting)」の pixels と に接続
    ⑥「Load Checkpoint」の VAE を「VAE Encode (for inpainting)」の vae に接続
    ⑥「Empty Latent Image」ノードを削除する
    ⑦「VAE Encode (for inpainting)」の LATENT を「KSampler」の latent_image に接続する

  3. 『i2i_inpaint』基本ワークフローの完成
    ①「Run」を押して画像を生成する
    ComfyUI9_2025-11-02_00010_m
     ※ ワークフロー:filei2i_inpaint.json

  4. マスク周辺の違和感を「denoise」パラメータで調整する
    denoise1.00.80.70.60.5
    生成画像 ComfyUI9_2025-11-02_00008_m.jpg ComfyUI9_2025-11-02_00009_m.jpg ComfyUI9_2025-11-02_00010_m.jpg ComfyUI9_2025-11-02_00011_m.jpg ComfyUI9_2025-11-02_00012_m.jpg

「img2img」画像のスタイル変換

  1. filebs_text2img.json『text-to-image』基本ワークフローを読み出す
    ①「test_img2img.json」ワークフローをキャンバス上にドラッグ&ドロップする
    ②「Load Checkpoint」のモデルをイラスト系「disneyPixarCartoon_v10」に変更する
    ③「VAE」が必要なので「Load VAE」ノードを追加する
    ④「Load VAE」の VAE を「VAE Decode」の vae に接続する
    ⑤「Load VAE」で「YOZORA」VAE を選択する

  2. 『i2i_Stylechange』ワークフローの完成
    ①「Run」を押して画像を生成する
    ComfyUI9_2025-11-02_00021_m.jpg
     ※ ワークフロー:filei2i_stylechange.json
 

「ComfyUI」Tips 操作のヒント

「ComfyUI」を操作する上でのヒントをまとめる

ワークフローの保存・管理

生成画像の保存場所

生成途中画像の表示

ComfyUI Workspace Manager - Comfyspace

 

更新履歴

 

参考資料