import torch from controlnet_aux import OpenposeDetector from diffusers import ( StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler ) def initialize_controlnet(config): model_id = config['model_id'] local_dir = config.get('local_dir', model_id) return ControlNetModel.from_pretrained( local_dir if local_dir != model_id else model_id, torch_dtype=torch.float16 ) def initialize_pipeline(controlnet, config): model_id = config['model_id'] local_dir = config.get('local_dir', model_id) pipe = StableDiffusionControlNetPipeline.from_pretrained( local_dir if local_dir != model_id else model_id, controlnet=controlnet, torch_dtype=torch.float16 ) pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config) return pipe def initialize_controlnet_detector(config): return OpenposeDetector.from_pretrained(config['model_id'])