【Stable Diffusion】CLIP(テキストエンコーダー)を変更して、プロンプトの効き方を強くできる拡張機能「CLIP Changer」の紹介!

こんにちは!悠です!

 

今回は「Stable Diffusion WebUI」に最初から備わっているCLIPをより強力なものに変更して、入力したプロンプトの効き目を強くできる拡張機能「CLIP Changer」の使い方について紹介していきます。

なお、この拡張機能はAIイラストの生成工程に変更を加えるため、万が一のエラーに備えてGoogle Colaboratoryもしくはテスト環境を構築して試してみるのがおすすめです。

使い方自体はめちゃくちゃ簡単なので安心してください!

 

アイキャッチ画像は「animelike2d」で生成しています!
スポンサーリンク
スポンサーリンク

CLIPとは?

CLIPとは、「Stable Diffusion」に備わっている入力したプロンプト(テキスト)を画像に反映させるテキストエンコーダーのようなものです。(参考記事

わかりやすく言うと、”cat”というテキストから実際に「猫の画像」を生成してくれる機能のことです。

「Stable Diffusion」の根幹的役割を担っている部分でもあり、数億枚のサンプル画像をもとに作り出されたらしいですね。

 

CLIPの性能が良くなるほどプロンプトの効き目が強くなり、使用したものすべてが反映されるようになります。

例えば、セーラー服を指定したのにTシャツを着ている画像が生成される確率が減ります。

 

なお、皆様もClip Skipという設定を聞いたことがあるのではないでしょうか。これもこのCLIPに関係しています。

CLIPで行われる処理は複数の層に分かれており、通常「Stable Diffusion」では最後の層まで処理を行ってからイラストを生成しますが(clip skip = 1)、それを最後から2番目の層までで処理をやめる(最後の層の処理をスキップする)のがclip skip = 2らしいです。(参考記事

 

CLIPの種類について

CLIPの種類に関する参考文献を他にご存知でしたら、コメント欄で教えていただけると嬉しいです!

 

まず「Stable Diffusion」に最初から備わっているCLIPは、「clip-vit-large-patch14」と呼ばれるものです。

これはStable Diffusion v1.5のHugging Faceのページで確認できます。

 

ローカル版の「Stable Diffusion WebUI」を導入している方なら、下記のディレクトリ内でも確認できると思います。

C:\Users\name\.cache\huggingface\hub

 

この初期設定である「clip-vit-large-patch14」より優れたCLIPを紹介してくれている記事が2つありました。

1つ目は下記の記事で紹介されている「clip-vit-large-patch14-336」というものです。「clip-vit-large-patch14」と同じサイズ(1.71GB)でありながら、性能は上回っているようです。

[WebUI] Stable DiffusionベースモデルのCLIPの重みを良いやつに変更する

 

今回は後述する拡張機能を使ってCLIPを変更するので、自分でダウンロードする必要はありませんが、下記Hugging Faceのページから保存することができます。

openai/clip-vit-large-patch14-336 · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

 

2つ目は下記の記事で紹介されている「CLIP-ViT-g-14-laion2B-s12B-b42K 」というものです。こちらはファイルサイズが5.47GBもあるため単純にストレージの容量も食いますし、どうやらVRAM消費量も増えるようです。

【Stable Diffusion】テキストエンコーダを変更して画像精度を上げる
「Stable Diffusionで画像の精度を上げたい」「テキストエンコーダのモデルによる画像精度の影響度を知りたい」このような場合には、この記事の内容が参考になります。この記事では、テキストエンコーダを変更することによる画像精度への効果を解説しています。

 

Hugging Faceのページはこちらです。

laion/CLIP-ViT-g-14-laion2B-s12B-b42K · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

 

拡張機能「CLIP Changer」とは?

GitHub - bbc-mc/sdweb-clip-changer: Add setting to change CLIP. Extension for AUTOMATIC1111 web ui
Add setting to change CLIP. Extension for AUTOMATIC1111 web ui - GitHub - bbc-mc/sdweb-clip-changer: Add setting to change CLIP. Extension for AUTOMATIC1111 web...

 

今回紹介する「CLIP Changer」は、上の項で紹介したCLIPの種類をWebUIの設定から1クリックで変更できるようにしてくれる拡張機能です。

自分でスクリプトを編集しなくて済む分、予期せぬエラーが出る可能性も減りますし、何より使い勝手が抜群にいいです!

 

「CLIP Changer」の導入方法

 

ローカル版の場合

「Extensions」→「Install from URL」の「URL for extension’s git repository」に下記のURLを入力しInstallをクリックしましょう。

https://github.com/bbc-mc/sdweb-clip-changer

 

 

インストール後「Stable Diffusion WebUI」を再起動して、Settingsのタブに「CLIP Changer」の設定欄が追加されていれば導入は成功です。

 

Google Colaboratory版の場合

下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「CLIP Changer」を導入していきます。

まだご覧になっていない方は、まず最初にこちらを準備しておいてください。

【Stable Diffusion】AUTOMATIC1111のWebUIをGoogle Colaboratory上で使う方法!【maintained by Akaibu】
「Stable Diffusion」で、「AUTOMATIC1111」が用意しているノートブック「maintained by Akaibu」を使って、Google Colaboratory上で自分の好きなモデルデータやLoRAを使用する方法についてまとめた記事です。
【Stable Diffusion】AUTOMATIC1111のColab版でLoRAを使う方法について紹介!【maintained by Akaibu】
AUTOMATIC1111のColab版「maintained by Akaibu」でLoRAを使う方法についてまとめた記事です。2.5D風AIコスプレイヤーを作成できる「KoreanStyle2.5D」も紹介しています。

 

Google Driveからモデルデータを読み込むセルの下に新しくセルを作成し、下記のコードを入力してください。

#clip changerをインストール
%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/bbc-mc/sdweb-clip-changer /content/stable-diffusion-webui/extensions/sdweb-clip-changer

%cd /content/stable-diffusion-webui

 

「CLIP Changer」の使い方

今回は例として、CLIPを「clip-vit-large-patch14-336」に変更してみます。

 

「Stable Diffusion WebUI」を起動して、Settingsのタブにある「CLIP Changer」の設定欄に移動し、下記のようにEnable CLIP Changerにチェックを入れた後、下2つの入力欄に「openai/clip-vit-large-patch14-336」と入力します。

 

「openai/clip-vit-large-patch14-336」の部分はこのページから確認できます。別のCLIPを使いたい場合は同じ形式で入力してみましょう。

 

後はApply Settingsを押し、モデルを切り替えた時点で設定したCLIPが有効になります。

CLIPを初期設定の「clip-vit-large-patch14」に戻したい場合は、Enableのチェックを外し、再度モデルデータを切り替えます。



RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0!

この拡張機能を有効化してCLIPを切り替えると、下記のようなエラーが出る場合があります。

RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)

 

どうやらこれは「webui-user.bat」のset COMMANDLINE_ARGSに、medvramまたはlowvramを使用していると発生するようです。

このエラーが発生するとWebUIでAIイラストを生成できなくなるため、「~\webui\extensions」にある「CLIP Changer」のフォルダを削除しましょう。

これで再びイラスト生成ができるようになります。

 

CLIPの違いによる画像の比較

参考までに、「clip-vit-large-patch14」と「clip-vit-large-patch14-336」を使って生成した画像を紹介します。

モデルは「animelike2D」で、プロンプトは下記の通りです。なお高画質化は行っておらず、Seed値やサンプラーなどCLIP以外の設定は全て同じです。

【Positive】
masterpiece, best quality, absurdres, highres, official art, 1girl, solo, medium breasts, portrait, looking at viewer, smile, short hair, shirt, thighhighs, gloves, long sleeves, hat, navel, holding, bare shoulders, medium breasts, underwear, standing, panties, jacket, yellow eyes, white shirt, weapon, white hair, thighs, cowboy shot, open clothes, necktie, shorts, sleeveless, midriff, collared shirt, white gloves, off shoulder, stomach, holding weapon, grin, white thighhighs, open jacket, black jacket, crop top, black panties, short shorts, sleeveless shirt, skindentation, beret, white headwear, highleg, black shorts, red necktie, highleg panties, on back
【Negative】
(worst quality, low quality:1.4), (monochrome, greyscale:1.4), zombie, nude, bad-hands-5, EasyNegative, bad anatomy, logo

 

【clip-vit-large-patch14】

 

【clip-vit-large-patch14-336】

 

「clip-vit-large-patch14-336」の方が、ジャケット(上着)の部分を上手く表現できているように見えますね。

試行回数がまだ少ないため、モデルデータやプロンプトによっては「clip-vit-large-patch14」の方が上手く反映できる場合もあるかもしれません。



まとめ

以上が、「Stable Diffusion WebUI」に最初から備わっているCLIPをより強力なものに変更して、入力したプロンプトの効き目を強くできる拡張機能「CLIP Changer」の紹介でした。

CLIPの精度を上げることで、よりAIイラストのクオリティを向上させることができるかもしれないので、ぜひ試してみてくださいね!

では、ここまで読んでいただきありがとうございました。

コメント