| import torch | |
| from diffusers import StableDiffusionInstructPix2PixPipeline, EulerAncestralDiscreteScheduler | |
| import base64 | |
| from io import BytesIO | |
| from PIL import Image | |
| import json | |
| class EndpointHandler(): | |
| def __init__(self, path=""): | |
| model_id = "timbrooks/instruct-pix2pix" | |
| self.pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(model_id, torch_dtype=torch.float16, safety_checker=None) | |
| self.pipe.to("cuda") | |
| self.pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(self.pipe.scheduler.config) | |
| def __call__(self, data): | |
| info=data['inputs'] | |
| image=info.pop("image",data) | |
| prompt=info.pop("text",data) | |
| image=base64.b64decode(image) | |
| raw_images = Image.open(BytesIO(image)).convert('RGB') | |
| images = self.pipe(prompt, image=raw_images, num_inference_steps=25, image_guidance_scale=1).images | |
| img=images[0] | |
| img.save("./1.png") | |
| with open('./1.png','rb') as img_file: | |
| encoded_string = base64.b64encode(img_file.read()).decode('utf-8') | |
| return {'image':encoded_string} | |
| if __name__=="__main__": | |
| my_handler=EndpointHandler(path='.') | |