【Stable Diffusion】「ComfyUI」って?を入れて確認してみた【ComfyUI】
■記事の対象ユーザ
1.Stable Diffusion WebUIをローカルに構築して、イラスト生成している
2.最近「なんか枠が線で繋がってる画面」でStable Diffusionできるツールの記事やポストを見かける
3.WebUIと何が違うのか、何が嬉しいとかが分からない
■ようするに?
・LoRAとかEasyNegativeとかControlNetとか → 使える
・設定が保存・共有できる
・はやい
あぁ、まずはインストールだ・・・
(インストールは)全然難しくなかったから、WebUI構築できた皆は気楽にはじめようね。
まずはDL先(GitHub)に飛んでね
真ん中くらいにWindows用のDownloadリンクがあるよ。
ポチればすぐダウンロードがはじまるよ。1GB以上あるから気長にね。
ダウンロードできたら解凍してね。
でも「.7z」形式だから解凍できない時は7-Zipとってこようね
解凍出来たら中にある「run_nvidia_gpu.bat」を実行すると
見かけたことがある黒い画面がブラウザで立ち上がってくるよ
基本的な使い方
1.モデルの準備
早速使ってみよう、の前にWebUIと同じく
何か1つはモデルを用意しておく必要があるよ。
2.とりあえず動かしてみる
わー、なんか枠がいっぱいあるねー(白目
ここで狼狽えてはいけない。
どこかのドイツ軍人もそう言っている気がする。
左から順番にいこうじゃないのさ
■モデルを選ぶところ
■ポジティブ・ネガティブプロンプトを書くところ
■出力サイズとバッチサイズ
■サンプラー設定
seedとかstepとかcfgはそのまんまだから割愛するけど
その下にある「control_after_generate」は
1回生成した次のシード値の値をどうするか設定できるよ。
fixed(固定)、increment(加算)、decrement(減算)、randomize(ランダム)が選べるから、WebUIの「-1」相当にしたかったら「randomize」選ぼうね。
「scheduler」は私もあんまりわかって無いけど「karras」とか選べるから
WebUIで選べるサンプラーの「DPM2 Karras」とかの関係だと思うよ。
「denoize」は恐らくアップスケーラ使う時のノイズ除去強度の事だとおもうけどWebUIだと通常は選ぶところない気がするよ。
今回は動かしてみること優先だからデフォルトの1にしとこね。
■プロンプトとサンプラーの接続
2つあるプロンプトのどっちがポジティブでネガティブなのかの答えだけど
サンプラーの「positive」と繋がっている方がポジティブプロンプトで
「negative」と繋がっているのがネガティブプロンプトだよ
幾つかプロンプト作っておいて線を繋ぎ変えるだけで実験とかできそうよね
■VAE
「VAE Decode」は左側のインプットと右側のアウトプットを繋ぐだけなので枠自体に設定する項目はないよ。
もしモデルと別にVAEを選択する場合は右クリックで出てくるメニューから
「Load VAE」を選んで枠を作り、右側のVAE〇を「VAE Decode」の左側に繋げればOKだよ。
■出力先
■いざ生成
お疲れさまでした。ここまで出来たらデフォルトで右下の方ある
「Queue Prompt」を実行すると生成が開始されるよ。
生成された画像はoutputフォルダに出るほか、
「Save Image」の枠にも表示されるよ。
WebUIで出来ることを試してみる
1.LoRA
とりあえずLCM-LoRAとかキャラLoRAとか適用したいよね。
まず最初に使いたいLoRAを所定の位置に配置してね。
配置したらComfyUIに戻って
ん・・・、Load LoRA・・・?
Load LoRAを選ぶとこんなウィンドウが出てくるよ。
一番上に適用したいLoRA、下二つはLoRAの強度を設定するよ。
次に繋ぎ方だね。
デフォルトでは「Load Checkpoint」の出力(MODEL)が「KSampler」の入力(MODEL)に繋がっていたけど、これを追加した「Load LoRA」の入力に繋ぐよ。複数LoRAを適用する場合は下図の様に直列にMODELとCLIPをリレーするように繋いでね。
最後に出力をポジティブ・ネガティブ両方のプロンプトに繋げるよ。
そしてプロンプトを受けるサンプラー側だけど
これらの設定を入れてQueurPromptすると
2.embeddings(EasyNegativeとか)
WebUIと使い方がさほど変わらないみたいなのでサラッと流すね。
WebUIと違うのは頭に「embedding:」を付ける必要があるくらいかな。
EasyNegative適用で、こころなしか指がきれいに描画されている気がするね
3.Hires.Fix(高画質化)
StreamDiffusion Web-UIにも標準で搭載されているアップスケーラだよ。
「KSampler」の出力を「Upscale Latent」を通して、もう1回別の「KSampler」に繋げることで実現できるよ。
こんな感じにアップスケールできてるのが分かるね(512x512)→(1024x1024)
4.ControlNet
とりあえず一番分かりやすそうなOpenPoseを例に紹介するね。
■ControlNetモデルの配置
まずはWebUIと同様にControlNetのモデルをダウンロードしてこようね。
StableDiffusion WebUIを使っていてそちらにモデルがあるならコピーしてきてもOKだよ。
ダウンロードしたら以下に配置するよ。
■ノードの追加
ComfyUIに戻ってノードを配置していくよ。
今回は次の3つのノードを追加する必要があるよ。
1.Load ControlNet Model
[Add Node] -> [loaders] -> [Load ControlNet Model]
2.Load Image
[Add Node] -> [loaders] -> [Load Image]
3.Apply ControlNet
[Add Node] -> [conditioning] -> [Apply ControlNet]
■Nodeの接続
追加した3つのノードを繋げるよ。
繋ぎ方としては、「ControlNet Model」と「Load Image」の出力を
「Apply ControlNet」の入力に入れるだけだよ。
それぞれ対応している部分に接続してあげてね。
1つだけ余っている黄色(conditioning)はどう繋ぐのかというと、
入力:「CLIP Text Encode (Prompt)」の出力に繋ぐ
出力:「KSampler」の「positive」部分に繋ぐ
プロンプトとサンプラーの間に差し込む感じになるね。
■出力してみる
出力結果を入力画像と並べてみるよ
5.その他
実際に手を動かすほどでもない情報なので有志の記事だけ置いておくね。
■ Clip Skip
WebUIだと設定の方に書いてあるパラメータだよ。
ComfyUIだと専用ノードがあるからそれを使う必要があるみたい。
【参考URL】Clip Skipについて(なんで2とか4とかがいいのか)
【参考URL】ComfyUIでの使い方
■ プロンプトの仕様
WebUIも癖があったと思うけど、ComfyUIにも地味に癖があるから仕様は確認しようね。以下がすごい参考になったから一度目を通しておくと良いよ。
75トークン超えの方法とか、あとコメントアウトできるのは有益だったよ。
ComfyUIの何がうれしい?
まだ触り始めたばかりだからこれだ!っていう答えには至っていないけど
いくつか思いつくものとしては
1.設定を保存・共有できる
メニューに「Save」「Load」があるんだけど、ここで「Save」するとjson形式でこの設定を保存できるよ。
ローカルPCに保存しておいたjsonをComfyUIの画面に放り込むと同じノード設定を復元することができるよ。
そして驚きの機能だけど、出力したが画像ファイルでも同じことが出来るよ。出力画像をComfyUIにドラッグ&ドロップするだけでワークフローが復元できちゃう。すごい。
これによって、自分で作っておいたワークフローや他の人が配布しているワークフローを簡単に復元出来る様になるから、スクリーンショット見ながら設定コピペする手間とおさらばできるね。
有志のワークフローを探せるサイトもあるので
個人のNote探すのもいいけど参考にしてみてね。
ダウンロードしたpngファイルをComfyUIにドラッグ&ドロップすると
このエラーは赤くなっているノードが定義されてないよって意味。
ComfyUIは有志が作ったカスタムノードで拡張ができるものなので
最近はカスタムノードありきで組まれることが多いみたいだね。
カスタムノードは「ComfyUI Manager」という拡張を入れておくと
git clone しなくても導入できるようになるから、最初にこれだけは入れておくと良いよ。
2.ワークフローの組み合わせ
このワークフローという形式だと、様々な組み合わせを同時に実行できるから、プロンプト1つに対してLoRAやVAEやの組み合わせを変えて別々に出力させたりとか、サンプラーの設定を変えたものを複数用意して違いを検証したりとか、WebUIだと生成毎に変更していた部分が一度に組めたりするね。
3.負荷が低い
地味これが一番大事な可能性あるけど
起動が早く、使うVRAMもStableDiffusion WebUIより少ないので
低負荷かつ高速に動作するので、低スペックPCとか
アニメーションとかの速度を求める作業をする人に向いてる気がするね。
おわりに
有志が半年前くらいに記事にしているような内容だったけど、自分の整理もかねて記事にしたよ。本当はAnimateDiffとかStreamDiffusionとか色々な拡張にも対応しているらしいけど、記事が膨大な量になりそうだったから今回はこの辺で切り上げるよ。
この記事をベースにComfyUIについて色々調べようと思うから、記事上がってたらよろしくね。
この記事が気に入ったらサポートをしてみませんか?