2222from gimpopenvino .plugins .openvino_utils .tools .tools_utils import get_weight_path
2323from gimpopenvino .plugins .openvino_utils .tools .openvino_common .models_ov import (
2424 stable_diffusion_engine ,
25+ stable_diffusion_engine_genai ,
26+ stable_diffusion_engine_inpainting_genai ,
2527 stable_diffusion_engine_inpainting ,
2628 stable_diffusion_engine_inpainting_advanced ,
2729 stable_diffusion_3 ,
@@ -128,9 +130,9 @@ def initialize_engine(model_name, model_path, device_list):
128130 log .info ('Device list: %s' , device_list )
129131 return stable_diffusion_3 .StableDiffusionThreeEngine (model = model_path , device = device_list )
130132 if model_name == "sd_1.5_inpainting" :
131- return stable_diffusion_engine_inpainting . StableDiffusionEngineInpainting (model = model_path , device = device_list )
132- if model_name == "sd_1.5_square_lcm" :
133- return stable_diffusion_engine . LatentConsistencyEngine (model = model_path , device = device_list )
133+ return stable_diffusion_engine_inpainting_genai . StableDiffusionEngineInpaintingGenai (model = model_path , device = device_list [ 0 ] )
134+ if model_name in ( "sd_1.5_square_lcm" , "sdxl_base_1.0_square" , "sdxl_turbo_square" , "sd_3.0_med_diffuser_square" , "sd_3.5_med_turbo_square" ) :
135+ return stable_diffusion_engine_genai . StableDiffusionEngineGenai (model = model_path ,model_name = model_name , device = device_list )
134136 if model_name == "sd_1.5_inpainting_int8" :
135137 log .info ('Advanced Inpainting Device list: %s' , device_list )
136138 return stable_diffusion_engine_inpainting_advanced .StableDiffusionEngineInpaintingAdvanced (model = model_path , device = device_list )
@@ -139,7 +141,7 @@ def initialize_engine(model_name, model_path, device_list):
139141 return controlnet_openpose_advanced .ControlNetOpenPoseAdvanced (model = model_path , device = device_list )
140142 if model_name == "controlnet_canny_int8" :
141143 log .info ('Device list: %s' , device_list )
142- return controlnet_canny_edge_advanced .ControlNetCannyEdgeAdvanced (model = model_path , device = device_list )
144+ return controlnet_cannyedge_advanced .ControlNetCannyEdgeAdvanced (model = model_path , device = device_list )
143145 if model_name == "controlnet_scribble_int8" :
144146 log .info ('Device list: %s' , device_list )
145147 return controlnet_scribble .ControlNetScribbleAdvanced (model = model_path , device = device_list )
@@ -227,10 +229,14 @@ def main():
227229 model_paths = {
228230 "sd_1.4" : ["stable-diffusion-ov" , "stable-diffusion-1.4" ],
229231 "sd_1.5_square_lcm" : ["stable-diffusion-ov" , "stable-diffusion-1.5" , "square_lcm" ],
232+ "sdxl_base_1.0_square" : ["stable-diffusion-ov" , "stable-diffusion-xl" , "square_base" ],
233+ "sdxl_turbo_square" : ["stable-diffusion-ov" , "stable-diffusion-xl" , "square_turbo" ],
230234 "sd_1.5_portrait" : ["stable-diffusion-ov" , "stable-diffusion-1.5" , "portrait" ],
231235 "sd_1.5_square" : ["stable-diffusion-ov" , "stable-diffusion-1.5" , "square" ],
232236 "sd_1.5_square_int8" : ["stable-diffusion-ov" , "stable-diffusion-1.5" , "square_int8" ],
233237 "sd_1.5_square_int8a16" : ["stable-diffusion-ov" , "stable-diffusion-1.5" , "square_int8" ],
238+ "sd_3.0_med_diffuser_square" : ["stable-diffusion-ov" , "stable-diffusion-3.0-medium" , "square_diffusers" ],
239+ "sd_3.5_med_turbo_square" : ["stable-diffusion-ov" , "stable-diffusion-3.5-medium" , "square_turbo" ],
234240 "sd_1.5_landscape" : ["stable-diffusion-ov" , "stable-diffusion-1.5" , "landscape" ],
235241 "sd_1.5_portrait_512x768" : ["stable-diffusion-ov" , "stable-diffusion-1.5" , "portrait_512x768" ],
236242 "sd_1.5_landscape_768x512" : ["stable-diffusion-ov" , "stable-diffusion-1.5" , "landscape_768x512" ],
@@ -247,6 +253,7 @@ def main():
247253 "controlnet_canny_int8" : ["stable-diffusion-ov" , "controlnet-canny-int8" ],
248254 "controlnet_scribble_int8" : ["stable-diffusion-ov" , "controlnet-scribble-int8" ],
249255 }
256+
250257 model_name = args .model_name
251258 model_path = os .path .join (weight_path , * model_paths .get (model_name ))
252259 model_config_file_name = os .path .join (model_path , "config.json" )
@@ -329,24 +336,21 @@ def main():
329336
330337
331338 start_time = time .time ()
332-
339+
333340 if model_name == "sd_1.5_inpainting" or model_name == "sd_1.5_inpainting_int8" :
334341 output = engine (
335342 prompt = prompt ,
336343 negative_prompt = negative_prompt ,
337- image = Image . open ( os .path .join (weight_path , ".." , "cache1.png" ) ),
338- mask_image = Image . open ( os .path .join (weight_path , ".." , "cache0.png" ) ),
344+ image_path = os .path .join (weight_path , ".." , "cache1.png" ),
345+ mask_path = os .path .join (weight_path , ".." , "cache0.png" ),
339346 scheduler = scheduler ,
340347 strength = strength ,
341348 num_inference_steps = num_infer_steps ,
342349 guidance_scale = guidance_scale ,
343- eta = 0.0 ,
344- create_gif = bool (create_gif ),
345- model = model_path ,
346350 callback = progress_callback ,
347351 callback_userdata = conn
348352 )
349- elif "controlnet" in model_name :
353+ elif model_name == "controlnet_referenceonly" :
350354 output = engine (
351355 prompt = prompt ,
352356 negative_prompt = negative_prompt ,
@@ -360,38 +364,54 @@ def main():
360364 callback = progress_callback ,
361365 callback_userdata = conn
362366 )
363-
364- elif model_name == "sd_1.5_square_lcm" :
365- scheduler = LCMScheduler (
366- beta_start = 0.00085 ,
367- beta_end = 0.012 ,
368- beta_schedule = "scaled_linear"
369- )
367+ elif "controlnet" in model_name :
370368 output = engine (
371369 prompt = prompt ,
370+ negative_prompt = negative_prompt ,
371+ image = Image .open (init_image ),
372+ scheduler = scheduler ,
372373 num_inference_steps = num_infer_steps ,
373374 guidance_scale = guidance_scale ,
374- scheduler = scheduler ,
375- lcm_origin_steps = 50 ,
375+ eta = 0.0 ,
376+ create_gif = bool ( create_gif ) ,
376377 model = model_path ,
377378 callback = progress_callback ,
378- callback_userdata = conn ,
379- seed = ran_seed
379+ callback_userdata = conn
380+ )
381+ elif model_name == "sd_1.5_square_lcm" :
382+ output = engine (
383+ prompt = prompt ,
384+ negative_prompt = None ,
385+ num_inference_steps = num_infer_steps ,
386+ guidance_scale = guidance_scale ,
387+ seed = ran_seed ,
388+ callback = progress_callback ,
389+ callback_userdata = conn ,
380390 )
381- elif "sd_3.0 " in model_name :
391+ elif "sdxl " in model_name :
382392 output = engine (
383- prompt = prompt ,
384- negative_prompt = negative_prompt ,
385- num_inference_steps = num_infer_steps ,
386- guidance_scale = 0 ,
387- callback = progress_callback ,
388- callback_userdata = conn ,
389- generator = torch .Generator ().manual_seed (seed ),
390- # callback_on_step_end = progress_callback,
391- # callback_on_step_end_tensor_inputs = conn,
392-
393- ).images [0 ]
394- else : # Covers SD 1.5 Square, Square INT8, SD 2.0
393+ prompt = prompt ,
394+ negative_prompt = None ,
395+ num_inference_steps = num_infer_steps ,
396+ guidance_scale = guidance_scale ,
397+ seed = ran_seed ,
398+ callback = progress_callback ,
399+ callback_userdata = conn ,
400+ )
401+ elif "sd_3.0_med" in model_name or "sd_3.5_med" in model_name :
402+ if model_name == "sd_3.5_med_turbo_square" :
403+ negative_prompt = None
404+
405+ output = engine (
406+ prompt = prompt ,
407+ negative_prompt = negative_prompt ,
408+ num_inference_steps = num_infer_steps ,
409+ guidance_scale = guidance_scale ,
410+ seed = ran_seed ,
411+ callback = progress_callback ,
412+ callback_userdata = conn ,
413+ )
414+ else :
395415 if model_name == "sd_2.1_square" :
396416 scheduler = EulerDiscreteScheduler (
397417 beta_start = 0.00085 ,
@@ -417,6 +437,8 @@ def main():
417437 callback = progress_callback ,
418438 callback_userdata = conn
419439 )
440+
441+
420442 gen_time = time .time () - start_time
421443 print (f"Image Generation Time: { round (gen_time ,2 )} seconds" )
422444 results .append ([output ,model_name
0 commit comments