74
README.md
|
|
@ -4,12 +4,14 @@
|
||||||
- Implementation GUI of [Merge Block Weighted] (https://note.com/kohya_ss/n/n9a485a066d5b) idea by kohya_ss
|
- 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.
|
- change some part of script to adjust for AUTO1111, basic method is not changed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Recent Update
|
# Recent Update
|
||||||
|
|
||||||
- 2022/12/25: Add new feature and new UI
|
- 2023/01/12: Add some function
|
||||||
|
- Save as half
|
||||||
|
- Save as safetensors
|
||||||
|
- Select of "Skip/Reset CKIP `position_ids`"
|
||||||
|
|
||||||
|
- 2022/12/25: Add new feature and new UI
|
||||||
- Read "README" [English](README_each.md)/[日本語](README_each.ja.md)
|
- Read "README" [English](README_each.md)/[日本語](README_each.ja.md)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -21,22 +23,31 @@
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
<!--ts-->
|
<!--ts-->
|
||||||
* [How to Install](#how-to-install)
|
|
||||||
* [How to use](#how-to-use)
|
* [How to Install](#how-to-install)
|
||||||
* [Select `model_A` and `model_B`, and input `Output model name`](#select-model_a-and-model_b-and-input-output-model-name)
|
|
||||||
* [Set merge ratio for each block of U-Net](#set-merge-ratio-for-each-block-of-u-net)
|
* [How to use](#how-to-use)
|
||||||
* [Setting values](#setting-values)
|
|
||||||
* [Other settings](other-settings)
|
* [Select `model_A` and `model_B`, and input `Output model name`](#select-model_a-and-model_b-and-input-output-model-name)
|
||||||
* [Other function](#other-function)
|
* [Set merge ratio for each block of U-Net](#set-merge-ratio-for-each-block-of-u-net)
|
||||||
* [Save Merge Log](#save-merge-log)
|
* [Setting values](#setting-values)
|
||||||
* [Sample/Example](#sampleexample)
|
* [Other settings](other-settings)
|
||||||
* [result (x/y)](#result-xy)
|
|
||||||
* [後述1: weight1](#%E5%BE%8C%E8%BF%B01-weight1)
|
* [Other function](#other-function)
|
||||||
* [後述2: weight2](#%E5%BE%8C%E8%BF%B02-weight2)
|
|
||||||
* [Preset's grids](#presets-grids)
|
* [Save Merge Log](#save-merge-log)
|
||||||
* [Examples of Sigmoid-like Functions](#examples-of-sigmoid-like-functions)
|
|
||||||
* [Special Thanks](#special-thanks)
|
* [Sample/Example](#sampleexample)
|
||||||
<!--te-->
|
|
||||||
|
* [result (x/y)](#result-xy)
|
||||||
|
* [後述1: weight1](#%E5%BE%8C%E8%BF%B01-weight1)
|
||||||
|
* [後述2: weight2](#%E5%BE%8C%E8%BF%B02-weight2)
|
||||||
|
* [Preset's grids](#presets-grids)
|
||||||
|
* [Examples of Sigmoid-like Functions](#examples-of-sigmoid-like-functions)
|
||||||
|
|
||||||
|
* [Special Thanks](#special-thanks)
|
||||||
|
|
||||||
|
<!--te-->
|
||||||
|
|
||||||
## How to Install
|
## How to Install
|
||||||
|
|
||||||
|
|
@ -78,10 +89,12 @@
|
||||||
|
|
||||||
- Weights must have 25 values and comma separated
|
- Weights must have 25 values and comma separated
|
||||||
|
|
||||||
### Setting values
|
## Setting values
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
### base_alpha
|
||||||
|
|
||||||
- set "base_alpha"
|
- set "base_alpha"
|
||||||
|
|
||||||
| base_alpha | |
|
| base_alpha | |
|
||||||
|
|
@ -98,6 +111,27 @@
|
||||||
|
|
||||||
- Merged output is saved in normal "Model" folder.
|
- Merged output is saved in normal "Model" folder.
|
||||||
|
|
||||||
|
### Save as half / safetensors
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- Settings about save
|
||||||
|
|
||||||
|
- "Save as half" mean float16
|
||||||
|
|
||||||
|
- "Save as safetensors". If you set your output file ext as `.safetensors`, automaticaly saved as safetensors with/without this setting.
|
||||||
|
|
||||||
|
### Skip/Reset CKIP `position_ids`key value
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- In this function, you can select treatment of `position_ids` value in CLIP.
|
||||||
|
- Values in this key controls matching of your prompt and embeddings.
|
||||||
|
- I've try to found the cause of 'Some model ignore No.1 token(word)' problem, and write some report about that. (https://note.com/bbcmc/n/n12c05bf109cc)
|
||||||
|
- Arenatemp already have spectation of inside of models, and published Extension to fix this CLIP key problem. See also,
|
||||||
|
- [stable-diffusion-webui-model-toolkit](https://github.com/arenatemp/stable-diffusion-webui-model-toolkit)
|
||||||
|
- MBW is also affected by this problem, because some model may (potensialy) have this issue, and causes/transfer some trouble to merged result model.
|
||||||
|
|
||||||
## Other function
|
## Other function
|
||||||
|
|
||||||
### Save Merge Log
|
### Save Merge Log
|
||||||
|
|
|
||||||
BIN
misc/bw01-1.png
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 122 KiB |
BIN
misc/bw01.png
|
Before Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 158 KiB |
|
|
@ -17,11 +17,11 @@ def on_ui_tabs():
|
||||||
with gr.Column():
|
with gr.Column():
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
with gr.Column(variant="panel"):
|
with gr.Column(variant="panel"):
|
||||||
|
html_output_block_weight_info = gr.HTML()
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
btn_do_merge_block_weighted = gr.Button(value="Run Merge", variant="primary")
|
btn_do_merge_block_weighted = gr.Button(value="Run Merge", variant="primary")
|
||||||
btn_clear_weight = gr.Button(value="Clear values")
|
btn_clear_weight = gr.Button(value="Clear values")
|
||||||
btn_reload_checkpoint_mbw = gr.Button(value="Reload checkpoint")
|
btn_reload_checkpoint_mbw = gr.Button(value="Reload checkpoint")
|
||||||
html_output_block_weight_info = gr.HTML()
|
|
||||||
with gr.Column():
|
with gr.Column():
|
||||||
dd_preset_weight = gr.Dropdown(label="Preset Weights", choices=presetWeights.get_preset_name_list())
|
dd_preset_weight = gr.Dropdown(label="Preset Weights", choices=presetWeights.get_preset_name_list())
|
||||||
txt_block_weight = gr.Text(label="Weight values", placeholder="Put weight sets. float number x 25")
|
txt_block_weight = gr.Text(label="Weight values", placeholder="Put weight sets. float number x 25")
|
||||||
|
|
@ -32,10 +32,11 @@ def on_ui_tabs():
|
||||||
chk_allow_overwrite = gr.Checkbox(label="Allow overwrite output-model", value=False)
|
chk_allow_overwrite = gr.Checkbox(label="Allow overwrite output-model", value=False)
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
with gr.Column(scale=3):
|
with gr.Column(scale=3):
|
||||||
chk_save_as_half = gr.Checkbox(label="Save as half", value=False)
|
with gr.Row():
|
||||||
chk_save_as_safetensors = gr.Checkbox(label="Save as safetensors", value=False)
|
chk_save_as_half = gr.Checkbox(label="Save as half", value=False)
|
||||||
|
chk_save_as_safetensors = gr.Checkbox(label="Save as safetensors", value=False)
|
||||||
with gr.Column(scale=4):
|
with gr.Column(scale=4):
|
||||||
radio_position_ids = gr.Radio(label="Skip/Reset CLIP position_ids", choices=["None", "Skip", "Force Reset"], value="Skip", type="index")
|
radio_position_ids = gr.Radio(label="Skip/Reset CLIP position_ids", choices=["None", "Skip", "Force Reset"], value="None", type="index")
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
model_A = gr.Dropdown(label="Model A", choices=sd_models.checkpoint_tiles())
|
model_A = gr.Dropdown(label="Model A", choices=sd_models.checkpoint_tiles())
|
||||||
model_B = gr.Dropdown(label="Model B", choices=sd_models.checkpoint_tiles())
|
model_B = gr.Dropdown(label="Model B", choices=sd_models.checkpoint_tiles())
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,13 @@ def on_ui_tabs():
|
||||||
with gr.Column():
|
with gr.Column():
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
with gr.Column(variant="panel"):
|
with gr.Column(variant="panel"):
|
||||||
|
with gr.Row():
|
||||||
|
txt_multi_process_cmd = gr.TextArea(label="Multi Proc Cmd", placeholder="Keep empty if dont use.")
|
||||||
|
html_output_block_weight_info = gr.HTML()
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
btn_do_merge_block_weighted = gr.Button(value="Run Merge", variant="primary")
|
btn_do_merge_block_weighted = gr.Button(value="Run Merge", variant="primary")
|
||||||
btn_clear_weighted = gr.Button(value="Clear values")
|
btn_clear_weighted = gr.Button(value="Clear values")
|
||||||
btn_reload_checkpoint_mbw = gr.Button(value="Reload checkpoint")
|
btn_reload_checkpoint_mbw = gr.Button(value="Reload checkpoint")
|
||||||
with gr.Row():
|
|
||||||
txt_multi_process_cmd = gr.TextArea(label="Multi Proc Cmd", placeholder="Keep empty if dont use.")
|
|
||||||
html_output_block_weight_info = gr.HTML()
|
|
||||||
with gr.Column():
|
with gr.Column():
|
||||||
dd_preset_weight = gr.Dropdown(label="Preset_Weights", choices=presetWeights.get_preset_name_list())
|
dd_preset_weight = gr.Dropdown(label="Preset_Weights", choices=presetWeights.get_preset_name_list())
|
||||||
txt_block_weight = gr.Text(label="Weight_values", placeholder="Put weight sets. float number x 25")
|
txt_block_weight = gr.Text(label="Weight_values", placeholder="Put weight sets. float number x 25")
|
||||||
|
|
@ -34,10 +34,11 @@ def on_ui_tabs():
|
||||||
chk_allow_overwrite = gr.Checkbox(label="Allow overwrite output-model", value=False)
|
chk_allow_overwrite = gr.Checkbox(label="Allow overwrite output-model", value=False)
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
with gr.Column(scale=3):
|
with gr.Column(scale=3):
|
||||||
chk_save_as_half = gr.Checkbox(label="Save as half", value=False)
|
with gr.Row():
|
||||||
chk_save_as_safetensors = gr.Checkbox(label="Save as safetensors", value=False)
|
chk_save_as_half = gr.Checkbox(label="Save as half", value=False)
|
||||||
|
chk_save_as_safetensors = gr.Checkbox(label="Save as safetensors", value=False)
|
||||||
with gr.Column(scale=4):
|
with gr.Column(scale=4):
|
||||||
radio_position_ids = gr.Radio(label="Skip/Reset CLIP position_ids", choices=["None", "Skip", "Force Reset"], value="Skip", type="index")
|
radio_position_ids = gr.Radio(label="Skip/Reset CLIP position_ids", choices=["None", "Skip", "Force Reset"], value="None", type="index")
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
dd_model_A = gr.Dropdown(label="Model_A", choices=sd_models.checkpoint_tiles())
|
dd_model_A = gr.Dropdown(label="Model_A", choices=sd_models.checkpoint_tiles())
|
||||||
dd_model_B = gr.Dropdown(label="Model_B", choices=sd_models.checkpoint_tiles())
|
dd_model_B = gr.Dropdown(label="Model_B", choices=sd_models.checkpoint_tiles())
|
||||||
|
|
|
||||||