prepare for Release. document update
doc: add new README/README.ja for new feature fix: bugfixexp/feature-each-merge
parent
75a31b481a
commit
480debf86f
12
README.md
12
README.md
|
|
@ -4,6 +4,18 @@
|
|||
- Implementation GUI of [Merge Block Weighted] (https://note.com/kohya_ss/n/n9a485a066d5b) idea by kohya_ss
|
||||
- change some part of script to adjust for AUTO1111, basic method is not changed.
|
||||
|
||||
|
||||
|
||||
# Recent Update
|
||||
|
||||
- 2022/12/25: Add new feature and new UI
|
||||
|
||||
- Read "README" [English](README_each.md)/[日本語](README_each.ja.md)
|
||||
|
||||
#
|
||||
|
||||
# What is this
|
||||
|
||||

|
||||
|
||||
## How to Install
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
# MWB Each - EXPERIMENTAL
|
||||
|
||||
[English](README_each.md)
|
||||
|
||||
- 追加された "MWB Each" について記載しています
|
||||
|
||||
- この機能は [note で公開した検討](https://note.com/bbcmc/n/n2d4765b4bd47) に使用するために制作したものです
|
||||
|
||||
- 一般的な情報については [README.md](README.md) を参照ください
|
||||
|
||||
- ****注意****
|
||||
|
||||
- 実験的な拡張ですので、使用にあたってはご注意ください
|
||||
|
||||

|
||||
|
||||
# Additional Features / 追加された機能
|
||||
|
||||
- [任意比率マージ](## 任意比率マージ)
|
||||
- [マルチマージ用コマンド入力窓](## マルチマージ用コマンド入力窓)
|
||||
- [使用可能な変数](### 使用可能な変数)
|
||||
- [個人用プリセットファイル](## 個人用プリセットファイル)
|
||||
|
||||
## 任意比率マージ
|
||||
|
||||
- Merge Block Weighted GUI を拡張し、マージ時に U-Net の各レイヤーについて、モデルA / モデルB を**任意の割合で**合成できるようにします
|
||||
|
||||
- UI 上に表示されているのは、モデル A と モデル B の比率のみです
|
||||
|
||||
- 例: 仮に右の比率でマージをする場合、IN_A_00: 0.5, IN_B_00:0.3, マージ処理で行われる式は以下のようなものになります
|
||||
|
||||
```
|
||||
result_IN_00 = 0.5 * model_A_IN_00 + 0.3 * model_B_IN_00
|
||||
```
|
||||
|
||||
## マルチマージ用コマンド入力窓
|
||||
|
||||
- 一行が一マージに対応します
|
||||
|
||||
- 基本は UI の設定を利用しますが、変更したいところだけ変数として入力するイメージです。
|
||||
|
||||
- 変数同士はカンマ `,` で区切る必要があります
|
||||
|
||||
### 使用可能な変数
|
||||
|
||||
- 使用可能な変数は以下の通りです
|
||||
|
||||
| 変数キーワード | 説明 | 例 |
|
||||
| ---------------- | ------------------------------------------------------------------------------ | --------------------------- |
|
||||
| O | 出力ファイル名。サブディレクトリ指定可能。ディレクトリが無い場合・ファイルがあって上書き不可な場合、skipします。末尾にckpt記載がない場合、追加します | O=merge/test03/test-merge |
|
||||
| IN_[AB]_[00-11] | INPUTブロックのマージ比率 | IN_A_01=0.12345 |
|
||||
| M_00 | MIDDLEブロックのマージ比率 | |
|
||||
| OUT_[AB]_[00-11] | OUTPUTブロックのマージ比率 | |
|
||||
| Model_A | マージに使用するモデル名 | Model_A=sd-v1-5-pruned.ckpt |
|
||||
| Model_B | マージに使用するモデル名 | Model_B=sd-v1-5-pruned.ckpt |
|
||||
| base_alpha | 層別マージされない場所のマージ比率。A:(1-base_alpha), B:base_alpha です | base_alpha=1.0 |
|
||||
| preset_weights | プリセット名で指定(Model B のマージ比率になります。Model A には 1-B の値が入ります) | preset_weights=GRAD_V |
|
||||
|
||||
- 例
|
||||
|
||||
```
|
||||
O=merge/test04/SD15-75-IN_00, IN_A_00=0.75
|
||||
Preset_Weights=ALL_A, O=merge/test06/SD15-WD13-2-8-OUT_11, OUT_A_11=0.2, OUT_B_11=0.8, Model_A=sd-v1-5-pruned, Model_B=wd-v1-3-float32
|
||||
```
|
||||
|
||||
- 1 度に 25 段マージまではテスト済みです.
|
||||
|
||||
## 個人用プリセットファイル
|
||||
|
||||
- 個人用のプリセット保存用に、`csv/preset_own.tsv` を読み込むようにしました
|
||||
- このファイルは github には置かれませんので、勝手に更新されることはありません
|
||||
- 読み込みは、preset_own.tsv, preset.tsv の順番で行われます
|
||||
- `preset_own.tsv` には、以下の 2 つの列が必要です(タブ区切りです)
|
||||

|
||||
|
|
@ -0,0 +1,81 @@
|
|||
# MBW Each - Experimental
|
||||
|
||||
[日本語_eachについて](README_each.ja.md)
|
||||
|
||||
- This document is for description of new features of **MWB Each** .
|
||||
- This new feature is developed for [personal study, publish on "note"](https://note.com/bbcmc/n/n2d4765b4bd47)
|
||||
- For information about general info as "How to install", go to [README.md](README.md)
|
||||
|
||||
**#### This is EXPERIMENTAL ####**
|
||||
|
||||

|
||||
|
||||
# Additional Features
|
||||
|
||||
- [Merge model-A and model-B by your ratio](## Merge model-A and model-B by your ratio)
|
||||
- [Multi merge command window](## Multi merge command window)
|
||||
- [Available variables](### Available variables)
|
||||
- [Personal Preset File](## Personal Preset File)
|
||||
|
||||
## Merge model-A and model-B by RATIO what you want
|
||||
|
||||
- merge models with supplied ratio.
|
||||
|
||||
- Preset works to Model B ratios, i.e. `IN_B_00`.
|
||||
|
||||
- example: if you use IN_A_00: 0.5, IN_B_00:0.3, merge run with equation as,
|
||||
|
||||
```
|
||||
result_IN_00 = 0.5 * model_A_IN_00 + 0.3 * model_B_IN_00
|
||||
```
|
||||
|
||||
## Multi merge command window
|
||||
|
||||
- You can run multiple merge in sequence, one after the other.
|
||||
|
||||
- 1 line represents 1 merge.
|
||||
|
||||
- Basically UI settings are used, but you can enter variables only where you want to make changes.
|
||||
|
||||
- Variables must be separated from each other by commas `,`.
|
||||
|
||||
- Variables are processed by order from before.
|
||||
Later specifications will overwrite them.
|
||||
|
||||
### Available variables
|
||||
|
||||
- available variables shown below,
|
||||
|
||||
| keywords | description | sample |
|
||||
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- |
|
||||
| O | Output file name. Subdirectories can be specified. Skip line if there is no directory or if there is a file and it cannot be overwritten. Add `.ckpt` at end of filename if dont exist | O=merge/test03/test-merge |
|
||||
| IN_[AB]_[00-11] | merge ratio of INPUT block | IN_A_01=0.12345 |
|
||||
| M_00 | merge ratio of MIDDLE block | |
|
||||
| OUT_[AB]_[00-11] | merge ratio of OUTPUT block | |
|
||||
| Model_A | model name | Model_A=sd-v1-5-pruned.ckpt |
|
||||
| Model_B | model name | Model_B=sd-v1-5-pruned.ckpt |
|
||||
| base_alpha | Merge ratio of places which not merged by layer. `A:(1-base_alpha), B:base_alpha` | base_alpha=0.0 |
|
||||
| preset_weights | Specify weights by preset name. Preset value go into ratio of model B, and 1-B on ratio of model A. | preset_weights=GRAD_V |
|
||||
|
||||
- Command sample
|
||||
|
||||
```
|
||||
O=merge/test04/SD15-75-IN_00, IN_A_00=0.75
|
||||
Preset_Weights=ALL_A, O=merge/test06/SD15-WD13-2-8-OUT_11, OUT_A_11=0.2, OUT_B_11=0.8, Model_A=sd-v1-5-pruned, Model_B=wd-v1-3-float32
|
||||
```
|
||||
|
||||
- tested with 25 merge, one time.
|
||||
|
||||
## Personal Preset File
|
||||
|
||||
- Add `preset_own.tsv` to save your own preset
|
||||
|
||||
- File path is `csv/preset_own.tsv`
|
||||
|
||||
- This file is **OUT OF CONTROL OF GIT**, which means do not overwrite with this repository update.
|
||||
|
||||
- preset files is loaded as order `preset_own.tsv`, `preset.tsv`
|
||||
|
||||
- `preset_own.tsv` needs two column, as below
|
||||
|
||||

|
||||
Binary file not shown.
|
After Width: | Height: | Size: 140 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 557 B |
|
|
@ -51,18 +51,18 @@ def on_ui_tabs():
|
|||
sl_IN_A_10 = gr.Slider(label="IN_A_10", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_10")
|
||||
sl_IN_A_11 = gr.Slider(label="IN_A_11", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_11")
|
||||
with gr.Column():
|
||||
sl_IN_B_00 = gr.Slider(label="IN_B_00", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_00")
|
||||
sl_IN_B_01 = gr.Slider(label="IN_B_01", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_01")
|
||||
sl_IN_B_02 = gr.Slider(label="IN_B_02", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_02")
|
||||
sl_IN_B_03 = gr.Slider(label="IN_B_03", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_03")
|
||||
sl_IN_B_04 = gr.Slider(label="IN_B_04", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_04")
|
||||
sl_IN_B_05 = gr.Slider(label="IN_B_05", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_05")
|
||||
sl_IN_B_06 = gr.Slider(label="IN_B_06", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_06")
|
||||
sl_IN_B_07 = gr.Slider(label="IN_B_07", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_07")
|
||||
sl_IN_B_08 = gr.Slider(label="IN_B_08", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_08")
|
||||
sl_IN_B_09 = gr.Slider(label="IN_B_09", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_09")
|
||||
sl_IN_B_10 = gr.Slider(label="IN_B_10", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_10")
|
||||
sl_IN_B_11 = gr.Slider(label="IN_B_11", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_A_11")
|
||||
sl_IN_B_00 = gr.Slider(label="IN_B_00", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_00")
|
||||
sl_IN_B_01 = gr.Slider(label="IN_B_01", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_01")
|
||||
sl_IN_B_02 = gr.Slider(label="IN_B_02", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_02")
|
||||
sl_IN_B_03 = gr.Slider(label="IN_B_03", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_03")
|
||||
sl_IN_B_04 = gr.Slider(label="IN_B_04", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_04")
|
||||
sl_IN_B_05 = gr.Slider(label="IN_B_05", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_05")
|
||||
sl_IN_B_06 = gr.Slider(label="IN_B_06", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_06")
|
||||
sl_IN_B_07 = gr.Slider(label="IN_B_07", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_07")
|
||||
sl_IN_B_08 = gr.Slider(label="IN_B_08", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_08")
|
||||
sl_IN_B_09 = gr.Slider(label="IN_B_09", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_09")
|
||||
sl_IN_B_10 = gr.Slider(label="IN_B_10", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_10")
|
||||
sl_IN_B_11 = gr.Slider(label="IN_B_11", minimum=0, maximum=1, step=0.00000000001, value=0.5, elem_id="sl_IN_B_11")
|
||||
with gr.Column():
|
||||
gr.Slider(visible=False)
|
||||
gr.Slider(visible=False)
|
||||
|
|
|
|||
Loading…
Reference in New Issue