MCPcopy Index your code
hub / github.com/vladmandic/sdnext / process_refine

Function process_refine

modules/processing_diffusers.py:369–453  ·  view source on GitHub ↗
(p: processing.StableDiffusionProcessing, output)

Source from the content-addressed store, hash-verified

367
368
369def process_refine(p: processing.StableDiffusionProcessing, output):
370 # optional refiner pass or decode
371 if (output is None) or not hasattr(output, 'images') or (output.images is None):
372 return output
373 if is_refiner_enabled(p):
374 if shared.opts.samples_save and not p.do_not_save_samples and shared.opts.save_images_before_refiner and hasattr(shared.sd_model, 'vae'):
375 save_intermediate(p, latents=output.images, suffix="-before-refiner")
376 if shared.opts.diffusers_move_base:
377 log.debug('Moving to CPU: model=base')
378 sd_models.move_model(shared.sd_model, devices.cpu)
379 if shared.state.interrupted or shared.state.skipped:
380 shared.sd_model = orig_pipeline
381 return output
382 jobid = shared.state.begin('Refine')
383 shared.sd_model = sd_models.apply_balanced_offload(shared.sd_model)
384 if shared.opts.diffusers_move_refiner:
385 sd_models.move_model(shared.sd_refiner, devices.device)
386 if hasattr(shared.sd_refiner, 'unet'):
387 sd_models.move_model(shared.sd_model.unet, devices.device)
388 if hasattr(shared.sd_refiner, 'transformer'):
389 sd_models.move_model(shared.sd_model.transformer, devices.device)
390 p.ops.append('refine')
391 p.is_refiner_pass = True
392
393 sd_models_compile.openvino_recompile_model(p, hires=False, refiner=True)
394 shared.sd_model = sd_models.set_diffuser_pipe(shared.sd_model, sd_models.DiffusersTaskType.TEXT_2_IMAGE)
395 shared.sd_refiner = sd_models.set_diffuser_pipe(shared.sd_refiner, sd_models.DiffusersTaskType.IMAGE_2_IMAGE)
396 for i in range(len(output.images)):
397 image = output.images[i]
398 noise_level = round(350 * p.denoising_strength)
399 refiner_output_type = output_type
400 if 'Upscale' in shared.sd_refiner.__class__.__name__ or 'Flux' in shared.sd_refiner.__class__.__name__ or 'Kandinsky' in shared.sd_refiner.__class__.__name__:
401 image = processing_vae.vae_decode(latents=image, model=shared.sd_model, vae_type=p.vae_type, output_type='pil', width=p.width, height=p.height)
402 p.extra_generation_params['Noise level'] = noise_level
403 refiner_output_type = 'np'
404 update_sampler(p, shared.sd_refiner, second_pass=True)
405 sched_eta = p.scheduler_eta if p.scheduler_eta is not None else shared.opts.scheduler_eta
406 refiner_args = set_pipeline_args(
407 p=p,
408 model=shared.sd_refiner,
409 prompts=[p.refiner_prompt] if len(p.refiner_prompt) > 0 else p.prompts[i],
410 negative_prompts=[p.refiner_negative] if len(p.refiner_negative) > 0 else p.negative_prompts[i],
411 num_inference_steps=calculate_refiner_steps(p),
412 eta=sched_eta,
413 noise_level=noise_level, # StableDiffusionUpscalePipeline only
414 guidance_scale=p.cfg_image if p.cfg_image is not None and p.cfg_image > -1 else p.cfg_scale,
415 guidance_rescale=p.cfg_rescale if p.cfg_rescale is not None and p.cfg_rescale > -1 else None,
416 true_cfg_scale=p.cfg_true if p.cfg_true is not None and p.cfg_true > -1 else None,
417 denoising_start=p.refiner_start if p.refiner_start > 0 and p.refiner_start < 1 else None,
418 denoising_end=1 if p.refiner_start > 0 and p.refiner_start < 1 else None,
419 image=image,
420 output_type=refiner_output_type,
421 clip_skip=p.clip_skip,
422 prompt_attention='fixed',
423 desc='Refiner',
424 )
425 refiner_steps = refiner_args.get('prior_num_inference_steps', None) or p.steps or refiner_args.get('num_inference_steps', None)
426 shared.state.update(get_job_name(p, shared.sd_refiner), refiner_steps, 1)

Callers 1

process_diffusersFunction · 0.85

Calls 15

is_refiner_enabledFunction · 0.90
save_intermediateFunction · 0.90
update_samplerFunction · 0.90
set_pipeline_argsFunction · 0.90
calculate_refiner_stepsFunction · 0.90
get_job_nameFunction · 0.90
beginMethod · 0.80
sd_refinerMethod · 0.80
infoMethod · 0.80
analyzeMethod · 0.80
nextjobMethod · 0.80
vae_decodeMethod · 0.45

Tested by

no test coverage detected