6
6
import torchvision .transforms .functional as TF
7
7
from PIL import Image
8
8
from modules import shared , devices , processing , sd_models , errors , sd_hijack_hypertile , processing_vae , sd_models_compile , hidiffusion , timer , modelstats , extra_networks
9
- from modules .processing_helpers import resize_hires , calculate_base_steps , calculate_hires_steps , calculate_refiner_steps , save_intermediate , update_sampler , is_txt2img , is_refiner_enabled
9
+ from modules .processing_helpers import resize_hires , calculate_base_steps , calculate_hires_steps , calculate_refiner_steps , save_intermediate , update_sampler , is_txt2img , is_refiner_enabled , get_job_name
10
10
from modules .processing_args import set_pipeline_args
11
11
from modules .onnx_impl import preprocess_pipeline as preprocess_onnx_pipeline , check_parameters_changed as olive_check_parameters_changed
12
12
from modules .lora import networks
@@ -53,8 +53,9 @@ def restore_state(p: processing.StableDiffusionProcessing):
53
53
54
54
55
55
def process_base (p : processing .StableDiffusionProcessing ):
56
- use_refiner_start = is_txt2img () and is_refiner_enabled (p ) and not p .is_hr_pass and p .refiner_start > 0 and p .refiner_start < 1
57
- use_denoise_start = not is_txt2img () and p .refiner_start > 0 and p .refiner_start < 1
56
+ txt2img = is_txt2img ()
57
+ use_refiner_start = txt2img and is_refiner_enabled (p ) and not p .is_hr_pass and p .refiner_start > 0 and p .refiner_start < 1
58
+ use_denoise_start = not txt2img and p .refiner_start > 0 and p .refiner_start < 1
58
59
59
60
shared .sd_model = update_pipeline (shared .sd_model , p )
60
61
update_sampler (p , shared .sd_model )
@@ -76,7 +77,8 @@ def process_base(p: processing.StableDiffusionProcessing):
76
77
clip_skip = p .clip_skip ,
77
78
desc = 'Base' ,
78
79
)
79
- shared .state .sampling_steps = base_args .get ('prior_num_inference_steps' , None ) or p .steps or base_args .get ('num_inference_steps' , None )
80
+ base_steps = base_args .get ('prior_num_inference_steps' , None ) or p .steps or base_args .get ('num_inference_steps' , None )
81
+ shared .state .update (get_job_name (p , shared .sd_model ), base_steps , 1 )
80
82
if shared .opts .scheduler_eta is not None and shared .opts .scheduler_eta > 0 and shared .opts .scheduler_eta < 1 :
81
83
p .extra_generation_params ["Sampler Eta" ] = shared .opts .scheduler_eta
82
84
output = None
@@ -172,7 +174,7 @@ def process_hires(p: processing.StableDiffusionProcessing, output):
172
174
p .ops .append ('upscale' )
173
175
if shared .opts .samples_save and not p .do_not_save_samples and shared .opts .save_images_before_highres_fix and hasattr (shared .sd_model , 'vae' ):
174
176
save_intermediate (p , latents = output .images , suffix = "-before-hires" )
175
- shared .state .job = 'Upscale'
177
+ shared .state .update ( 'Upscale' , 0 , 1 )
176
178
output .images = resize_hires (p , latents = output .images )
177
179
sd_hijack_hypertile .hypertile_set (p , hr = True )
178
180
@@ -190,7 +192,6 @@ def process_hires(p: processing.StableDiffusionProcessing, output):
190
192
shared .log .warning ('HiRes skip: denoising=0' )
191
193
p .hr_force = False
192
194
if p .hr_force :
193
- shared .state .job_count = 2 * p .n_iter
194
195
shared .sd_model = sd_models .set_diffuser_pipe (shared .sd_model , sd_models .DiffusersTaskType .IMAGE_2_IMAGE )
195
196
if 'Upscale' in shared .sd_model .__class__ .__name__ or 'Flux' in shared .sd_model .__class__ .__name__ or 'Kandinsky' in shared .sd_model .__class__ .__name__ :
196
197
output .images = processing_vae .vae_decode (latents = output .images , model = shared .sd_model , full_quality = p .full_quality , output_type = 'pil' , width = p .width , height = p .height )
@@ -217,8 +218,8 @@ def process_hires(p: processing.StableDiffusionProcessing, output):
217
218
strength = strength ,
218
219
desc = 'Hires' ,
219
220
)
220
- shared . state . job = 'HiRes'
221
- shared .state .sampling_steps = hires_args . get ( 'prior_num_inference_steps' , None ) or p . steps or hires_args . get ( 'num_inference_steps' , None )
221
+ hires_steps = hires_args . get ( 'prior_num_inference_steps' , None ) or p . hr_second_pass_steps or hires_args . get ( 'num_inference_steps' , None )
222
+ shared .state .update ( get_job_name ( p , shared . sd_model ), hires_steps , 1 )
222
223
try :
223
224
shared .sd_model = sd_models .apply_balanced_offload (shared .sd_model )
224
225
sd_models .move_model (shared .sd_model , devices .device )
@@ -255,8 +256,6 @@ def process_refine(p: processing.StableDiffusionProcessing, output):
255
256
# optional refiner pass or decode
256
257
if is_refiner_enabled (p ):
257
258
prev_job = shared .state .job
258
- shared .state .job = 'Refine'
259
- shared .state .job_count += 1
260
259
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' ):
261
260
save_intermediate (p , latents = output .images , suffix = "-before-refiner" )
262
261
if shared .opts .diffusers_move_base :
@@ -306,7 +305,8 @@ def process_refine(p: processing.StableDiffusionProcessing, output):
306
305
prompt_attention = 'fixed' ,
307
306
desc = 'Refiner' ,
308
307
)
309
- shared .state .sampling_steps = refiner_args .get ('prior_num_inference_steps' , None ) or p .steps or refiner_args .get ('num_inference_steps' , None )
308
+ refiner_steps = refiner_args .get ('prior_num_inference_steps' , None ) or p .steps or refiner_args .get ('num_inference_steps' , None )
309
+ shared .state .update (get_job_name (p , shared .sd_refiner ), refiner_steps , 1 )
310
310
try :
311
311
if 'requires_aesthetics_score' in shared .sd_refiner .config : # sdxl-model needs false and sdxl-refiner needs true
312
312
shared .sd_refiner .register_to_config (requires_aesthetics_score = getattr (shared .sd_refiner , 'tokenizer' , None ) is None )
0 commit comments