diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2022-09-28 16:19:47 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-28 16:19:47 +0300 |
commit | e22ea454a273b3a8a807a5acb2e6f0d0d41c9aa7 (patch) | |
tree | 0c131db0e2f3eba171612646a4cf0ffd4a45de08 | |
parent | 5eb9d1aeac8dcfb2073f57821c765a339ccde7f6 (diff) | |
parent | 228a2f30e7f8ae1a752c68ac189e9ca6bb4e29f6 (diff) |
Merge pull request #1222 from bmaltais/inverse-sigmoid-interpolation
(feat): Checkpoint merge using Inverse sigmoid interpolation
-rw-r--r-- | modules/extras.py | 7 | ||||
-rw-r--r-- | modules/ui.py | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/modules/extras.py b/modules/extras.py index b8ebc619..15de033a 100644 --- a/modules/extras.py +++ b/modules/extras.py @@ -150,6 +150,12 @@ def run_modelmerger(primary_model_name, secondary_model_name, interp_method, int alpha = alpha * alpha * (3 - (2 * alpha))
return theta0 + ((theta1 - theta0) * alpha)
+ # Inverse Smoothstep (https://en.wikipedia.org/wiki/Smoothstep)
+ def inv_sigmoid(theta0, theta1, alpha):
+ import math
+ alpha = 0.5 - math.sin(math.asin(1.0 - 2.0 * alpha) / 3.0)
+ return theta0 + ((theta1 - theta0) * alpha)
+
if os.path.exists(primary_model_name):
primary_model_filename = primary_model_name
primary_model_name = os.path.splitext(os.path.basename(primary_model_name))[0]
@@ -174,6 +180,7 @@ def run_modelmerger(primary_model_name, secondary_model_name, interp_method, int theta_funcs = {
"Weighted Sum": weighted_sum,
"Sigmoid": sigmoid,
+ "Inverse Sigmoid": inv_sigmoid
}
theta_func = theta_funcs[interp_method]
diff --git a/modules/ui.py b/modules/ui.py index 7db8edbd..f5d76613 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -864,7 +864,7 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo, run_modelmerger): primary_model_name = gr.Dropdown(ckpt_name_list, elem_id="modelmerger_primary_model_name", label="Primary Model Name")
secondary_model_name = gr.Dropdown(ckpt_name_list, elem_id="modelmerger_secondary_model_name", label="Secondary Model Name")
interp_amount = gr.Slider(minimum=0.0, maximum=1.0, step=0.05, label='Interpolation Amount', value=0.3)
- interp_method = gr.Radio(choices=["Weighted Sum", "Sigmoid"], value="Weighted Sum", label="Interpolation Method")
+ interp_method = gr.Radio(choices=["Weighted Sum", "Sigmoid", "Inverse Sigmoid"], value="Weighted Sum", label="Interpolation Method")
submit = gr.Button(elem_id="modelmerger_merge", label="Merge", variant='primary')
with gr.Column(variant='panel'):
|