Comfy UIは、ノードベースでワークフローを作れる画像生成用インタフェースです。
UnityやTiktok EffectHouseなどを使っていると、割合イメージしやすいかと思います。いろんなパーツをつなぐことで、画像生成の流れを制御していくようになっています。
ComfyUIとは?メリットは?
オープンソースのStableDiffusionをローカルPCで、なおかつワークフローと呼ばれるノードベースで設定できるインタフェースのようです。
メリットとしては、起動が早いなど最適化がうまくされているようです。
例えばモデルファイルを入れた後のRefreshをしなくてもよかったりします。
インタフェースは好みがわかれるところですが、現在のStableDiffusionWebUIは機能を追加すればするほどどれがどこかわかりにくくなります。
それに対しComfyUIなら必要な機能のノードを追加するだけです。つまり必要なものだけが表示されることになります。
たぶんですが、多機能になればなるほどComfyのようなUIのほうが使いやすくなります。
使うならどっち?
ComfyUIとStableDiffusionWebUIで、自分が使いやすいほうを使う、でOK。
StableDiffusionWebUIは、いろんなサイトに解説ページが多いのはメリット。対応機能拡張も多いです。
一方、ComfyUIは動作の最適化や(慣れた後の)操作性がいいかなと思います。
気になるのは開発ペースでどちらが主流になってどちらが廃れるかはちょっとわかりません。
個人的にはComfyUI形式のほうがメインになっていくほうに期待したいです。というのも機能拡張などが増えるにつれ、このように自分で流れをパーツでデザインするスタイルにならざるを得ないかなと思いますので。
ComfyUI
インストール
「7-Zip」7z形式などに対応した解凍・圧縮ソフト - 窓の杜
解凍後の「ComfyUI_windows_portable」を任意位置へ移動。モデルを「ComfyUI/models/checkpoints」へ入れておきます。
起動
「run_nvidia_gpu.bat」で起動します。
1つ1つのパーツは「ノード」で、その一連のつながりが「ワークフロー」となります。
「Load Default」でデフォルトのワークフローを表示します。
「Clear」でワークフロー全体を一度クリアします。
「Load」でワークフロー(JSONフォーマット)をロードします。
マウスの左ドラッグで移動、マウスホイールで拡大や縮小ができます。
利用の流れ
まずはシンプルなワークフローで、生成の流れだけ大雑把にでも把握しておきましょう。
Load Checkpoint
まずLoad Checkpointノードからは画像生成に使用するモデルを指定します。
上記にあるcheckpointフォルダに格納したモデルが表示されるので、あらかじめ使いたいモデルに切り替えます。
Clip
Clipにはプロンプトを書き入れます。
2種類あるのはポジティブとネガティブの2種類のプロンプトを生成するためです。
KSamplerとは?Vaeとは?
KSamplerは、実際に画像を生成するノードになります。生成するシード値やステップ数の設定はここで行います。
Vaeは変分自己符号化器(Variational Auto-Encoder)で、KSamplerによって生成した画像をよりシャープでしっかりした画像に変換します。
以上を経て「Save Image」つまり画像として保存するノードに最終的に接続されています。
画像生成
右のパネルのキューを押すと画像を生成します。
できあがると「Save Image」のモジュールのところに画像ができています。
ノードを追加するには画面上で右クリック。
このワークフロー(ノードの流れ)を保存するには「セーブ」から名前を付けて実行します。
SDXLの作成
SDXL版の作成は、まずSDXLモデルを入手します。
例:以下より「animagine-xl.safetensors」を入手。「ComfyUI/models/checkpoints」へ入れます。
Linaqruf/animagine-xl at main (huggingface.co)
同ページには「animagine_xl_workflow.json」があるので、ワークフローをロードします。
ワークフローを見ると、ClipTextEncoderSDXLというノードを経由してから作画されているのがわかります。
作画を実行し、きれいなイメージが出来上がればOK.
またこちらのサイトからもワークフローが入手できます。以下サイトへ行き、ボトルの画像をダウンロードしてドロップ。
SDXL Examples | ComfyUI_examples (comfyanonymous.github.io)
利用モデル:「sd_xl_base_1.0.safetensors」
sd_xl_base_1.0.safetensors · stabilityai/stable-diffusion-xl-base-1.0 at main (huggingface.co)
利用モデル:「stable-diffusion-xl-refiner-1.0 」
sd_xl_refiner_1.0.safetensors · stabilityai/stable-diffusion-xl-refiner-1.0 at main (huggingface.co)
実行結果:
ComfyUIのアップデート
Comfyをインストールすると、「Update」というフォルダが作られています。
ここに「update_comfyui_and_pythorn_dependencies.bat」があるので実行。
キーを押して作業を進め、終わったらComfyを起動、または再起動します。
ComfyUIのカスタムノード(機能拡張)
管理マネージャーのインストール
ComfyUIでは、「カスタムノード」としていろんな機能拡張を利用できます。カスタムノードのインストールの管理をするため、「ComfyUI-Manager」をあらかじめ入れておきましょう。
GitHub - ltdrdata/ComfyUI-Manager
ComfyUIだけをインストールした場合は以下のメニューです。
インストールするには、ターミナルでComfyUIのフォルダ内の「custom_nodes」に
移動。以下コマンドでダウンロードします(まずgitを入れておく必要はあります)
このあと、再度ComfyUIを起動し、以下のように「Manager」という項目が追加されていればOK。
「Manager」を起動すると以下の画面となり「Install Custome Nodes」ボタンからインストールしたいカスタムノードを選びます。
InstallModelsでモデルも入手できますが、どのぐらいダウンロードが進んでいいるかはわかりません。「Instalation was successful」が表示されるまで待った方がいいです。
便利なカスタムノード
主な機能拡張は以下のようなものがあります。
img2img
【Comfy UI】Img2Imgの仕方は? - AI教科書
アップスケール(高品質で拡大)
【Comfy UI】アップスケールの仕方は? - AI教科書
LoRAの利用
【Comfy UI】Loraの使い方は?複数使うには? - AI教科書
動画生成
【Comfy UI】Animatie Diff、導入方法・メリット・使い方 エラーの場合は? - AI教科書
コントロールネット
【Comfy UI】コントロールネットを使うには? - AI教科書
ADetailer
【Comfy UI】ADetailerの代わり「Facedetailer」を使うには? - AI教科書
Comfy UIの不具合
起動しない?
まずFor NVIDIA or CPU onlyとあるように、Nvidia用のバッチとCPU用のバッチがあります。
Nvidiaユーザは「run_nvidia_gpu.bat」から、それ以外は「run_cpu.bat」のほうで起動してみましょう。
うちでは7Zの解凍がうまくいかずにだめなようでした。
解凍ソフトを別のものにしたら、起動するようになりました。
ワークフローが開かない?
ダウンロードしたJSONをドロップしてもワークフローが表示されない場合、ファイルを確認してみましょう。
JSONファイルであれば通用は以下のようなフォーマットでデータが書かれています。一般的なテキストエディタからひらくことができます。
ノードがUndefined
ノードが見つからないと「Undefined」として赤く表示されます。
たいていは、利用している機能拡張のノードがないことに起因します。
機能拡張を確認し、追加忘れがないかチェックしてみましょう。
Managerを入れていれば「Install Missing Custom Nodes(みつからないカスタムノードをインストール)」を試してみましょう。
起動引数一覧
以下の引数が利用できます。
main.py
[-h]
[--listen [IP]]
[--port PORT]
[--enable-cors-header [ORIGIN]]
[--max-upload-size MAX_UPLOAD_SIZE]
[--extra-model-paths-config PATH [PATH ...]]
[--output-directory OUTPUT_DIRECTORY]
[--temp-directory TEMP_DIRECTORY]
[--input-directory INPUT_DIRECTORY]
[--auto-launch]
[--disable-auto-launch]
[--cuda-device DEVICE_ID]
[--cuda-malloc | --disable-cuda-malloc]
[--dont-upcast-attention]
[--force-fp32 | --force-fp16]
[--bf16-unet | --fp16-unet | --fp8_e4m3fn-unet |--fp8_e5m2-unet]
[--fp16-vae | --fp32-vae | --bf16-vae]
[--cpu-vae]
[--fp8_e4m3fn-text-enc |--fp8_e5m2-text-enc |--fp16-text-enc | --fp32-text-enc]
[--directml [DIRECTML_DEVICE]]
[--disable-ipex-optimize]
[--preview-method [none, auto, latent2rgb, taesd]]
[--use-split-cross-attention | --use-quad-cross-attention | --use-pytorch-cross-attention] [--disable-xformers]
[--gpu-only | --highvram | --normalvram |--Lowvram | --novram | --cpu]
[--disable-smart-memory]
[--deterministic]
[--dont-print-server]
[--quick-test-for-ci]
[--windows-standalone-build]
[--disable-metadata]
[--multi-user]
[--verbose]