🦊領域指定
👈 |
👉 |
領域指定
プロンプトで指示
ほとんど従わないといいましたが、最近のモデル(Flux以降)ではある程度従います
それでも複雑な位置関係になると難しいです
https://gyazo.com/70bc945855f5eb1162bba1cbd2babb60
"左にバナナ、右にリンゴ"
生成した画像に対してinpaintingを繰り返す
ゴリ押しのように見えますが馬鹿にできません
プロンプトが混ざることもLoRAが混ざることも絶対にありません
https://gyazo.com/2c5b6e3fd8491c24da35f6c5d8d825c9
Conditioning Set Area (Regional Prompting)
Stable Diffusionでは、画像の各位置にテキスト(に限らないが)条件を適用するために Cross-Attention 層が使われており、その 中のquery は画像内の位置情報を扱っています
Conditioning Set Areaでは、直接位置を指定したりマスクを活用したりすることで、画像の位置ごとにどのテキスト条件を適用するかを切り替え、領域ごとに異なるプロンプトを使った画像生成が可能になります https://gyazo.com/bca9aa6c5425ee4f7e4294d081d04e18
LoRAはモデルの重み自体が変わるのでこの方法では領域指定出来ません
基本的な考え方は、画像を複数生成→それらを合体して一枚の画像にしてimage2imageすることで溶け込ませるという手法です
これをもう少し応用し、途中までサンプリングした半ノイズ画像を潜在空間で合体、一つのlatentにして残りをサンプリングします
https://gyazo.com/87c4aa926f36889c2987cf5fc827c4e9
🟦ベースに🟥バナナのlatentをマスク部分に被せる
🟦🟥それに対して🟩リンゴのlatentをマスク部分に被せる
最後に残りの10stepを推論する
潜在空間を領域ごとに完全に分割して、それぞれの設定(プロンプト・LoRA etc.)で生成して最後に結合します
基本的に領域の数だけ画像を生成しているのと同じなので計算量が多いです
ComfyUIには実装されていない?
Lantent CoupleではUNet丸々計算していましたが、こちらはCross-Attention層のみ計算します
その分計算量は大分少なくなりますが、LoRAの領域別指定はできません
はずだけど、Kohya先生の実装でなにやらLoRAの領域別適用をしている。よくわからないnomadoor.icon
🪢カスタムノード
https://gyazo.com/efd7424ffea10f0eed2ef0f4b744636d
🟦ベースとなるプロンプト
ComfyUI独自の機能ですが、上の二つに比べるととてもシンプルでモデルの重み/LoRA、プロンプトを領域別&ステップ別に動的に注入します
GLIGENからのControlNet