Update and Fix
update: update for new "run_modelmerger" function (#1) with backward compatibility for old-style run_modelmerger add: add support for "Checkpoint format", UI and recipe fix: "fp16" on recipe now applied to UI correctly refact: add cmd line print of errormaster
parent
f323b7ea55
commit
1ccbbcbde4
14
README.md
14
README.md
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
- i.e.) in second lane, you can specify model as `modelA(A2): __O1__`
|
||||
|
||||
- can not use future output as variable
|
||||
- can not use future(not yet generated) output as variable
|
||||
|
||||
- bad example) in second lane, `modelA(A2): __O3__`
|
||||
|
||||
|
|
@ -48,6 +48,12 @@
|
|||
|  | Multiplier digit is extended to 0.001 step. |
|
||||
|  | Merging method. Weighted Sum, Add difference, Sigmoid. Implementation of "Sigmoid" is from old-days A1111 code, and this value is exchanged by inv-sigmoid in merging process and used as Weighted Sum. |
|
||||
|
||||
- "Checkpoint format"
|
||||
|
||||
- For backward compatibility, if old "run_modelmerger" found, force "ckpt" as "(CF)Checkpoint format" setting
|
||||
|
||||

|
||||
|
||||
## Recipe
|
||||
|
||||

|
||||
|
|
@ -105,9 +111,9 @@
|
|||
```
|
||||
# Sample Recipe
|
||||
a14 = __SD14__ + __F222__, 0.5
|
||||
a15 = __SD15__ + __F222__, 0.5
|
||||
mix14 = __O1__ + __WD13__ + __SD14__, 1.0
|
||||
mix15 = __O2__ + __WD13__ + __SD14__, 1.0
|
||||
a15 = __SD15__ + __F222__, 0.5, fp16
|
||||
mix14 = __O1__ + __WD13__ + __SD14__, 1.0, safetensors
|
||||
mix15 = __O2__ + __WD13__ + __SD14__, 1.0, fp16, safetensors
|
||||
|
||||
# variables
|
||||
__F222__ # You can use F111 instead.
|
||||
|
|
|
|||
BIN
misc/ss01.png
BIN
misc/ss01.png
Binary file not shown.
|
Before Width: | Height: | Size: 196 KiB After Width: | Height: | Size: 201 KiB |
BIN
misc/ss02_f.png
BIN
misc/ss02_f.png
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -27,16 +27,16 @@ def on_ui_tabs():
|
|||
|
||||
#UI:Multi-Merge
|
||||
btn_run_merge, btn_reload_checkpoints, btn_send_to_recipe, submit_result, btn_clear_merge_settings, \
|
||||
A1, B1, C1, M1, S1, F1, O1, \
|
||||
A2, B2, C2, M2, S2, F2, O2, \
|
||||
A3, B3, C3, M3, S3, F3, O3, \
|
||||
A4, B4, C4, M4, S4, F4, O4, \
|
||||
A5, B5, C5, M5, S5, F5, O5, \
|
||||
A6, B6, C6, M6, S6, F6, O6, \
|
||||
A7, B7, C7, M7, S7, F7, O7, \
|
||||
A8, B8, C8, M8, S8, F8, O8, \
|
||||
A9, B9, C9, M9, S9, F9, O9, \
|
||||
A10,B10,C10,M10,S10,F10,O10,\
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1, \
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2, \
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3, \
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4, \
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5, \
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6, \
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7, \
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8, \
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9, \
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10, \
|
||||
_checkpoint_listener = ui_merge.on_ui_tabs()
|
||||
|
||||
# UI:Recipe
|
||||
|
|
@ -108,28 +108,28 @@ def on_ui_tabs():
|
|||
#
|
||||
# == Multi Merge ==
|
||||
def modelmerger(
|
||||
A1, B1, C1, M1, S1, F1, O1,
|
||||
A2, B2, C2, M2, S2, F2, O2,
|
||||
A3, B3, C3, M3, S3, F3, O3,
|
||||
A4, B4, C4, M4, S4, F4, O4,
|
||||
A5, B5, C5, M5, S5, F5, O5,
|
||||
A6, B6, C6, M6, S6, F6, O6,
|
||||
A7, B7, C7, M7, S7, F7, O7,
|
||||
A8, B8, C8, M8, S8, F8, O8,
|
||||
A9, B9, C9, M9, S9, F9, O9,
|
||||
A10,B10,C10,M10,S10,F10,O10
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1,
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2,
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3,
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4,
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5,
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6,
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7,
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8,
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9,
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10
|
||||
):
|
||||
merge_ope = MergeOperation()
|
||||
merge_ope.add_merge(1, A1, B1, C1, M1, S1, F1, O1)
|
||||
merge_ope.add_merge(2, A2, B2, C2, M2, S2, F2, O2)
|
||||
merge_ope.add_merge(3, A3, B3, C3, M3, S3, F3, O3)
|
||||
merge_ope.add_merge(4, A4, B4, C4, M4, S4, F4, O4)
|
||||
merge_ope.add_merge(5, A5, B5, C5, M5, S5, F5, O5)
|
||||
merge_ope.add_merge(6, A6, B6, C6, M6, S6, F6, O6)
|
||||
merge_ope.add_merge(7, A7, B7, C7, M7, S7, F7, O7)
|
||||
merge_ope.add_merge(8, A8, B8, C8, M8, S8, F8, O8)
|
||||
merge_ope.add_merge(9, A9, B9, C9, M9, S9, F9, O9)
|
||||
merge_ope.add_merge(10,A10,B10,C10,M10,S10,F10,O10)
|
||||
merge_ope.add_merge(1, A1, B1, C1, M1, S1, F1, O1, CF1)
|
||||
merge_ope.add_merge(2, A2, B2, C2, M2, S2, F2, O2, CF2)
|
||||
merge_ope.add_merge(3, A3, B3, C3, M3, S3, F3, O3, CF3)
|
||||
merge_ope.add_merge(4, A4, B4, C4, M4, S4, F4, O4, CF4)
|
||||
merge_ope.add_merge(5, A5, B5, C5, M5, S5, F5, O5, CF5)
|
||||
merge_ope.add_merge(6, A6, B6, C6, M6, S6, F6, O6, CF6)
|
||||
merge_ope.add_merge(7, A7, B7, C7, M7, S7, F7, O7, CF7)
|
||||
merge_ope.add_merge(8, A8, B8, C8, M8, S8, F8, O8, CF8)
|
||||
merge_ope.add_merge(9, A9, B9, C9, M9, S9, F9, O9, CF9)
|
||||
merge_ope.add_merge(10,A10,B10,C10,M10,S10,F10,O10,CF10)
|
||||
|
||||
if not merge_ope.can_process():
|
||||
return "Error loading merge settings. A or B missing."
|
||||
|
|
@ -154,16 +154,16 @@ def on_ui_tabs():
|
|||
btn_run_merge.click(
|
||||
fn=modelmerger,
|
||||
inputs=[
|
||||
A1, B1, C1, M1, S1, F1, O1,
|
||||
A2, B2, C2, M2, S2, F2, O2,
|
||||
A3, B3, C3, M3, S3, F3, O3,
|
||||
A4, B4, C4, M4, S4, F4, O4,
|
||||
A5, B5, C5, M5, S5, F5, O5,
|
||||
A6, B6, C6, M6, S6, F6, O6,
|
||||
A7, B7, C7, M7, S7, F7, O7,
|
||||
A8, B8, C8, M8, S8, F8, O8,
|
||||
A9, B9, C9, M9, S9, F9, O9,
|
||||
A10,B10,C10,M10,S10,F10,O10
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1,
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2,
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3,
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4,
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5,
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6,
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7,
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8,
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9,
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10
|
||||
],
|
||||
outputs=[submit_result]
|
||||
)
|
||||
|
|
@ -179,42 +179,42 @@ def on_ui_tabs():
|
|||
|
||||
# on UI:Merge to UI:Recipe
|
||||
def on_send_to_recipe(
|
||||
A1, B1, C1, M1, S1, F1, O1,
|
||||
A2, B2, C2, M2, S2, F2, O2,
|
||||
A3, B3, C3, M3, S3, F3, O3,
|
||||
A4, B4, C4, M4, S4, F4, O4,
|
||||
A5, B5, C5, M5, S5, F5, O5,
|
||||
A6, B6, C6, M6, S6, F6, O6,
|
||||
A7, B7, C7, M7, S7, F7, O7,
|
||||
A8, B8, C8, M8, S8, F8, O8,
|
||||
A9, B9, C9, M9, S9, F9, O9,
|
||||
A10,B10,C10,M10,S10,F10,O10
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1,
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2,
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3,
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4,
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5,
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6,
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7,
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8,
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9,
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10
|
||||
):
|
||||
_parser = RecipeParser()
|
||||
_parser.send_to_recipe(A1, B1, C1, O1, M1, S1, F1)
|
||||
_parser.send_to_recipe(A2, B2, C2, O2, M2, S2, F2)
|
||||
_parser.send_to_recipe(A3, B3, C3, O3, M3, S3, F3)
|
||||
_parser.send_to_recipe(A4, B4, C4, O4, M4, S4, F4)
|
||||
_parser.send_to_recipe(A5, B5, C5, O5, M5, S5, F5)
|
||||
_parser.send_to_recipe(A6, B6, C6, O6, M6, S6, F6)
|
||||
_parser.send_to_recipe(A7, B7, C7, O7, M7, S7, F7)
|
||||
_parser.send_to_recipe(A8, B8, C8, O8, M8, S8, F8)
|
||||
_parser.send_to_recipe(A9, B9, C9, O9, M9, S9, F9)
|
||||
_parser.send_to_recipe(A10,B10,C10,O10,M10,S10,F10)
|
||||
_parser.send_to_recipe(A1, B1, C1, O1, M1, S1, F1, CF1)
|
||||
_parser.send_to_recipe(A2, B2, C2, O2, M2, S2, F2, CF2)
|
||||
_parser.send_to_recipe(A3, B3, C3, O3, M3, S3, F3, CF3)
|
||||
_parser.send_to_recipe(A4, B4, C4, O4, M4, S4, F4, CF4)
|
||||
_parser.send_to_recipe(A5, B5, C5, O5, M5, S5, F5, CF5)
|
||||
_parser.send_to_recipe(A6, B6, C6, O6, M6, S6, F6, CF6)
|
||||
_parser.send_to_recipe(A7, B7, C7, O7, M7, S7, F7, CF7)
|
||||
_parser.send_to_recipe(A8, B8, C8, O8, M8, S8, F8, CF8)
|
||||
_parser.send_to_recipe(A9, B9, C9, O9, M9, S9, F9, CF9)
|
||||
_parser.send_to_recipe(A10,B10,C10,O10,M10,S10,F10,CF10)
|
||||
return [gr.update(value=_parser.output_txt()), gr.update(value="")]
|
||||
btn_send_to_recipe.click(
|
||||
fn=on_send_to_recipe,
|
||||
inputs=[
|
||||
A1, B1, C1, M1, S1, F1, O1,
|
||||
A2, B2, C2, M2, S2, F2, O2,
|
||||
A3, B3, C3, M3, S3, F3, O3,
|
||||
A4, B4, C4, M4, S4, F4, O4,
|
||||
A5, B5, C5, M5, S5, F5, O5,
|
||||
A6, B6, C6, M6, S6, F6, O6,
|
||||
A7, B7, C7, M7, S7, F7, O7,
|
||||
A8, B8, C8, M8, S8, F8, O8,
|
||||
A9, B9, C9, M9, S9, F9, O9,
|
||||
A10,B10,C10,M10,S10,F10,O10
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1,
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2,
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3,
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4,
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5,
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6,
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7,
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8,
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9,
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10
|
||||
],
|
||||
outputs=[txt_recipe, txt_parse_result],
|
||||
_js="select_tab_recipe"
|
||||
|
|
@ -284,16 +284,16 @@ def on_ui_tabs():
|
|||
fn=on_send_recipe_to_merge,
|
||||
inputs=[txt_recipe] + vars_list,
|
||||
outputs=[
|
||||
A1, B1, C1, M1, S1, F1, O1,
|
||||
A2, B2, C2, M2, S2, F2, O2,
|
||||
A3, B3, C3, M3, S3, F3, O3,
|
||||
A4, B4, C4, M4, S4, F4, O4,
|
||||
A5, B5, C5, M5, S5, F5, O5,
|
||||
A6, B6, C6, M6, S6, F6, O6,
|
||||
A7, B7, C7, M7, S7, F7, O7,
|
||||
A8, B8, C8, M8, S8, F8, O8,
|
||||
A9, B9, C9, M9, S9, F9, O9,
|
||||
A10,B10,C10,M10,S10,F10,O10
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1,
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2,
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3,
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4,
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5,
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6,
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7,
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8,
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9,
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10
|
||||
],
|
||||
_js="select_tab_merge"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@ class MergeOperation:
|
|||
_ret = _ret and _recipe.can_process()
|
||||
return _ret
|
||||
|
||||
def add_merge(self, index, A, B, C, M, S, F, O):
|
||||
def add_merge(self, index, A, B, C, M, S, F, O, CF):
|
||||
if index and index != "" and index >= 0:
|
||||
_recipe = MergeRecipe(A, B, C, O, M, S, F)
|
||||
_recipe = MergeRecipe(A, B, C, O, M, S, F, CF)
|
||||
if _recipe.can_process():
|
||||
self.recipes.update({index: _recipe})
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ choise_of_method = [S_WS, S_AD, S_SG]
|
|||
|
||||
|
||||
class MergeRecipe():
|
||||
def __init__(self, A, B, C, O, M, S, F):
|
||||
def __init__(self, A, B, C, O, M, S, F:bool, CF):
|
||||
if C == None:
|
||||
C = ""
|
||||
if O == None:
|
||||
|
|
@ -23,6 +23,7 @@ class MergeRecipe():
|
|||
self.row_M = M
|
||||
self.row_S = S
|
||||
self.row_F = F
|
||||
self.row_CF = CF if CF in ["ckpt", "safetensors"] else "ckpt"
|
||||
|
||||
self.A = A
|
||||
self.B = B
|
||||
|
|
@ -30,7 +31,8 @@ class MergeRecipe():
|
|||
self.O = O
|
||||
self.S = self._adjust_method(method=S, model_C=C)
|
||||
self.M = self._adjust_multi_by_method(method=S, multi=M)
|
||||
self.F = (F == "True")
|
||||
self.F = self.row_F
|
||||
self.CF = self.row_CF
|
||||
|
||||
self.vars = {} # runtime variables
|
||||
|
||||
|
|
@ -65,6 +67,7 @@ class MergeRecipe():
|
|||
print(f" M: {self.M}")
|
||||
print(f" F: {self.F}")
|
||||
print(f" O: {self.O}")
|
||||
print(f" CF: {self.CF}")
|
||||
|
||||
try:
|
||||
results = extras.run_modelmerger(
|
||||
|
|
@ -74,12 +77,34 @@ class MergeRecipe():
|
|||
self.S,
|
||||
self.M,
|
||||
self.F,
|
||||
self.O
|
||||
self.O,
|
||||
self.CF
|
||||
)
|
||||
except TypeError as te:
|
||||
# backward compatibility for change of run_modelmerger
|
||||
# 2022/11/27
|
||||
# https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/dac9b6f15de5e675053d9490a20e0457dcd1a23e/modules/extras.py#L253
|
||||
print("Try to use old 'run_modelmerger' params. 'Checkpoint format is forced to 'ckpt'")
|
||||
try:
|
||||
results = extras.run_modelmerger(
|
||||
self.A,
|
||||
self.B,
|
||||
self.C,
|
||||
self.S,
|
||||
self.M,
|
||||
self.F,
|
||||
self.O
|
||||
)
|
||||
except Exception as e:
|
||||
print(type(e))
|
||||
print(e)
|
||||
return ["Error", "Error"]
|
||||
except Exception as e:
|
||||
print("Error loading/saving model file:", file=sys.stderr)
|
||||
print(type(e))
|
||||
print(e)
|
||||
sd_models.list_models() # to remove the potentially missing models from the list
|
||||
return "Error: loading/saving model file. It doesn't exist or the name contains illegal characters"
|
||||
return ["Error: loading/saving model file. It doesn't exist or the name contains illegal characters"] *2
|
||||
|
||||
# update vars
|
||||
self._update_o_filename(index, results[0])
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ class RecipeParser():
|
|||
# self.recipes = {} # {"1": recipe_1}
|
||||
self.recipes, self.vars_system, self.vars_user, self.vars_txt = self._parse_recipe(self.txt_recipe)
|
||||
|
||||
def send_to_recipe(self, A, B, C, O, M, S, F):
|
||||
def send_to_recipe(self, A, B, C, O, M, S, F, CF):
|
||||
def _get_modelname(X):
|
||||
if X and X != "":
|
||||
_model = sd_models.get_closet_checkpoint_match(X)
|
||||
|
|
@ -26,7 +26,7 @@ class RecipeParser():
|
|||
return os.path.splitext(os.path.basename(_model.filename))[0]
|
||||
return X
|
||||
|
||||
_recipe = MergeRecipe(A, B, C, O, M, S, F)
|
||||
_recipe = MergeRecipe(A, B, C, O, M, S, F, CF)
|
||||
if _recipe.can_process():
|
||||
_index = len(self.recipes) + 1
|
||||
if re.search("__[O]{1}\d+__", _recipe.A):
|
||||
|
|
@ -52,9 +52,10 @@ class RecipeParser():
|
|||
else:
|
||||
_ret += f"{_recipe.O} = {_recipe.A} + {_recipe.B}, {_recipe.M}"
|
||||
if _recipe.F:
|
||||
_ret += ", fp16\n"
|
||||
else:
|
||||
_ret += "\n"
|
||||
_ret += ", fp16"
|
||||
if _recipe.CF:
|
||||
_ret += f", {_recipe.CF}"
|
||||
_ret += "\n"
|
||||
#
|
||||
_ret += "\n# Variables(System) \n"
|
||||
for _item in self.vars_system.keys():
|
||||
|
|
@ -77,29 +78,34 @@ class RecipeParser():
|
|||
_C = None
|
||||
_M = _line_recipe.strip().split("=")[1].split(",")[1]
|
||||
try:
|
||||
_F = _line_recipe.strip().split("=")[1].split(",")[2]
|
||||
_F = True if "fp16" in [x.strip() for x in _line_recipe.strip().split("=")[1].split(",")[2:]] else False
|
||||
except:
|
||||
_F = None
|
||||
_F = False
|
||||
try:
|
||||
_CF = "safetensors" if "safetensors" in [x.strip() for x in _line_recipe.strip().split("=")[1].split(",")[2:]] else "ckpt"
|
||||
except:
|
||||
_CF = "ckpt"
|
||||
|
||||
if not _C:
|
||||
_S = S_WS
|
||||
else:
|
||||
_S = S_AD
|
||||
if _F:
|
||||
_F = True
|
||||
else:
|
||||
_F = False
|
||||
_ret = {"A": _A, "B": _B, "C": _C, "O": _O, "M": _M, "F": _F, "S": _S}
|
||||
|
||||
_ret = {"A": _A, "B": _B, "C": _C, "O": _O, "M": _M, "F": _F, "S": _S, "CF": _CF}
|
||||
|
||||
# check vals
|
||||
_vars_system = {}
|
||||
_vars_user = {}
|
||||
for value in _ret.values():
|
||||
if value and len(value.strip().split("__")) > 2:
|
||||
if re.search("__[O]{1}\d+__", value):
|
||||
_vars_system.update({value:""})
|
||||
else:
|
||||
_vars_user.update({value:""})
|
||||
_ret_recipe = MergeRecipe(_A, _B, _C, _O, _M, _S, _F)
|
||||
try:
|
||||
if value and len(value.strip().split("__")) > 2:
|
||||
if re.search("__[O]{1}\d+__", value):
|
||||
_vars_system.update({value:""})
|
||||
else:
|
||||
_vars_user.update({value:""})
|
||||
except:
|
||||
pass
|
||||
_ret_recipe = MergeRecipe(_A, _B, _C, _O, _M, _S, _F, _CF)
|
||||
return _ret_recipe, _vars_system, _vars_user
|
||||
|
||||
def _dispatch_variable(_line_variable):
|
||||
|
|
@ -179,16 +185,16 @@ class RecipeParser():
|
|||
def output_grupdate_uimerge(self):
|
||||
"""
|
||||
update gr in UI:Multi-Merge
|
||||
A1, B1, C1, M1, S1, F1, O1,
|
||||
A2, B2, C2, M2, S2, F2, O2,
|
||||
A3, B3, C3, M3, S3, F3, O3,
|
||||
A4, B4, C4, M4, S4, F4, O4,
|
||||
A5, B5, C5, M5, S5, F5, O5,
|
||||
A6, B6, C6, M6, S6, F6, O6,
|
||||
A7, B7, C7, M7, S7, F7, O7,
|
||||
A8, B8, C8, M8, S8, F8, O8,
|
||||
A9, B9, C9, M9, S9, F9, O9,
|
||||
A10,B10,C10,M10,S10,F10,O10
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1,
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2,
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3,
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4,
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5,
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6,
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7,
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8,
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9,
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10
|
||||
"""
|
||||
def _get_model_title(X):
|
||||
if X and X != "" and X != None:
|
||||
|
|
@ -209,10 +215,11 @@ class RecipeParser():
|
|||
_ret.append(gr.update(value=_recipe.S))
|
||||
_ret.append(gr.update(value=_recipe.F))
|
||||
_ret.append(gr.update(value=_recipe.O))
|
||||
_ret.append(gr.update(value=_recipe.CF))
|
||||
_ret_all += _ret
|
||||
index += 1
|
||||
for i in range(index, 10):
|
||||
_ret = [None,None,None,None,None,None,None]
|
||||
_ret = [None,None,None,None,None,None,None,None]
|
||||
_ret_all += _ret
|
||||
return _ret_all
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,8 @@ def on_ui_tabs():
|
|||
O1 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M1 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S1 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F1 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F1 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF1 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A1, B1, C1]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -51,7 +52,8 @@ def on_ui_tabs():
|
|||
O2 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M2 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S2 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F2 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F2 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF2 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A2, B2, C2]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -63,7 +65,8 @@ def on_ui_tabs():
|
|||
O3 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M3 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S3 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F3 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F3 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF3 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A3, B3, C3]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -75,7 +78,8 @@ def on_ui_tabs():
|
|||
O4 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M4 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S4 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F4 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F4 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF4 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A4, B4, C4]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -87,7 +91,8 @@ def on_ui_tabs():
|
|||
O5 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M5 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S5 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F5 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F5 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF5 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A5, B5, C5]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -99,7 +104,8 @@ def on_ui_tabs():
|
|||
O6 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M6 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S6 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F6 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F6 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF6 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A6, B6, C6]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -111,7 +117,8 @@ def on_ui_tabs():
|
|||
O7 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M7 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S7 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F7 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F7 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF7 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A7, B7, C7]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -123,7 +130,8 @@ def on_ui_tabs():
|
|||
O8 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M8 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S8 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F8 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F8 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF8 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A8, B8, C8]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -135,7 +143,8 @@ def on_ui_tabs():
|
|||
O9 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M9 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S9 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F9 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F9 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF9 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A9, B9, C9]
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -147,7 +156,8 @@ def on_ui_tabs():
|
|||
O10 = gr.Textbox(label=f"(O{_line_number}) Output ckpt Name", interactive=True)
|
||||
M10 = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label=f'(M{_line_number}) Multiplier', value=0.5, interactive=True)
|
||||
S10 = gr.Dropdown(choices=choise_of_method, interactive=True, value=choise_of_method[0], label=f"(S{_line_number}) Inter-Method")
|
||||
F10 = gr.Checkbox(value=False, interactive=True, label="Save as float16")
|
||||
F10 = gr.Checkbox(value=False, interactive=True, label=f"(F{_line_number}) Save as float16")
|
||||
CF10 = gr.Radio(choices=["ckpt", "safetensors"], interactive=True, value="ckpt", label=f"(CF{_line_number}) Checkpoint format")
|
||||
_checkpoint_listener += [A10, B10, C10]
|
||||
|
||||
#
|
||||
|
|
@ -155,45 +165,45 @@ def on_ui_tabs():
|
|||
#
|
||||
def on_clear_settings():
|
||||
_ret = [
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value="")
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt"),
|
||||
gr.update(value=""),gr.update(value=""),gr.update(value=""),gr.update(value=0.5),gr.update(value=S_WS),gr.update(value=False),gr.update(value=""),gr.update(value="ckpt")
|
||||
]
|
||||
return _ret
|
||||
btn_clear_merge_settings.click(
|
||||
fn=on_clear_settings,
|
||||
inputs=[],
|
||||
outputs=[
|
||||
A1, B1, C1, M1, S1, F1, O1, \
|
||||
A2, B2, C2, M2, S2, F2, O2, \
|
||||
A3, B3, C3, M3, S3, F3, O3, \
|
||||
A4, B4, C4, M4, S4, F4, O4, \
|
||||
A5, B5, C5, M5, S5, F5, O5, \
|
||||
A6, B6, C6, M6, S6, F6, O6, \
|
||||
A7, B7, C7, M7, S7, F7, O7, \
|
||||
A8, B8, C8, M8, S8, F8, O8, \
|
||||
A9, B9, C9, M9, S9, F9, O9, \
|
||||
A10,B10,C10,M10,S10,F10,O10
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1, \
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2, \
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3, \
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4, \
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5, \
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6, \
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7, \
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8, \
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9, \
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10
|
||||
]
|
||||
)
|
||||
|
||||
return \
|
||||
btn_run_merge, btn_reload_checkpoints, btn_send_to_recipe, submit_result, btn_clear_merge_settings, \
|
||||
A1, B1, C1, M1, S1, F1, O1, \
|
||||
A2, B2, C2, M2, S2, F2, O2, \
|
||||
A3, B3, C3, M3, S3, F3, O3, \
|
||||
A4, B4, C4, M4, S4, F4, O4, \
|
||||
A5, B5, C5, M5, S5, F5, O5, \
|
||||
A6, B6, C6, M6, S6, F6, O6, \
|
||||
A7, B7, C7, M7, S7, F7, O7, \
|
||||
A8, B8, C8, M8, S8, F8, O8, \
|
||||
A9, B9, C9, M9, S9, F9, O9, \
|
||||
A10,B10,C10,M10,S10,F10,O10,\
|
||||
A1, B1, C1, M1, S1, F1, O1, CF1, \
|
||||
A2, B2, C2, M2, S2, F2, O2, CF2, \
|
||||
A3, B3, C3, M3, S3, F3, O3, CF3, \
|
||||
A4, B4, C4, M4, S4, F4, O4, CF4, \
|
||||
A5, B5, C5, M5, S5, F5, O5, CF5, \
|
||||
A6, B6, C6, M6, S6, F6, O6, CF6, \
|
||||
A7, B7, C7, M7, S7, F7, O7, CF7, \
|
||||
A8, B8, C8, M8, S8, F8, O8, CF8, \
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9, \
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10,\
|
||||
_checkpoint_listener
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ default_recipe = " \
|
|||
SD-WD Fix = __SD15__ + __WD13__, 0.05 \n\
|
||||
SW-F = __O1__ + __F222__ + __SD15__, 1.0 \n\
|
||||
r34gg = __r34__ + __gg__, 0.5 \n\
|
||||
r34gg-wd = __O3__ + __WD13__, 0.5 \n\
|
||||
gwf = __O4__ + __F222__, 0.5 \n\
|
||||
test06 = __O2__ + __O5__, 0.3\
|
||||
r34gg-wd = __O3__ + __WD13__, 0.5, fp16\n\
|
||||
gwf = __O4__ + __F222__, 0.5, safetensors\n\
|
||||
test06 = __O2__ + __O5__, 0.3, fp16, safetensors\
|
||||
"
|
||||
|
||||
choice_of_models = [ x.title for x in sd_models.checkpoints_list.values()]
|
||||
|
|
|
|||
Loading…
Reference in New Issue