Thomasboosinger's picture
Upload 2 files
7d9e88f verified
raw history blame
No virus
1.42 kB
from transformers import pipeline
from PIL import Image
from io import BytesIO
import base64
from typing import Dict, List, Any
class EndpointHandler():
def __init__(self, model_path=""):
# Initialize the pipeline with the specified model and set the device to GPU
self.pipeline = pipeline(task="zero-shot-object-detection", model=model_path, device=0)
def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
"""
Process an incoming request for zero-shot object detection.
Args:
data (Dict[str, Any]): The input data containing an encoded image and candidate labels.
Returns:
A list of dictionaries, each containing a label and its corresponding score.
"""
# Correctly accessing the 'inputs' key and fixing the typo in 'candidates'
inputs = data.get("inputs", {})
# Decode the base64 image to a PIL image
image = Image.open(BytesIO(base64.b64decode(inputs['image'])))
# Get candidate labels
candidate_labels=inputs["candidates"]
# Correctly passing the image and candidate labels to the pipeline
detection_results = self.pipeline(image=image, candidate_labels=inputs["candidates"], threshold = 0)
# Adjusting the return statement to match the expected output structure
return detection_results