13 KiB
Composable LoRA/LyCORIS with steps
この拡張機能は、内部のforward LoRAプロセスを置き換え、同時にLoCon、LyCORISをサポートします。
この拡張機能はComposable LoRAのフォークです。
言語
インストール
注意: このバージョンのComposable LoRAには、元のComposable LoRAのすべての機能が含まれています。1つ選んでインストールするだけです。
この拡張機能は、元のバージョンのComposable LoRA拡張機能と同時に使用できません。インストールする前に、webui\extensions\フォルダー内のstable-diffusion-webui-composable-loraフォルダーを削除する必要があります。
次に、WebUIの[Extensions] -> [Install from URL]で以下のURLを入力します。
https://github.com/a2569875/stable-diffusion-webui-composable-lora.git
インストールして再起動します。
デモ
ここでは2つのLoRA(1つはLoHA、もう1つはLoCon)を紹介します。
<lora:roukin8_loha:0.8>に対応するトリガーワード:yamanomitsuha<lora:dia_viekone_locon:0.8>に対応するトリガーワード:dia_viekone_\(ansatsu_kizoku\)
Latent Couple extensionと組み合わせます。
以下のことが分かります。
<lora:roukin8_loha:0.8>をyamanomitsuhaと組み合わせ、そして<lora:dia_viekone_locon:0.8>をdia_viekone_\(ansatsu_kizoku\)と組み合わせることで、対応するキャラクターを描画できます。- モデルのトリガーワードが互いに交換され、一致しなくなった場合、2つのキャラクターは描画できません。これは
<lora:roukin8_loha:0.8>が画像の左側のブロックにのみ制限されているため、そして<lora:dia_viekone_locon:0.8>が画像の右側のブロックにのみ制限されているためです。したがって、このアルゴリズムは有効です。
画像のヒントの文法にはsd-webui-prompt-highlightプラグインが使用されています。
このテストは2023年5月14日に行われ、使用されたStable Diffusion WebUIのバージョンはv1.2 (89f9faa)です。
(Note: You should enable [Lora: use old method that takes longer when you have multiple Loras active and produces same results as kohya-ss/sd-webui-additional-networks extension] in setting page.)
2023年6月24日、Stable Diffusion WebUIバージョンv1.4.0-RC (baf6946)を使用して、もう一つのテストが行われました。私自身が訓練したサンジョウノ・春姫のLoConモデルと、civitaiからダウンロードしたonimaiCharactersLoraモデルの両方を使用しました。

機能
Composable-Diffusionと互換性がある
LoRAの挿入箇所をAND構文と関連付け、LoRAの影響範囲を特定のサブプロンプト内に限定します(特定のAND...ANDブロック内)。
ステップに基づく可組合性
形式[A:B:N]のプロンプトにLoRAを配置し、LoRAの影響範囲を特定のグラフィックステップに制限します。

