toto10's picture
Upload folder using huggingface_hub (#1)
34097e9
|
raw
history blame
20 kB
# LoRA Block Weight
- custom script for [AUTOMATIC1111's stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
- When applying Lora, strength can be set block by block.
- [AUTOMATIC1111's stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) 甚のスクリプトです
- Loraを適甚する際、匷さを階局ごずに蚭定できたす
### Updates/曎新情報
2023.5.24.2000(JST)
- changed directory for presets(extentions/sd-webui-lora-block-weight/scripts/)
- プリセットの保存フォルダがextentions/sd-webui-lora-block-weight/scripts/に倉曎になりたした。
2023.5.12.2100(JST)
- changed syntax of lycoris
- lycorisの曞匏を倉曎したした
2023.04.14.2000(JST)
- support LyCORIS(a1111-sd-webui-lycoris)
- LyCORIS(a1111-sd-webui-lycoris)に察応
2023.03.20.2030(JST)
- Comment lines can now be added to presets
- プリセットにコメント行を远加できるようになりたした
- support XYZ plot hires.fix
- XYZプロットがhires.fixに察応したした
2023.03.16.2030(JST)
- [LyCORIS](https://github.com/KohakuBlueleaf/LyCORIS)に察応したした
- Support [LyCORIS](https://github.com/KohakuBlueleaf/LyCORIS)
別途[LyCORIS Extention](https://github.com/KohakuBlueleaf/a1111-sd-webui-locon)が必芁です。
For use LyCORIS, [Extension](https://github.com/KohakuBlueleaf/a1111-sd-webui-locon) for LyCORIS needed.
日本語説明は[埌半](#抂芁)埌半にありたす。
# Overview
Lora is a powerful tool, but it is sometimes difficult to use and can affect areas that you do not want it to affect. This script allows you to set the weights block-by-block. Using this script, you may be able to get the image you want.
## Usage
Place lora_block_weight.py in the script folder.
Or you can install from Extentions tab in web-ui. When installing, please restart web-ui.bat.
### Active
Check this box to activate it.
### Prompt
In the prompt box, enter the Lora you wish to use as usual. Enter the weight or identifier by typing ":" after the strength value. The identifier can be edited in the Weights setting.
```
<lora:"lora name":1:0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0>.
<lora:"lora name":1:0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>. (a1111-sd-webui-locon, etc.)
<lora:"lora name":1:IN02>
<lyco:"lora name":1:1:lbw=IN02> (a1111-sd-webui-lycoris)
<lyco:"lora name":1:1:lbw=1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0> (a1111-sd-webui-lycoris)
```
For LyCORIS using a1111-sd-webui-lycoris, syntax is different.
`lbw=IN02` is used and follow lycoirs syntax for others such as unet or else.
a1111-sd-webui-lycoris is under under development, so this syntax might be changed.
Lora strength is in effect and applies to the entire Blocks.
It is case-sensitive.
For LyCORIS, full-model blobks used,so you need to input 26 weights.
You can use weight for LoRA, in this case, the weight of blocks not in LoRA is set to 1.  
If the above format is not used, the preset will treat it as a comment line.
### Weights Setting
Enter the identifier and weights.
Unlike the full model, Lora is divided into 17 blocks, including the encoder. Therefore, enter 17 values.
BASE, IN, OUT, etc. are the blocks equivalent to the full model.
|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
|BASE|IN01|IN02|IN04|IN05|IN07|IN08|MID|OUT03|OUT04|OUT05|OUT06|OUT07|OUT08|OUT09|OUT10|OUT11|
LyCORIS, etc.
|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
|BASE|IN00|IN01|IN02|IN03|IN04|IN05|IN06|IN07|IN08|IN09|IN10|IN11|MID|OUT00|OUT01|OUT02|OUT03|OUT04|OUT05|OUT06|OUT07|OUT08|OUT09|OUT10|OUT11|
### Special Values (Random)
Basically, a numerical value must be entered to work correctly, but by entering `R` and `U`, a random value will be entered.
R : Numerical value with 3 decimal places from 0~1
U : 3 decimal places from -1.5 to 1.5
For example, if ROUT:1,1,1,1,1,1,1,1,R,R,R,R,R,R,R,R,R
Only the OUT blocks is randomized.
The randomized values will be displayed on the command prompt screen when the image is generated.
### Special Values (Dynamic)
The special value `X` may also be included to use a dynamic weight specified in the LoRA syntax. This is activated by including an additional weight value after the specified `Original Weight`.
For example, if ROUT:X,1,1,1,1,1,1,1,1,1,1,1,X,X,X,X,X and you had a prompt containing \<lora:my_lore:0.5:ROUT:0.7\>. The `X` weights in ROUT would be replaced with `0.7` at runtime.
> NOTE: If you select an `Original Weight` tag that has a dynamic weight (`X`) and you do not specify a value in the LoRA syntax, it will default to `1`.
### Save Presets
The "Save Presets" button saves the text in the current text box. It is better to use a text editor, so use the "Open TextEditor" button to open a text editor, edit the text, and reload it.
The text box above the Weights setting is a list of currently available identifiers, useful for copying and pasting into an XY plot. 17 identifiers are required to appear in the list.
### Fun Usage
Used in conjunction with the XY plot, it is possible to examine the impact of each level of the hierarchy.
![xy_grid-0017-4285963917](https://user-images.githubusercontent.com/122196982/215341315-493ce5f9-1d6e-4990-a38c-6937e78c6b46.jpg)
The setting values are as follows.
NOT:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
ALL:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
INS:1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
IND:1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0
INALL:1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
MIDD:1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0
OUTD:1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0
OUTS:1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
OUTALL:1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1
## XYZ Plotting Function
The optimal value can be searched by changing the value of each layer individually.
### Usage
Check "Active" to activate the function. If Script (such as XYZ plot in Automatic1111) is enabled, it will take precedence.
Hires. fix is not supported. batch size is fixed to 1. batch count should be set to 1.
Enter XYZ as the identifier of the LoRA that you want to change. It will work even if you do not enter a value corresponding to XYZ in the preset. If a value corresponding to XYZ is entered, that value will be used as the initial value.
Inputting ZYX, inverted value will be automatically inputted.
This feature enables to match weights of two LoRAs.
Inputing XYZ for LoRA1 and ZYX for LoRA2, you get,
LoRA1 1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0
LoRA2 0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1
### Axis type
#### values
Sets the weight of the hierarchy to be changed. Enter the values separated by commas. 0,0.25,0.5,0.75,1", etc.
#### Block ID
If a block ID is entered, only that block will change to the value specified by value. As with the other types, use commas to separate them. Multiple blocks can be changed at the same time by separating them with a space or hyphen. The initial NOT will invert the change, so NOT IN09-OUT02 will change all blocks except IN09-OUT02.
#### seed
Seed changes, and is intended to be specified on the Z-axis.
#### Original Weights
Specify the initial value to change the weight of each block. If Original Weight is enabled, the value entered for XYZ is ignored.
### Input example
X : value, value : 1,0.25,0.5,0.75,1
Y : Block ID, value : BASE,IN01-IN08,IN05-OUT05,OUT03-OUT11,NOT OUT03-OUT11
Z : Original Weights, Value : NONE,ALL0.5,ALL
In this case, an XY plot is created corresponding to the initial values NONE,ALL0.5,ALL.
If you select Seed for Z and enter -1,-1,-1, the XY plot will be created 3 times with different seeds.
### Effective Block Analyzer
This function check which layers are working well. The effect of the block is visualized and quantified by setting the intensity of the other bocks to 1, decreasing the intensity of the block you want to examine, and taking the difference.
#### Range
If you enter 0.5, 1, all initial values are set to 1, and only the target block is calculated as 0.5. Normally, 0.5 will make a difference, but some LoRAs may have difficulty making a difference, in which case, set 0.5 to 0 or a negative value.
#### settings
##### diff color
Specify the background color of the diff file.
##### chnage X-Y
Swaps the X and Y axes. By default, Block is assigned to the Y axis.
##### Threshold
Sets the threshold at which a change is recognized when calculating the difference. Basically, the default value is fine, but if you want to detect subtle differences in color, etc., lower the value.
#### Blocks
Enter the blocks to be examined, using the same format as for XYZ plots.
For more information on block-by-block merging, see
https://github.com/bbc-mc/sdweb-merge-block-weighted-gui
# 抂芁
Loraは匷力なツヌルですが、時に扱いが難しく、圱響しおほしくないずころにたで圱響がでたりしたす。このスクリプトではLoraを適甚する際、適甚床合いをU-Netの階局ごずに蚭定するこずができたす。これを䜿甚するこずで求める画像に近づけるこずができるかもしれたせん。
## 䜿い方
scriptフォルダにlora_block_weightを眮いおください。 むンストヌル時はWeb-ui.batを再起動をしおください。
### Active
ここにチェックを入れるこずで動䜜したす。
### プロンプト
プロンプト画面では通垞通り䜿甚したいLoraを蚘入しおください。その際、匷さの倀の次に「:」を入力しりェむトか識別子を入力したす。識別子はWeights setting で線集したす。
```
<lora:"lora name":1:0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0>.
<lora:"lora name":1:0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>. (a1111-sd-webui-locon, etc.)
<lyco:"lora name":1:1:lbw=IN02> (a1111-sd-webui-lycoris)
<lyco:"lora name":1:1:lbw=1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0> (a1111-sd-webui-lycoris)
```
Loraの匷さは有効で、階局党䜓にかかりたす。倧文字ず小文字は区別されたす。
LyCORISに察しおLoRAのプリセットも䜿甚できたすが、その堎合LoRAで䜿われおいない階局のりェむトは1に蚭定されたす。
䞊蚘の圢匏になっおいない堎合プリセットではコメント行ずしお扱われたす。
a1111-sd-webui-lycoris版のLyCORISを䜿甚する堎合構文が異なりたす。`lbw=IN02`を䜿っお䞋さい。順番は問いたせん。その他の曞匏はlycorisの曞匏にしたがっお䞋さい。詳しくはLyCORISのドキュメントを参照しお䞋さい。識別子を入力しお䞋さい。a1111-sd-webui-lycoris版は開発途䞭のためこの構文は倉曎される可胜性がありたす。
### Weights setting
識別子ずりェむトを入力したす。
フルモデルず異なり、Loraでぱンコヌダヌを含め17のブロックに分かれおいたす。よっお、17個の数倀を入力しおください。
BASE,IN,OUTなどはフルモデル盞圓の階局です。
|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
|BASE|IN01|IN02|IN04|IN05|IN07|IN08|MID|OUT03|OUT04|OUT05|OUT06|OUT07|OUT08|OUT09|OUT10|OUT11|
LyCORISなどの堎合
|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
|BASE|IN00|IN01|IN02|IN03|IN04|IN05|IN06|IN07|IN08|IN09|IN10|IN11|MID|OUT00|OUT01|OUT02|OUT03|OUT04|OUT05|OUT06|OUT07|OUT08|OUT09|OUT10|OUT11|
### 特別な倀
基本的には数倀を入れないず正しく動きたせんが R および U を入力するこずでランダムな数倀が入力されたす。
R : 0~1たでの小数点3桁の数倀
U : -1.51.5たでの小数点3桁の数倀
䟋えば ROUT:1,1,1,1,1,1,1,1,R,R,R,R,R,R,R,R,R ずするず
OUT局のみダンダム化されたす
ランダム化された数倀は画像生成時にコマンドプロンプト画面に衚瀺されたす
saveボタンで珟圚のテキストボックスのテキストを保存できたす。テキスト゚ディタを䜿った方がいいので、open Texteditorボタンでテキスト゚ディタ開き、線集埌reloadしおください。
Weights settingの䞊にあるテキストボックスは珟圚䜿甚できる識別子の䞀芧です。XYプロットにコピペするのに䟿利です。17個ないず䞀芧に衚瀺されたせん。
### 楜しい䜿い方
XY plotず䜵甚するこずで各階局の圱響を調べるこずが可胜になりたす。
![xy_grid-0017-4285963917](https://user-images.githubusercontent.com/122196982/215341315-493ce5f9-1d6e-4990-a38c-6937e78c6b46.jpg)
蚭定倀は以䞋の通りです。
NOT:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
ALL:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
INS:1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
IND:1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0
INALL:1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
MIDD:1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0
OUTD:1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0
OUTS:1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
OUTALL:1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
## XYZ プロット機胜
各局の倀を個別に倉化させるこずで最適倀を総圓たりに探せたす。
### 䜿い方
Activeをチェックするこずで動䜜したす。 Script(Automatic1111本䜓のXYZプロットなど)が有効になっおいる堎合そちらが優先されたす。noneを遞択しおください。
Hires. fixには察応しおいたせん。Batch sizeは1に固定されたす。Batch countは1に蚭定しおください。
倉化させたいLoRAの識別子にXYZず入力したす\<lora:"lora名":1:XYZ>。 プリセットにXYZに察応する倀を入力しおいなくおも動䜜したす。その堎合すべおのりェむトが0の状態からスタヌトしたす。XYZに察応する倀が入力されおいる堎合はその倀が初期倀になりたす。
ZYXず入力するずXYZずは反察の倀が入力されたす。これはふた぀のLoRAのりェむトを合わせる際に有効です。
䟋えばLoRA1にXYZ,LoRA2にZYXず入力するず、
LoRA1 1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0
LoRA2 0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1
ずなりたす。
### 軞タむプ
#### values
倉化させる階局のりェむトを蚭定したす。カンマ区切りで入力しおください。「0,0.25,0.5,0.75,1」など。
#### Block ID
ブロックIDを入力するず、そのブロックのみvalueで指定した倀に倉わりたす。他のタむプず同様にカンマで区切りたす。スペヌスたたはハむフンで区切るこずで耇数のブロックを同時に倉化させるこずもできたす。最初にNOTを぀けるこずで倉化察象が反転したす。NOT IN09-OUT02ずするず、IN09-OUT02以倖が倉化したす。NOTは最初に入力しないず効果がありたせん。IN08-M00-OUT03は繋がっおいたす。
#### Seed
シヌドが倉わりたす。Z軞に指定するこずを想定しおいたす。
#### Original Weights
各ブロックのりェむトを倉化させる初期倀を指定したす。プリセットに登録されおいる識別子を入力しおください。Original Weightが有効になっおいる堎合XYZに入力された倀は無芖されたす。
### 入力䟋
X : value, 倀 : 1,0.25,0.5,0.75,1
Y : Block ID, 倀 : BASE,IN01-IN08,IN05-OUT05,OUT03-OUT11,NOT OUT03-OUT11
Z : Original Weights, 倀 : NONE,ALL0.5,ALL
この堎合、初期倀NONE,ALL0.5,ALLに察応したXY plotが䜜補されたす。
ZにSeedを遞び、-1,-1,-1を入力するず、異なるseedでXY plotを3回䜜補したす。
### Effective Block Analyzer
どの階局が良く効いおいるかを刀別する機胜です。察象の階局以倖の匷床を1にしお、調べたい階局の匷床を䞋げ、差分を取るこずで階局の効果を可芖化・数倀化したす。
#### Range
0.5, 1 ず入力した堎合、初期倀がすべお1になり、察象のブロックのみ0.5ずしお蚈算が行われたす。普通は0.5で差がでたすが、LoRAによっおは差が出にくい堎合があるので、その堎合は0.5を0あるいはマむナスの倀に蚭定しおください。
#### 蚭定
##### diff color
差分ファむルの背景カラヌを指定したす。
##### chnage X-Y
X軞ずY軞を入れ替えたす。デフォルトではY軞にBlockが割り圓おられおいたす。
##### Threshold
差分を蚈算する際の倉化したず認識される閟倀を蚭定したす。基本的にはデフォルト倀で問題ありたせんが、埮劙な色の違いなどを怜出したい堎合は倀を䞋げお䞋さい。
#### Blocks
調べたい階局を入力したす。XYZプロットず同じ曞匏が䜿甚可胜です。
階局別マヌゞに぀いおは䞋蚘を参照しおください
### elemental
詳现は[こちら](https://github.com/hako-mikan/sd-webui-supermerger/blob/main/elemental_ja.md)を参照しお䞋さい。
#### 䜿い方
Elementaタブにお階局指定ず同じように識別子を蚭定したす。識別子は階局の識別子の埌に入力したす。
\<lora:"lora名":1:IN04:ATTNON>
ATTNON:
曞匏は
識別子:階局指定:芁玠指定:りェむト
のように指定したす。芁玠は郚分䞀臎で刀定されたす。attn1ならattn1のみ、attnならattn1及びattn2が反応したす。階局、芁玠共に空癜で区切るず耇数指定できたす。
print changeをオンにするず反応した芁玠がコマンドプロンプト䞊に衚瀺されたす。
ALL0:::0
はすべおの芁玠のりェむトをれロに蚭定したす。
IN1:IN00-IN11::1
はINのすべおの芁玠を1にしたす
ATTNON::attn:1
はすべおの階局のattnを1にしたす。
#### XYZプロット
XYZプロットのelementsの項ではカンマ区切りでXYZプロットが可胜になりたす。
その堎合は
\<lora:"lora名":1:XYZ:XYZ>
ず指定しお䞋さい。
elements
の項に
IN05-OUT05:attn:0,IN05-OUT05:attn:0.5,IN05-OUT05:attn:1
ず入力しお走らせるずIN05からOUT05たでのattnのみを倉化させるこずができたす。
この際、XYZの倀を倉曎するこずで初期倀を倉曎できたす。デフォルトではelementalのXYZはXYZ:::1ずなっおおり、これは党階局、党芁玠を1にしたすが、ここをXYZ:encoder::1ずするずテキスト゚ンコヌダヌのみを有効にした状態で評䟡ができたす。
https://github.com/bbc-mc/sdweb-merge-block-weighted-gui
### updates/曎新情報
2023.02.07 1250(JST)
- Changed behavior when XYZ plot Active (Script of the main UI is prioritized).
2023.02.06 2000(JST)
- Feature added: XYZ plotting is added.
2023.01.31 0200(JST)
- Feature added: Random feature is added
- Fixed: Weighting now works for negative values.
2023.02.16 2040(JST)
- Original Weight をxやyに蚭定できない問題を解決したした
- Effective Weight Analyzer遞択時にXYZのXやYがValuesずBlockIdになっおいないず゚ラヌになる問題を解決したした
2023.02.08 2120(JST)
- 階局適応した埌通垞䜿甚する際、階局適応が残る問題を解決したした
- 効果のある階局をワンクリックで刀別する機胜を远加したした
2023.02.08 0050(JST)
- 䞀郚環境でseedが固定されない問題を解決したした
2023.02.07 2015(JST)
- マむナスのりェむトが正垞に働かない問題を修正したした
2023.02.07 1250(JST)
- XYZプロットActive時の動䜜を倉曎したした(本䜓のScriptが優先されるようになりたす)
2023.02.06 2000(JST)
- 機胜远加XYZプロット機胜を远加したした
2023.01.31 0200(JST)
- 機胜远加ランダム機胜を远加したした
- 機胜修正りェむトがマむナスにも効くようになりたした