一般的に「txt2img」に必要な機能を紹介します。細かい設定は無視して最速で使いこなす方法を書いていきます。
今回すること
基本操作を解説しながら「txt2img」に必要なノードを紹介していきます。
「text to image」の略語でテキストから画像を作る工程を指します。
一般的にtxt2imgには次のような機能が必要だと思います。
- VAE
- LoRA
- プロンプト
- Batch処理
- 人気サンプラー「DPM++ 2M Karras」
- Clip Skip
さっそく上から順に追加していきましょう。
txt2imgの解説
今回はデフォルトのワークフローを使って解説していきます。
デフォルトのワークフローを呼び出したい場合は右のパネルの「Load Default」から呼び戻せます。
VAE
まずはVAEを選択するためのノードを追加します。
何もない箇所で「右クリック」を押すとコンテキストメニューが表示されます。
「Add Node」の次に「loaders」、その中にある「Load VAE」ノードを追加しましょう。
これでVAEが選択できるようになりました。
VAEを変えることで彩度、明度といった色や形状そのものが変わります。
これを「VAE Decode」に繋ぎましょう。
LoRA
次にLoRAを追加する方法を解説します。
LoRAとは追加学習によって作成された画風やキャラクターに影響を与える小さなモデルです。もしLoRAをお持ちでないなら、今はスキップしてもらって構いません。
先ほどの手順を使ってもいいですが、もっと便利な方法があります。
何もない箇所で「ダブルクリック」をしてみましょう。検索窓が表示されます。
ここに「lora」と打ち込んで「LoraLoader」を選択しましょう。
「Load LoRA」を呼び出せました。この方法は覚えておくと後々便利です。
これを「Load Checkpoint」の次に繋ぎます。
複数のLoRAを使いたい場合は「Load LoRA」を増やすだけです。「Altキー」を押しながらノードをクリックすることで複製できます。「Ctrl+C」でコピーして「Ctrl+V」で貼り付けることもできます。
Load LoRAには項目が二つありますが、特に考えずに「strength_model」と「strength_clip」は基本的に「同じ値」にしましょう。
「strength_model」の数値が大きくなれば LoRAの効果が大きくなります。
strength_clipについては現時点では全く気にしなくて大丈夫です。未だに筆者も良く分かっていません。
strength_clipについてredditの質問まとめ
モデル強度(model strength)を上げると、生成される画像が学習画像により近くなります。 クリップ強度(clip strength)を上げると、プロンプトによって学習データ内の特徴やトリガーワードがより活性化されます。
通常、モデル強度とクリップ強度は相関が高いのですが、学習データのスタイルは取り入れつつ、特定のキーワードは避けたい場合など、両者を別々に調整したい状況もあります。
LoRAの設定において:
- clip strengthは、テキストの指示(プロンプト)にどの程度従うかを決めます
- model strengthは、LoRAを適用するベースモデルにどの程度影響を与えるかを決めます
ただし、これらのパラメータを0.01変更するだけでも、生成される画像に大きな影響を与えることがあります。
・・・?
プロンプト(呪文)について
プロンプトを記述するノードは「CLIP Text Encode (Prompt)」と書いているノードです。
同じ名前のノードが2つあるかと思います。どちらも全く同じノードです。
KSamplerと呼ばれる、画像を生成するノードにそれぞれが繋がっています。接続先が違うだけでノードの意味が変わってきます。
これでLoRAとVAEを使えるようになりました。
この状態のテストをするには、右のパネルから「Queue Prompt」を押すことで生成ができます
ComfyUI Manager と呼ばれる拡張機能(カスタムノード)を入れることにより「KSampler」の下に生成の経過が表示されます。
生成の経過を見ることで発見できることも “たまに” あります。後ほど ComfyUI Manager を導入してみてください。
ComfyUI Managerについての記事
画像の保存先
保存された画像は「ComfyUI」フォルダ内の「output」にあります。
ComfyUIフォルダ内に、
outputがあります。
画像の保存先を変更する方法についてはこちらをご覧ください。
Batch処理
Batch処理とは同時に複数の枚数を生成することです。効率的にGPUを使うことができます。
Empty Latent Image ノードを探してください。こちらのノードで生成される解像度を設定できます。
またBatch処理も設定もこちらで行うことができます。「Batch size」が Batch処理の枚数になります。
豆知識: Latent ってなんやねん
Latentは潜在画像といいます。
簡単にいうと、人間には理解しにくい圧縮された「小さな画像データ」です。
VAE Decodeではこれを人間が理解できる形(.png)へ変換してくれます。
サンプリング方法を変えてみる
「KSampler」を見てみましょう。KSampler とは画像を生成するノードです。
「sampler_name」と「scheduler」が重要な部分です。
ここは完全に好みなので指定はありませんが、今回は有名な「DPM++ 2M Karras」の指定方法を紹介します。
「sampler_name」はdpmpp_2mを選びます。dpmppはDPM++のことです。「scheduler」はkarrasですね。
sampler?scheduler?何?
サンプラー(sampler_name)は「どのように」サンプリングを行うかを決定します。
スケジューラー(scheduler)は「いつ」「どのようなペースで」サンプリングの各ステップを行うかを制御します。
CFGとStepsについては深くは触れませんが、CFGはプロンプトの強さを決めて、Stepsは総ステップ数になります。Stepsは20~40の値が主流です。Denoiseはノイズの量です。
Clip Skip
「Clip Skip」はプロンプトを無視した抽象的な画像を生成することができます。
SDXLのモデルでは逆にプロンプトの忠実性を上げるみたいです。SDXLでは -2 が推奨されています。
つまり厳密にプロンプトを考えずに、モデルのパワーでなんかいい感じにしてくれ!とおまかせ機能を使うような感じです。
先ほどと同じように何もない箇所を「ダブルクリック」して「set」と検索し、「CLIPSetLastLayer」を追加します。
ではこのノードを「モデル」の次、もしくは「LoRA」の次に繋ぎます。
どこに入れても変わらないので、筆者はいつもプロンプトの前にこのノードをはさんでます。
デフォルトでは「-1」に設定されていますが、このままでは何も変わりません。
「CLIP Set Last Layer」は最大で「-12」まで設定が有効です。マイナスが大きくなるにつれてプロンプトの抽象化が進みます。
実際にプロンプトを無視するような挙動なので、色々試してみると面白いかもしれません。
Tips: ノードは小さくできます。
まとめ
これで一般的な「txt2img」のワークフローが作れたはずです。
細かい設定や、難しいノードは使わずに、最速で使いこなす方法を書きました。
分からないことがあればお気軽にコメントしてみてください。
なんでも掲示板