LoRA重み制御
[A #xxx]構文を追加して、LoRAの各グラフィックステップでの重みを制御できます。
現在、サポートされているものは以下のとおりです。
decrease- LoRAの有効なステップ数で徐々に重みを減少させ、0になります
increment- LoRAの有効なステップ数で0から重みを徐々に増加させます
cmd(...)- カスタムの重み制御コマンドで、主にPython構文を使用します。
- 使用可能なパラメータ
weight- 現在のLoRA重み
life- 0-1の数字で、現在のLoRAのライフサイクルを表します。開始ステップ数にある場合は0であり、このLoRAが最後に適用されるステップ数にある場合は1です。
step- 現在のステップ数
steps- 全ステップ数
lora- 現在のLoRAオブジェクト
lora_module- 現在のLoRA作用層オブジェクト
lora_type- 現在のLoRAのロードされた種類で、
loraまたはlycoのいずれかです。
- 現在のLoRAのロードされた種類で、
lora_name- 現在のLoRAの名前
lora_count- すべてのLoRAの数
block_lora_count- 作用中の
AND...ANDブロック内のLoRAの数
- 作用中の
is_negative- 反転提示語であるかどうか
layer_name- 現在の作用層の名前。これを使用して、LoRA Block Weightの効果をシミュレートできます。
current_prompt- 作用中の
AND...ANDブロック内のプロンプト
- 作用中の
sd_processing- sd画像の生成パラメータ
enable_prepare_step- (出力用パラメータ) Trueに設定すると、この重みがtransformer text model encoder層に適用されます。 step == -1の場合は、現在transformer text model encoder層にいます。
- 使用可能な関数は以下の通りです
warmup(x)- xは0から1までの数値で、総ステップ数に対して、xの比率以下のステップでは関数値が0から1に徐々に上昇し、x以降は1になります。
cooldown(x)- xは0から1までの数値で、総ステップ数に対して、xの比率以上のステップでは関数値が1から0に徐々に減少し、0になります。
- sin, cos, tan, asin, acos, atan
- すべてのステップを周期とする三角関数です。sin、cosの値は0から1に変更されます。
- sinr, cosr, tanr, asinr, acosr, atanr
- 弧度単位の周期2*piの三角関数です。
- abs, ceil, floor, trunc, fmod, gcd, lcm, perm, comb, gamma, sqrt, cbrt, exp, pow, log, log2, log10
- Pythonのmath関数ライブラリと同じ関数です。 例 :
- 使用可能なパラメータ
- カスタムの重み制御コマンドで、主にPython構文を使用します。
[<lora:A:1>::10][<lora:A:1>:<lora:B:1>:10][<lora:A:1>:10]- 10ステップから名前がAのLoRAを使用します。
[<lora:A:1>:0.5]- 50%のステップから名前がAのLoRAを使用します。
[[<lora:A:1>::25]:10][<lora:A:1> #increment:10][<lora:A:1> #decrease:10][<lora:A:1> #cmd\(warmup\(0.5\)\):10][<lora:A:1> #cmd\(sin\(life\)\):20]
反向トークンに対する影響の消去
内蔵のLoRAを使用する場合、反転トークンは常にLoRAの影響を受けます。これは通常、出力に負の影響を与えます。この拡張機能は、負の影響を排除するオプションを提供します。
使用方法
有効化 (Enabled)
このオプションをオンにすると、Composable LoRAの機能を使用できるようになります。
Composable LoRA with step
特定のステップでLoRAを有効または無効にする機能を使用するには、このオプションを選択する必要があります。
Use Lora in uc text model encoder
言語モデルエンコーダー(text model encoder)の逆提示語部分でLoRAを使用します。 このオプションをオフにすると、より良い出力が期待できます。
Use Lora in uc diffusion model
拡散モデル(diffusion model)またはデノイザー(denoiser)の逆提示語部分でLoRAを使用します。 このオプションをオフにすると、より良い出力が期待できます。
plot the LoRA weight in all steps
Composable LoRA with step
互換性
--always-batch-cond-uncondは--medvramまたは--lowvramと一緒に使用する必要があります。
更新ログ
2023-04-02
- LoCon、LyCORISサポートを追加
- 不具合を修正:IndexError: list index out of range
2023-04-08
2023-04-13
- 2023-04-08のバージョンでpull requestを提出
2023-04-19
- pytorch 2.0を使用する場合に拡張がロードされない問題を修正
- 不具合を修正: RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda and cpu! (when checking argument for argument mat2 in method wrapper_CUDA_mm)
2023-04-20
- 特定のステップでLoRAを有効または無効にする機能を実装
- LoCon、LyCORISの拡張プログラムを参考にし、異なるANDブロックおよびステップでのLoRAの有効化/無効化アルゴリズムを改善
2023-04-21
- 異なるステップ数でのLoRAの重みを制御する方法の実装
[A #xxx] - 異なるステップ数でのLoRAの重み変化を示すグラフの作成
2023-04-22
- 不具合を修正: AttributeError: 'Options' object has no attribute 'lora_apply_to_outputs'
- 不具合を修正: RuntimeError: "addmm_impl_cpu_" not implemented for 'Half'
特別な感謝
- opparco: Composable LoRAの元の作者である、Composable LoRA
- JackEllieのStable-Siffusionコミュニティチーム 、 YouTubeチャンネル
- 中文ウィキペディアのコミュニティチーム










