Stable DiffusionのCLIP Skipとは?基本を知りたい人向けにわかりやすく解説!
はじめに
Stable Diffusionを使った画像生成の推奨設定を見ると、よく「CLIP Skip」の値が書いてあります。
例えばアニメ調に特化したモデルの「Agelesnate」ではClip Skip 2 が推奨されています。
CLIP Skipを設定しないと、同じモデル・同じプロンプトでも全く別の画像が出力されてしまいます。今回はCLIP Skipとは何か?全くわからない人向けに基本をわかりやすく解説していきます。
そもそもCLIPとは?
プロンプトを画像に反映するため、テキスト → 特徴量への変換を行うのがCLIP(Text Encoder)です。
CLIPモデルは、複数のレイヤーで構成されます。例えばStable Diffusion 1.5モデルには12層の深さがあります。
CLIPのレイヤーを簡単にイメージしてみましょう。
各レイヤーは、一つ前のレイヤーよりも具体的です。例えば、レイヤー1が「人間」であれば、レイヤー2は「男性」「女性」になります。「男性」の次のレイヤー3は「男の子」「成人男性」「おじいちゃん」になるかもしれません。
※ただのイメージであり、実際にCLIPモデルがこのように構成されているというわけではありません
参考:https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/5674
Stable DiffusionのCLIP Skipとは?
文字通り「CLIP」の処理を「スキップ」する設定です。
では、なぜCLIPのレイヤーを一つ前で止めたいのでしょうか?
「牛」の画像がほしいのであれば、テキストモデルが持つ「牛」のサブカテゴリーなど気にしないかもしれないからです。「牛」がほしいわけで、「アベダディーン・アンガス牛」がほしいわけではないことが多いですよね。
CLIP Skipは、基本的に「テキストモデルをどの程度正確にしたいのか」を設定するものだと考えられます。
「森の中に立っている若い男性」というプロンプトがあったら、CLIPのステージが低ければ「立っている男性」の画像が得られ、次の深さで「立っている若い男性」が得られ、その次で「森の中に立っている若い男性」が得られる、などとなります。
参考:https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/5674
CLIP Skipの比較
試しに「森の中に立っている、りんごを持った若い女性」(young girl with short blonde hair holding an apple, standing in a forest)というプロンプトで画像生成してみましょう。シード値など他の設定は一緒のまま、CLIP Skipの値だけを変えています。
使用モデル:blue_pencil v8
https://huggingface.co/bluepen5805/blue_pencil
CLIP Skip: 1
プロンプトに書かれた全ての特徴を捉えています。想像していた通りの画像が得られました。
CLIP Skip: 2
あらかわいい。
CLIP Skip: 3
このレイヤーからはりんごがなくなっています。
CLIP Skip: 4
りんごは戻りましたが、画像のクオリエティが徐々に低くなっているのを感じます。
CLIP Skip: 7
りんごを持っていないのと、少し大人になった女性が描かれています。
CLIP Skip: 9
ここまでくると、アニメ調のイラストらしさもなくなっています。
いつCLIP Skipを設定するべきか?
CLIP skipは、Danbooruタグを用いたアニメイラスト系のモデルで使うと、よい結果が得られるといわれています。(「1girl」といった主要タグは、多くのサブタグに分解されるので)。
ただ、基本的に試行錯誤するしかありません。モデルが推奨している値がなければ、まずはCLIP Skipは小さい値 (1) から始めてみましょう。
最近ではもともとCLIP Skip: 2でファインチューニングしているモデルも多く、生成時も2に設定することが増えています。
参考:https://blog.novelai.net/novelai-improvements-on-stable-diffusion-e10d38db82ac
Stable Diffusion web UIでCLIP Skipを設定する方法
初期状態の WebUI には CLIP skipの設定項目がありません。
AUTOMATIC1111版Stable Diffusion web UIの場合、まずは「Settings」 → 「User Interface」を選択します。
「User Interface」の下の方にスクロールし、「Quicksettings list」項目に以下のように入力します:
sd_model_checkpoint,sd_vae,CLIP_stop_at_last_layers
「Apply settings」をクリックし、「Reload UI」をクリックすると、見具上にCLIP skipの設定が表示されます。
環境構築・GPUなしで画像生成したいなら…
CLIP Skipが設定できる画像生成サービス「Akuma.ai」
Akuma.aiはどんなStable Diffusionモデルを使ってでも画像生成ができるサービスです。環境構築やGPUは必要ありません。アカウント登録だけで、Clip Skipなど、Stable Diffusion web UIのような高度な設定が行なえます。
今なら無料クレジットがもらえるので、ぜひお試しください。
サービスURL👉 https://akuma.ai/ja/
Akuma.aiでCLIP Skipを設定する方法
https://akuma.ai/ にアクセスしたら、「無料で始める」または「登録」をクリック。
無料アカウント作成が必要なので、「Googleで続行」をクリックします。
画像生成画面の「AI設定」にCLIP Skipの項目があります。ぜひお試しください。