baconseason commited on
Commit
24ec34e
·
1 Parent(s): e77e712
Files changed (2) hide show
  1. handler.py +31 -0
  2. requirements.txt +6 -0
handler.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from transformers import pipeline
3
+ from PIL import Image
4
+ import requests
5
+ import numpy as np
6
+ from cv2 import imencode
7
+ from base64 import b64encode
8
+
9
+ class EndpointHandler():
10
+ def __init__(self):
11
+ self.device = "cuda" if torch.cuda.is_available() else "cpu"
12
+ self.generator = pipeline("mask-generation", model="facebook/sam-vit-large", device=self.device)
13
+
14
+ def __call__(self, url):
15
+ raw_image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
16
+ outputs = self.generator(raw_image, points_per_batch=32)
17
+ masks = outputs["masks"]
18
+ data = []
19
+ for index, mask in enumerate(masks):
20
+ cv_image = np.array(raw_image)
21
+ mask_image = np.zeros(cv_image.shape[:3], np.uint8)
22
+ mask_image[mask == False] = 255
23
+ retval, buffer = imencode('.png', mask_image)
24
+ encoded_mask = b64encode(buffer)
25
+ data.append({
26
+ "score": outputs["scores"][index].item(),
27
+ "mask": encoded_mask,
28
+ "label": ""
29
+ })
30
+
31
+ return data
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ torch
2
+ transformers
3
+ pillow
4
+ numpy
5
+ requests
6
+ opencv-python