Vishaltiwari2019's picture
Update app.py
b2e0420 verified
raw
history blame
No virus
1.89 kB
Hugging Face's logo
Search models, datasets, users...
Spaces:
Epitech
/
Object-Detection
like
1
App
Files
Community
Object-Detection
/
app.py
paulmondon
Add requirements.txt
a72c3ec
raw
history
blame
contribute
delete
1.6 kB
from transformers import DetrImageProcessor, DetrForObjectDetection
import torch
from PIL import Image, ImageDraw
import gradio as gr
import requests
import random
def detect_objects(image):
# Load the pre-trained DETR model
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
# convert outputs (bounding boxes and class logits) to COCO API
# let's only keep detections with score > 0.9
target_sizes = torch.tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
# Draw bounding boxes and labels on the image
draw = ImageDraw.Draw(image)
for i, (score, label, box) in enumerate(zip(results["scores"], results["labels"], results["boxes"])):
box = [round(i, 2) for i in box.tolist()]
color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
draw.rectangle(box, outline=color, width=3)
label_text = f"{model.config.id2label[label.item()]}: {round(score.item(), 2)}"
draw.text((box[0], box[1]), label_text, fill=color)
return image
def upload_image(file):
image = Image.open(file.name)
image_with_boxes = detect_objects(image)
return image_with_boxes
iface = gr.Interface(
fn=upload_image,
inputs="file",
outputs="image",
title="Object Detection",
description="Upload an image and detect objects using DETR model.",
allow_flagging=False
)
iface.launch()