2023-12-22

【ComfyUI基礎シリーズ#1】初めてのComfyUI!画像を1枚生成するまで!

ComfyUIを初めて触る人のための解説第一回。まずは画像を1枚生成するのに必要なノードを1個ずつ解説

Article Image

ComfyUIを初めて触る人向け

この記事はComfyUIを初めて触る人向けの記事の第一回。

ただ1枚画像を生成するまでのノードを1個ずつ解説するシンプルな記事だ。

またComfyUIの基本操作についても書いていく。

読者の前提条件

「ComfyUIが初めて触る画像生成AIです」という人はautomatic1111氏のwebuiでAI画像生成に少し慣れてからこちらにシフトしてくることをおすすめする。

覚えることが多すぎてついていけなくなると予想されるため。

よって、この記事では次の知識は有るものとする。

  • チェックポイントやLoRAのような基本用語を理解している
  • Stable Diffusion(webui)で画像生成を行ったことがあり、基本の設定は理解できる
  • ComfyUIのインストールは完了している(ここで解説せずとも別サイトが大量にあるため)
    • チェックポイント(safetensors)等のデータも入れておくこと

最初の準備

この記事ではノードをはじめから組むので、ComfyUIを起動したら一度画面上のノードは全削除する。

右下のパネルからClearボタンで削除。

右下のパネル

今現在のノード類を保存しておきたい場合はSaveしておこう。

1.チェックポイントを読み込む

まずはチェックポイントを読み込まねばAI生成ははじまらない。

右クリック > Add Node > loders > Load Checkpoint

Load Checkpoint

あとは画像の矢印のところから使いたいチェックポイントを選ぶ

Load Checkpointノード

ここでは右のピンは特に気にせずで良い。

Tips:もっとノードを簡単に出したい!

ここでいきなりTipsだがComfyUIのノードは非常にたくさんあるためこの方法で出していると面倒だ。

なにもないところをダブルクリックするとノード検索画面が出るのでそこから出すのをおすすめする。

ノード検索

ノード名と検索名が違う場合が多い

上の例ではLoad Checkpointと検索名CheckpointLoaderで違う表記になっているが、同じものだ。

この方法のデメリットとしてComfyUIはまだ発展段階なので検索ノード名が表示ノード名と違うことが多々ある。

残念ながら一個ずつ覚えていくしかないが、出したノードを右クリック > Propatiesから確認できる。

検索名確認

プロンプト入力欄を作る

AI画像生成といえばプロンプトだ。この入力欄を作成する。

  • conditioning > CLIP Text Encode (Prompt)
  • 検索名:CLIPTextEncode

こちらを2つ出してLoad CheckpointCLIPと接続する

CLIP2つ

positiveとnegative

2つ作ったのはPositiveNegativeに分けるためだ。

あとから接続先を分けるので今は上下どちらでも良い

画像生成用のノードに接続

実際に画像を生成するコアのノードを作成する。

  • sampling > KSampler
  • 検索名:KSampler

ここにpositivenegativeのピンがあるのでこちらへそれぞれ接続する。

またmodelが繋がっていないと画像は生成できないのでLoad CheckpointMODELと繋げる。

ポジネガとモデル接続

ここではなぜわざわざCLIPというピンから出したものにテキストを加え(Encode)てKSamplerに繋いでいるのだろうか。

私も詳しく理解していないが、人間の言語をAI用の言語に変換しているとでも覚えておく程度で良いのではないだろうか(厳密には全然違うが)

CLIPって何?と思ったら次のサイトがわかりやすい

OpenAIが開発した画像認識AI「CLIP」の思考の特徴とは? - GIGAZINE

キャンバス的なものを用意する

webuiに慣れているともうすでにこれで画像が作れそうな気がする。

しかしながらAIはAI専用のキャンバス的なものを作ってやらないと絵を書いてくれない。

それがKSamplerについているlatent_imageだ。

latentイメージのイメージ

ここに入れるキャンバス的なものは次のノード

  • latent > Empty Latent Image
  • 検索名:EmptyLatentImage

latentimageをつなぐ

Emptyという名前がついているので何も書かれていない真っ白な紙だと考えれば良い。

この時、このノードに画像サイズを入力できる。

Latent imageノード

ドヤ顔でかいているが、このlatent imageの解釈が正しいかどうかはよくわかっていない。

画像を人間が見える形に変換する

最後にもう少しノードが必要になる。

KSamplerのアウトプットピンはLATENTになっている。

つまりこれはAIが認識するための画像であり、人間にはこのままでは意味の分からないデータ。

そこでこれを人間が分かるように復元(デコード)してやる必要がある。

  • latent > VAE Decode
  • 検索:VAEDecode

ただ、このノードもただ通すだけで良いわけではない。

音楽のmp3,wma,aiffそれぞれのデコーダがあるようにAI画像のデコードもこの情報が必要である。

ひとまずこれはLoad Checkpointからでているのでそれをつなげると

VAE Decode

ここでようやく人間が分かるIMAGEデータが取れるのだが、そもそもそれを画面に表示してやらねばならないので次のノードをつなぐ。

  • image > Preview Image
  • 検索:PreviewImage

Preview Imageノード

完成!

あとは右下のパネルからQueue Promptを押せば画像が出てくるはずだ。

Queue Prompt

ふざけたプロンプトしか入れてないのに次の画像が出力された。

でた画像

最後にノード全画面

ノード全体

あとはお好みで

ここまでできればあとはプロンプトで求める画像の方向性を考えるもよし画像サイズ変更やKSamplerの設定でさらなる変化を考えるもよし。

こうやって1個ずつ役割を覚えていけばComfyUIの自由度が格段に上がっていくはず。

長くなったが引き続きシリーズを読んでもらえたらと思う。

この先の記事について

ComfyUIで使用するノードはUnreal Engineのような大規模ソフトと比較するとまだ全然少ない(ゲーム開発用の全然違うソフトだが)

しかし、小難しいノードが多く挫折しそうになる。

この先の記事ではできるだけ小さい単位で絞って理解していけるような記事を書こうと思う。

おまけ

ふざけた画像

そりゃ日本語プロンプトじゃめでしょうね



この記事をシェア


謎の技術研究部 (謎技研)