|
|
from typing import Dict, Any
|
|
|
import torch
|
|
|
import base64
|
|
|
from io import BytesIO
|
|
|
from model import Model
|
|
|
from PIL import Image
|
|
|
|
|
|
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
|
|
|
|
|
|
if device.type != 'cuda':
|
|
|
raise ValueError("need to run on GPU")
|
|
|
|
|
|
class EndpointHandler():
|
|
|
def __init__(self, path=""):
|
|
|
|
|
|
self.model = Model()
|
|
|
|
|
|
|
|
|
def __call__(self, data: Any) -> Any:
|
|
|
"""
|
|
|
Args:
|
|
|
data (:obj:):
|
|
|
includes the input data and the parameters for the inference.
|
|
|
Return:
|
|
|
A :obj:`dict`:. base64 encoded image
|
|
|
"""
|
|
|
inputs = data.pop("image", data)
|
|
|
|
|
|
image = Image.open(BytesIO(base64.b64decode(inputs)))
|
|
|
|
|
|
|
|
|
_, res = self.model.process_lineart(image = image)
|
|
|
|
|
|
|
|
|
|
|
|
return res
|
|
|
|