@@ -123,27 +123,21 @@ def print_system_info():
123123
124124def initialize_engine (model_name , model_path , device_list ):
125125 if model_name == "sd_1.5_square_int8" :
126- log .info ('Device list: %s' , device_list )
127126 return stable_diffusion_engine .StableDiffusionEngineAdvanced (model = model_path , device = device_list )
128127 if model_name == "sd_3.0_square" :
129128 device_list = ["GPU" ]
130- log .info ('Device list: %s' , device_list )
131129 return stable_diffusion_3 .StableDiffusionThreeEngine (model = model_path , device = device_list )
132130 if model_name == "sd_1.5_inpainting" :
133131 return stable_diffusion_engine_inpainting_genai .StableDiffusionEngineInpaintingGenai (model = model_path , device = device_list [0 ])
134132 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" ):
135133 return stable_diffusion_engine_genai .StableDiffusionEngineGenai (model = model_path ,model_name = model_name ,device = device_list )
136134 if model_name == "sd_1.5_inpainting_int8" :
137- log .info ('Advanced Inpainting Device list: %s' , device_list )
138135 return stable_diffusion_engine_inpainting_advanced .StableDiffusionEngineInpaintingAdvanced (model = model_path , device = device_list )
139136 if model_name == "controlnet_openpose_int8" :
140- log .info ('Device list: %s' , device_list )
141137 return controlnet_openpose_advanced .ControlNetOpenPoseAdvanced (model = model_path , device = device_list )
142138 if model_name == "controlnet_canny_int8" :
143- log .info ('Device list: %s' , device_list )
144139 return controlnet_cannyedge_advanced .ControlNetCannyEdgeAdvanced (model = model_path , device = device_list )
145140 if model_name == "controlnet_scribble_int8" :
146- log .info ('Device list: %s' , device_list )
147141 return controlnet_scribble .ControlNetScribbleAdvanced (model = model_path , device = device_list )
148142 if model_name == "controlnet_canny" :
149143 return controlnet_canny_edge .ControlNetCannyEdge (model = model_path , device = device_list )
@@ -153,14 +147,16 @@ def initialize_engine(model_name, model_path, device_list):
153147 return controlnet_openpose .ControlNetOpenPose (model = model_path , device = device_list )
154148 if model_name == "controlnet_referenceonly" :
155149 return stable_diffusion_engine .StableDiffusionEngineReferenceOnly (model = model_path , device = device_list )
156- return stable_diffusion_engine .StableDiffusionEngine (model = model_path , device = device_list )
150+ return stable_diffusion_engine .StableDiffusionEngine (model = model_path , device = device_list , model_name = model_name )
157151
158152def parse_args () -> argparse .Namespace :
159153 """Parse and return command line arguments."""
160154 parser = argparse .ArgumentParser (add_help = False , formatter_class = argparse .RawTextHelpFormatter )
161155 args = parser .add_argument_group ('Options' )
162156 args .add_argument ('-h' , '--help' , action = 'help' ,
163157 help = 'Show this help message and exit.' )
158+ args .add_argument ('-l' , '--list' , action = 'store_true' ,
159+ help = 'Show list of models currently installed.' )
164160 # base path to models
165161 args .add_argument ('-bp' ,'--model_base_path' ,type = str , default = None , required = False ,
166162 help = 'Optional. Specify the absolute base path to model weights. \n Usage example: -bp \\ stable-diffusion\\ model-weights\\ ' )
@@ -194,8 +190,6 @@ def parse_args() -> argparse.Namespace:
194190 # guidance scale
195191 args .add_argument ('-g' ,'--guidance_scale' ,type = float , default = 7.5 , required = False ,
196192 help = 'Optional. Affects how closely the image prompt is followed.' )
197-
198-
199193 # power mode
200194 args .add_argument ('-pm' ,'--power_mode' ,type = str , default = "best performance" , required = False ,
201195 help = 'Optional. Specify the power mode. Default is best performance' )
@@ -209,6 +203,32 @@ def parse_args() -> argparse.Namespace:
209203
210204 return parser .parse_args ()
211205
206+ def validate_model_paths (base_path : str , model_paths : dict ) -> dict :
207+ """
208+ Check if model directories exist based on base_path and model_paths structure.
209+
210+ Args:
211+ base_path (str): Root directory where models are stored.
212+ model_paths (dict): Dictionary with model keys and relative path parts.
213+
214+ Returns:
215+ dict: Dictionary with model names and a boolean indicating existence.
216+ """
217+ results = {}
218+ for model_name , relative_parts in model_paths .items ():
219+ full_path = os .path .join (base_path , * relative_parts )
220+ if os .path .isdir (full_path ):
221+ if "int8a16" in model_name :
222+ if os .path .isfile (os .path .join (full_path , "unet_int8a16.xml" )):
223+ results [model_name ] = full_path
224+ elif "fp8" in model_name :
225+ if os .path .isfile (os .path .join (full_path , "unet_fp8.xml" )):
226+ results [model_name ] = full_path
227+ else :
228+ results [model_name ] = full_path
229+ return results
230+
231+
212232def main ():
213233 args = parse_args ()
214234 results = []
@@ -253,6 +273,12 @@ def main():
253273 "controlnet_scribble_int8" : ["stable-diffusion-ov" , "controlnet-scribble-int8" ],
254274 }
255275
276+ if args .list :
277+ print (f"\n Installed models: " )
278+ for key in validate_model_paths (weight_path , model_paths ).keys ():
279+ print (f"{ key } " )
280+ exit ()
281+
256282 model_name = args .model_name
257283 model_path = os .path .join (weight_path , * model_paths .get (model_name ))
258284 model_config_file_name = os .path .join (model_path , "config.json" )
0 commit comments