こんにちは!悠です!
プロンプトで「red eyes」と指定しても目の色が赤色にならなかったり、「pink skirt」と指定してもスカートがピンク色にならないことってよくありますよね。
特に長いプロンプトを使って生成するときに起こりがちな現象だと思います。
そこで今回は、「Stable Diffusion」で生成されるAIイラストの各部位の色を指定できる拡張機能「Cutoff」の使い方を紹介していきます。

私が大好きなオッドアイ(左右の瞳の色が違う)のキャラクターの生成を例にしていきますね!
「Cutoff」とは?
拡張機能「Cutoff(Cutting Off Prompt Effect)」とは、指定されたトークンを「padding token」というものに書き換えることで、特定のトークンへの影響を取り除けるというものです。
Readmeに書いてある具体例が非常にわかりやすいので引用します。
ここで
a cute girl, pink hair, red shoes
というプロンプトを考える。 普通、こういったプロンプトの意図は
pink
はhair
だけに係っておりshoes
には係っていない。- 同様に
red
もhair
には係っていない。a cute girl
は全体に係っていて欲しい。hair
やshoes
は女の子に合うものが出て欲しい。……というもののはずである。
しかしながら、EvViz2 などでトークン間の関係を見ると、そううまくはいっていないことが多い。 つまり、
shoes
の位置のベクトルにpink
の影響が出てしまっていたりする。一方で上述の通り
a cute girl
の影響は乗っていて欲しいわけで、どうにかして、特定のトークンの影響を取り除けるようにしたい。この拡張では、指定されたトークンを padding token に書き換えることでそれを実現している。
たとえば
red shoes
の部分に対応してa cute girl, _ hair, red shoes
というプロンプトを生成する。red
とshoes
に対応する位置のベクトルをここから生成したもので上書きしてやることで、pink
の影響を除外している。
要はpinkという色の指定が、適用したいhairだけではなくshoesにまで作用される「色移り現象」を防止できるんですね。
別の記事で紹介したBREAK構文に似ていますが、あれをもっと使いやすくした感じの拡張機能になっています。
「Cutoff」の導入方法
Google Colaboratory版の場合
下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「Cutoff」を導入していきます。
まだご覧になっていない方は、まず最初にこちらを準備しておいてください。


Google Driveからモデルデータを読み込むセルの下に新しくセルを作成し、下記のコードを入力してください。
#Cutoffをインストール
%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/hnmr293/sd-webui-cutoff /content/stable-diffusion-webui/extensions/sd-webui-cutoff
%cd /content/stable-diffusion-webui
txt2imgおよびimg2imgタブに、Cutoffの項目が表示されていれば導入は成功です。
ローカル版の場合
「Extensions」→「Install from URL」の「URL for extension’s git repository」に下記のURLを入力しInstallをクリックしましょう。
https://github.com/hnmr293/sd-webui-cutoff
「Cutoff」の使い方
具体例として拡張機能「Cutoff」を使って、片方は赤色の瞳、もう片方は青色の瞳のオッドアイの美少女を生成していきたいと思います。
モデルには「animelike2d」を使用しています。
まずは通常通りプロンプトを入力します。今回使ったものは次の通りです。
masterpiece, best quality, absurdres, highres, official art, 1girl, solo, upper body, heterochromia, red eyes, blue eyes, bare shoulders, black hair, blurry, blush, medium breasts, chromatic aberration, detached collar, detached sleeves, dress, frilled hairband, frills, garter straps, hairband, arm behind back, long hair, looking at viewer, open mouth, orange dress, red ribbon, ribbon, sleeveless, sleeveless dress, smile, strap slip, twintails
(worst quality, low quality:1.4), (monochrome, greyscale:1.4), nude, bad-hands-5, EasyNegative, bad anatomy, logo
オッドアイはodd eyeではなく、heterochromiaで指定する方が良いらしいので覚えておきましょう。
プロンプトを入力したら設定欄にあるCutoffの項目を開きます。
Enabledにチェックを入れ、Target tokensに指定したい部位の色を入力します。今回は瞳の色であるredとblueですね。
これだけで設定はOKです。後は通常通りGenerateボタンでイラストを生成してみましょう。
指定した通りの瞳の色が反映されていますね。打率も高く、10枚中7枚以上は正確に反映されている印象です。

オッドアイはCutoffなしだと結構難しく、安定して出しにくい特徴の1つなので助かりますね!
まとめ
以上が、「Stable Diffusion」で生成されるAIイラストの各部位の色を指定できる拡張機能「Cutoff」の使い方でした。
BREAK構文を使わずとも色移りを防止できる、非常に簡単で便利な拡張機能なので、皆様もぜひ試してみてくださいね!
では、ここまで読んでいただきありがとうございました。
コメント