File size: 1,077 Bytes
3e282e2
e80d746
 
f040cb4
 
 
3e282e2
 
 
e80d746
 
 
 
3e282e2
 
f040cb4
 
 
 
 
e80d746
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from typing import Dict, List, Any
from diffusers import DiffusionPipeline, EulerAncestralDiscreteScheduler
import torch
import base64
from PIL import Image
import io

class EndpointHandler():
    def __init__(self, path=""):
        scheduler = EulerAncestralDiscreteScheduler.from_pretrained(path, subfolder="scheduler")
        self.pipeline = DiffusionPipeline.from_pretrained(path, scheduler=scheduler, torch_dtype=torch.float32)
        if torch.cuda.is_available():
            self.pipeline.to("cuda")

    def __call__(self, data: Dict[str, any]) -> List[Dict[str, Any]]:
        mask_bytes = base64.b64decode(data["inputs"]["mask"])
        mask = Image.open(io.BytesIO(mask_bytes)).convert('RGB')

        image_bytes = base64.b64decode(data["inputs"]["image"])
        image = Image.open(io.BytesIO(image_bytes)).convert('RGB')

        prompt = "a picture of a person with a nice haircut"

        new_image = self.pipeline(prompt=prompt, image=image, mask_image=mask, height=512, width=512, num_inference_steps=20).images[0]
        return [{"image": new_image}]