# demo & simple test def main(): from diffusers.utils import load_image pipe = StableDiffusionMultiControlNetPipeline.from_pretrained( "runwayml/stable-diffusion-v1-5", safety_checker=None, torch_dtype=torch.float16 ).to("cuda") pipe.enable_xformers_memory_efficient_attention() controlnet_canny = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny", torch_dtype=torch.float16).to( "cuda" ) controlnet_pose = ControlNetModel.from_pretrained( "lllyasviel/sd-controlnet-openpose", torch_dtype=torch.float16 ).to("cuda") canny_left = load_image("https://huggingface.co/takuma104/controlnet_dev/resolve/main/vermeer_left.png") canny_right = load_image("https://huggingface.co/takuma104/controlnet_dev/resolve/main/vermeer_right.png") pose_right = load_image("https://huggingface.co/takuma104/controlnet_dev/resolve/main/pose_right.png") image = pipe( prompt="best quality, extremely detailed", negative_prompt="monochrome, lowres, bad anatomy, worst quality, low quality", processors=[ ControlNetProcessor(controlnet_canny, canny_left), ControlNetProcessor(controlnet_canny, canny_right), ], generator=torch.Generator(device="cpu").manual_seed(0), num_inference_steps=30, width=512, height=512, ).images[0] image.save("/tmp/canny_left_right.png") image = pipe( prompt="best quality, extremely detailed", negative_prompt="monochrome, lowres, bad anatomy, worst quality, low quality", processors=[ ControlNetProcessor(controlnet_canny, canny_left), ControlNetProcessor(controlnet_pose, pose_right), ], generator=torch.Generator(device="cpu").manual_seed(0), num_inference_steps=30, width=512, height=512, ).images[0] image.save("/tmp/canny_left_pose_right.png") if __name__ == "__main__": main()