CLIPSetLastLayer

(comfyanonymous/ComfyUI)
conditioning/CLIP Set Last Layer
CLIP の中間層の利用深さを制限する

CLIP/OpenCLIP text encoder の中間層の利用深さを制限します。 val が小さくなるごとに捨てる層の数が増えます。 基本的には、モデル (U-Net) の学習時の条件に合わせて指定すべきものです。 Stablity AI が公開しているオリジナルの Stable Diffusion は、-1 相当の条件で学習されています。

  • SD1 では -1 で制限無し (最後の層の出力を使う)、-2 で最後の 1層分を捨てる、-3 で最後の 2層分を捨てる、...
  • SD2 では -1 で最後の 1層分を捨てる、-2 で最後の 2層分を捨てる、...
  • SDXL では -1 で最後の 1層分を捨てる、-2 で最後の 2層分を捨てる、...

通常は、CheckpointLoaderSimple の直後につなげて使います。

大抵のモデルは、-1-2 相当の条件で学習されています。 モデルの学習時の条件から離れると、プロンプトが意図しない方向に効いたりするようになります。 ごちゃ混ぜにマージされたモデルも多く流通していますが、いずれにせよ -3 以下を指定することによる利点は特にありません。

-2 相当の条件で学習されているモデルの代表は NovelAI のものです。 NovelAI は -2 での学習を採用した理由として、タグベースのプロンプトのように部位ごとの色指定などが近接する密度の高い記述ではその方が結果が良かったから、としています。

Stable Diffusion v1 のモデルでかつ booru タグを使えるモデルでは、-2 が良いことが多いです。 モデルの説明に無い場合や迷った場合は、実際に -1-2 を試して比較した方が良いでしょう。 1girl, red_hair, blue worker suit などが比較しやすいです。

関連

  • diffusion モデルの読み込み時に同時に指定できない (けどこちらが推奨): CheckpointLoaderSimple
  • diffusion モデルの読み込み時に同時に指定できる (けど通常の使用は非推奨): CheckpointLoader
  • CLIP text encoder を読み込むだけ: CLIPLoader
  • エンコードする: CLIPTextEncode

外部リンク

使用例

-2 の方が良さそうな例 (anything-v3):