@@ -16,7 +16,8 @@ def INPUT_TYPES(s):
16
16
"single_layers" : ("STRING" , {"default" : "7, 8, 9" , "multiline" : False }),
17
17
"scale" : ("FLOAT" , {"default" : 3.0 , "min" : 0.0 , "max" : 10.0 , "step" : 0.1 }),
18
18
"start_percent" : ("FLOAT" , {"default" : 0.01 , "min" : 0.0 , "max" : 1.0 , "step" : 0.001 }),
19
- "end_percent" : ("FLOAT" , {"default" : 0.15 , "min" : 0.0 , "max" : 1.0 , "step" : 0.001 })
19
+ "end_percent" : ("FLOAT" , {"default" : 0.15 , "min" : 0.0 , "max" : 1.0 , "step" : 0.001 }),
20
+ "rescaling_scale" : ("FLOAT" , {"default" : 0.0 , "min" : 0.0 , "max" : 10.0 , "step" : 0.01 }),
20
21
}}
21
22
RETURN_TYPES = ("MODEL" ,)
22
23
FUNCTION = "skip_guidance"
@@ -26,7 +27,7 @@ def INPUT_TYPES(s):
26
27
27
28
CATEGORY = "advanced/guidance"
28
29
29
- def skip_guidance (self , model , scale , start_percent , end_percent , double_layers = "" , single_layers = "" ):
30
+ def skip_guidance (self , model , scale , start_percent , end_percent , double_layers = "" , single_layers = "" , rescaling_scale = 0 ):
30
31
# check if layer is comma separated integers
31
32
def skip (args , extra_args ):
32
33
return args
@@ -65,6 +66,11 @@ def post_cfg_function(args):
65
66
if scale > 0 and sigma_ >= sigma_end and sigma_ <= sigma_start :
66
67
(slg ,) = comfy .samplers .calc_cond_batch (model , [cond ], x , sigma , model_options )
67
68
cfg_result = cfg_result + (cond_pred - slg ) * scale
69
+ if rescaling_scale != 0 :
70
+ factor = cond_pred .std () / cfg_result .std ()
71
+ factor = rescaling_scale * factor + (1 - rescaling_scale )
72
+ cfg_result *= factor
73
+
68
74
return cfg_result
69
75
70
76
m = model .clone ()
0 commit comments