見出し画像

Tiled Diffusion の設定(タイルサイズとか)ってどうすればいいの?(第一回)

みなさん!Tiled Diffusion 使ってますか?

今回はこれの設定値が何を意味しているか、そしてどう決めればいいのかを可能な限り簡単に解説します!
使ってない方はこの記事を読んでも特に学べることはありません!

この記事では Noise Inversion と Region Prompt Control 以外の設定について解説します!
ちなみに第二回を書く予定はありません

Tiled Diffusion って何?

☝の拡張の機能で、性能的に本来生成できない高解像度での生成を可能にします。

どういう仕組みかというと

  1. 元画像を小さい画像(=タイル)に分割!

  2. 分割した画像に対してそれぞれ生成!

  3. 生成したものを全部合体!

ってやってるだけです。簡単ですね

txt2img で 1024x1024 の画像を4分割(512x512を4個)で処理されるよう生成した場合の例

Tiled Diffusion の設定について!

設定項目、いっぱいありますね。
それぞれの設定値をシンプルにお答えします!

ここの設定値どうすればいいの!?

さいきょうの設定!

  • Overwrite image size (t2iのみ) / Keep input image size (i2iのみ)

    • オフ

  • Move ControlNet tensor to CPU (if applicable)

    • オフ!

  • Method

    • Mixture of Diffusers

  • Latent tile width / Latent tile height

    • 6496

  • Latent tile overlap

    • 1632

  • Latent tile batch size

    • PC性能による!高い方がちょっと早い!
      無理のない範囲の高めの数値で!(でも別に1でもいい)

  • Upscaler / Scale Factor (i2iのみ)

    • None

以上!解散!

細かい説明しろ!

はい…

Overwrite image size (txt2imgのみ)

幅/高さの設定を上書きして、より大きなサイズを選択できるようにします!

Keep input image size (img2imgのみ)

オンにすると幅/高さの設定を無視します!

オンだとここの設定値を無視する!

Tiled Diffusion を使った場合、生成までに以下の流れで処理が行われます!

  1. 入力画像を↑の設定に基づいてサイズ変更

  2. Tiled Diffusion の Upscaler を指定している場合、拡大!

  3. 拡大した画像を分割して、それぞれに対して img2img 開始!

2 の部分はこれの話!

Keep input image size をオンにすると 1. がスルーされるってことですね
Upscaler を None にしてimg2img の基本設定を使う方が分かりやすいはず!

Move ControlNet tensor to CPU (if applicable)

わからん!なんやこれ!

Method

よくわからんけど Mixture of Diffusers の方がいいらしい!
けどどっちでもヨシ!結果が微妙に変わります!

Latent tile width / Latent tile height

元画像を分割するサイズ(幅/高さ)です!
ここで設定した数値を8倍した値が分割された一枚の画像サイズになります!
例1: 64x64 → 512x512
例2: 96x96 → 768x768

いまいちピンとこないと思うので例!
全部 1536x1536 で生成!Latent tile overlap 0 にして生成したものです
(グリッド表示じゃなくて一枚の生成画像です)

96x96 / 768x768ごとに4分割されてますね!
64x64 / 512x512 のサイズで9分割!
16x16 / 地獄の144分割!

タイルサイズが大きいと分割数が減る(=破綻しにくい&生成時間が短くなる)ということになります。

ただし普通に生成する時と同様に大きすぎる/小さすぎると、生成画像の破綻が増える(モデルによるけど)ので、
64x64か96x96あたりを使うのが無難だと思われます!

Latent tile overlap

分割するときに、隣とどれだけ重なるかです。
これも8倍した値になります。

高い方が継ぎ目部分が目立たなくなりますが、重なれば重なるだけ生成する分割画像の枚数が増えます(=完了までの時間が長くなる)。

拡張機能の説明のところに書いてあるこの画像が一番わかりやすいかも?

以下は例です
1536x1536 の画像を、Latent tile width/height を 96
Latent tile overlap 32 にして生成したものです

96-32 = 64 になるので 9分割 されています
継ぎ目もわかんないね!
でも分割生成だからめっちゃ変だね!

Latent tile batch size
分割して生成するときに、何個の分割画像を同時に生成するかです。
数値が高い方がまとめて処理するので若干早いですが、相応のVRAMを必要とします。

Upscaler / Scale Factor (i2iのみ)

そのままですね。
詳しくは Keep input image size のところの説明を見てください!

以上の説明でなんとなく伝わったでしょうか?
もし伝わってなくても大丈夫です。さいきょうの設定にしておいてください

のこりの設定値については、いまいちよく分かってないので他の方の説明を見よう!

おまけ:おもしろい Tiled Diffusion の使い方

で、完全にネタですが、このタイル設定だけでちょっとだけ遊べます

たとえば、おじいさんをいっぱい並べたいな~って思ったら

6人のおじいさん

できました。

これは以下の設定値で実現できます

old man, solo, cute clothes, standing, (simple background:1.2)

Size: 1920x512
Tile tile width: 48,
Tile tile height: 64,
Tile Overlap: 8

縦長のおじいさんソロ画像を6連結するようにしてるわけですね

当たり前ですが横幅を増やせばいくらでもおじいさんが増えます

10人のおじいさん (3200x512)
100人のおじいさん (32000x512)

ちなみにこの知識が役に立つことはたぶんありません。

この記事が気に入ったらサポートをしてみませんか?