File size: 1,893 Bytes
b2e0420
 
 
 
d240e67
b2e0420
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d240e67
f70b16e
b2e0420
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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()