Commit
·
24ec34e
1
Parent(s):
e77e712
handler
Browse files- handler.py +31 -0
- 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
|