fix latent output

This commit is contained in:
kantsche
2025-05-07 18:28:17 +02:00
committed by GitHub
parent 423cf592d6
commit bf8324e056
+14 -20
View File
@@ -9,8 +9,7 @@ from .utils import sumweights
# Initialize other necessary attributes
import comfy.model_management as model_management
from .utils import load_taesd, ensure_model, create_adaptive_low_res_model_wrapper, create_model_wrapper, load_vae, normalize_model_predictions
from .utils import load_taesd, ensure_model, create_adaptive_low_res_model_wrapper
# Import mixing functions
from .mixes.fft import mix_teamfft, mix_teamfft4freq, mix_2model_fft, mix_2m2f, mix_fft_overlap, mix_fft_full, mix_bandfft
@@ -41,11 +40,6 @@ class MixModGuider(comfy.samplers.CFGGuider):
self.mode = "team"
raise Exception("Please install Comfyui ControlNet Aux custom node. Falling back to team mode.")
if(self.mode == "styleinjection" and not self.kwargs.get("image", None) is None):
self.vae = load_vae("fixFP16ErrorsSDXLLowerMemoryUse_v10.safetensors")
self.noiseinjection_latent = self.vae.encode(self.kwargs.get("image", None))
self.models = []
self.weights = []
@@ -60,13 +54,11 @@ class MixModGuider(comfy.samplers.CFGGuider):
self.options = []
self.scale_factors = []
self.decay_factor = kwargs.get("decay_factor", 0.9) # Dynamic mask decay factor
self.threshold = kwargs.get("threshold", 0.1) # Dynamic mask threshold
self.active_masks = []
self.active_weights = []
self.active_cfgs = []
self.uncond_decays = []
self.foreground_background_masks = []
@@ -93,12 +85,20 @@ class MixModGuider(comfy.samplers.CFGGuider):
self.start_steps.append(options.get("start_step", 0))
self.end_steps.append(options.get("end_step", -1))
self.masks.append(options.get("mask", None))
self.uncond_decays.append(options.get("uncond_decay", 1.0))
# Add to original_conds with indexed keys
idx = len(self.models)
conds.update({f"positive_{idx}": current["positive"], f"negative_{idx}": current["negative"]})
current = current.get("prev")
print(self.models)
print(self.weights)
print(self.cfgs)
print(self.types)
print(self.scale_factors)
print(self.start_steps)
print(self.end_steps)
self.inner_set_conds(conds)
@@ -114,7 +114,6 @@ class MixModGuider(comfy.samplers.CFGGuider):
self.active_masks = []
self.active_weights = []
self.active_cfgs = []
self.active_uncond_decays = []
self.active_types = []
for i in range(len(self.models)):
cond = [self.conds.get(f"positive_{i+1}", None), self.conds.get(f"negative_{i+1}", None)]
@@ -135,7 +134,6 @@ class MixModGuider(comfy.samplers.CFGGuider):
self.active_masks.append(self.masks[i])
self.active_weights.append(self.weights[i])
self.active_cfgs.append(self.cfgs[i])
self.active_uncond_decays.append(self.uncond_decays[i])
self.active_types.append(self.types[i])
if not pred:
logging.warning(f"No models were active at step {self.step}, using default model 0")
@@ -144,7 +142,6 @@ class MixModGuider(comfy.samplers.CFGGuider):
self.active_masks.append(self.masks[0])
self.active_weights.append(self.weights[0])
self.active_cfgs.append(self.cfgs[0])
self.active_uncond_decays.append(self.uncond_decays[0])
self.active_types.append(self.types[0])
return self.mix_function(self.prepared_models[0][0], pred, x, timestep, model_options, seed)
@@ -160,17 +157,14 @@ class MixModGuider(comfy.samplers.CFGGuider):
if any(mask is not None for mask in self.active_masks):
mix, postuncond = mix_masked(pred, self.active_weights, self.active_cfgs, self.active_masks,)
else:
mix, postuncond = mix_standard(pred, self.active_weights, self.active_cfgs, self.active_uncond_decays)
elif self.mode == "styleinjection":
mix, postuncond = mix_standard(pred, self.active_weights, self.active_cfgs)
mix, postuncond = mix_standard(pred, self.active_weights, self.active_cfgs)
elif self.mode == "dynamic_mask":
mix, postuncond, new_masks = mix_dynamic_mask(pred, self.active_weights, self.active_cfgs, self.step, self.mask_history, self.decay_factor, self.threshold, self.kwargs.get("blur_sigma", 0.5))
mix, postuncond, new_masks = mix_dynamic_mask(pred, self.active_weights, self.active_cfgs, self.step, self.mask_history, self.kwargs.get("decay_factor", 0.9), self.threshold, self.kwargs.get("blur_sigma", 0.5))
self.mask_history = new_masks # Store the updated masks for next step
elif self.mode == "dynamic_mask_alternative":
mix, postuncond = mix_dynamic_mask_alternative(pred, self.active_weights, self.active_cfgs, self.depth_model, self.threshold, self.kwargs.get("invert", False), self.kwargs.get("blur_sigma", 1.0))
mix, postuncond = mix_dynamic_mask_alternative(pred, self.active_weights, self.active_cfgs, self.depth_model, self.kwargs.get("threshold", 0.1), self.kwargs.get("invert", False), self.kwargs.get("blur_sigma", 1.0))
elif self.mode == "foreground_background":
if(self.step == 0):
@@ -313,7 +307,7 @@ class MixModGuider(comfy.samplers.CFGGuider):
comfy.patcher_extension.get_all_wrappers(comfy.patcher_extension.WrappersMP.SAMPLER_SAMPLE, extra_args["model_options"], is_model_options=True)
)
samples = executor.execute(self, sigmas, extra_args, wrapped_callback, noise, latent_image, denoise_mask, disable_pbar)
return samples
return self.inner_model.process_latent_out(samples.to(torch.float32))
def sample(self, noise, latent_image, sampler, sigmas, denoise_mask=None, callback=None, disable_pbar=False, seed=None):
if sigmas.shape[-1] == 0: