| import gradio as gr | |
| from PIL import ImageDraw | |
| from transformers import pipeline | |
| object_detector = None | |
| def get_detector(): | |
| global object_detector | |
| if object_detector is None: | |
| object_detector = pipeline("object-detection", model="facebook/detr-resnet-50") | |
| return object_detector | |
| def draw_bounding_boxes(image, object_detections): | |
| draw = ImageDraw.Draw(image) | |
| for detection in object_detections: | |
| box = detection["box"] | |
| label = detection["label"] | |
| score = detection["score"] | |
| draw.rectangle( | |
| (box["xmin"], box["ymin"], box["xmax"], box["ymax"]), | |
| outline=(255, 0, 0), | |
| width=2, | |
| ) | |
| draw.text((box["xmin"], box["ymin"] - 20), f"{label} ({score:.2f})", fill=(255, 0, 0)) | |
| return image | |
| def detect_object(image): | |
| output = get_detector()(image) | |
| return draw_bounding_boxes(image, output) | |
| demo = gr.Interface( | |
| fn=detect_object, | |
| inputs=[gr.Image(label="Select Image", type="pil")], | |
| outputs=[gr.Image(label="Processed Image", type="pil")], | |
| title="@IT AI Enthusiast - Project 6: Object Detector", | |
| description="Detect objects in the provided input image.", | |
| ) | |
| demo.launch() | |