Update app.py
Browse files
app.py
CHANGED
|
@@ -12,26 +12,33 @@ class ObjectDetector:
|
|
| 12 |
self.api_url = "https://api-inference.huggingface.co/models/facebook/detr-resnet-50"
|
| 13 |
|
| 14 |
def detect(self, image, hf_token=None):
|
|
|
|
|
|
|
| 15 |
# Try multiple ways to get HF token
|
| 16 |
token = hf_token or os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN")
|
| 17 |
-
|
| 18 |
if not token:
|
| 19 |
raise Exception("HF Token required. Please set HF_TOKEN in Space secrets or environment variables")
|
| 20 |
-
|
| 21 |
-
headers = {
|
| 22 |
-
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
| 24 |
img_buffer = io.BytesIO()
|
| 25 |
image.save(img_buffer, format='JPEG')
|
| 26 |
img_bytes = img_buffer.getvalue()
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
|
|
|
|
|
|
| 30 |
if response.status_code != 200:
|
| 31 |
raise Exception(f"Object detection API error: {response.status_code} - {response.text}")
|
| 32 |
-
|
| 33 |
return response.json()
|
| 34 |
|
|
|
|
| 35 |
object_detector = ObjectDetector()
|
| 36 |
|
| 37 |
# COCO class names for object detection
|
|
|
|
| 12 |
self.api_url = "https://api-inference.huggingface.co/models/facebook/detr-resnet-50"
|
| 13 |
|
| 14 |
def detect(self, image, hf_token=None):
|
| 15 |
+
import base64
|
| 16 |
+
|
| 17 |
# Try multiple ways to get HF token
|
| 18 |
token = hf_token or os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN")
|
|
|
|
| 19 |
if not token:
|
| 20 |
raise Exception("HF Token required. Please set HF_TOKEN in Space secrets or environment variables")
|
| 21 |
+
|
| 22 |
+
headers = {
|
| 23 |
+
"Authorization": f"Bearer {token}",
|
| 24 |
+
"Content-Type": "application/json"
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
# Convert PIL image to base64 string
|
| 28 |
img_buffer = io.BytesIO()
|
| 29 |
image.save(img_buffer, format='JPEG')
|
| 30 |
img_bytes = img_buffer.getvalue()
|
| 31 |
+
img_base64 = base64.b64encode(img_bytes).decode("utf-8")
|
| 32 |
+
|
| 33 |
+
# Send JSON payload with base64 image
|
| 34 |
+
response = requests.post(self.api_url, headers=headers, json={"inputs": img_base64})
|
| 35 |
+
|
| 36 |
if response.status_code != 200:
|
| 37 |
raise Exception(f"Object detection API error: {response.status_code} - {response.text}")
|
| 38 |
+
|
| 39 |
return response.json()
|
| 40 |
|
| 41 |
+
|
| 42 |
object_detector = ObjectDetector()
|
| 43 |
|
| 44 |
# COCO class names for object detection
|