| | import gradio as gr |
| | from PIL import Image, ImageDraw, ImageFont |
| |
|
| |
|
| | |
| | from transformers import pipeline |
| |
|
| | |
| | |
| |
|
| | object_detector = pipeline("object-detection", |
| | model="facebook/detr-resnet-50") |
| |
|
| | |
| | |
| |
|
| |
|
| | def draw_bounding_boxes(image, detections, font_path=None, font_size=20): |
| | |
| | draw_image = image.copy() |
| | draw = ImageDraw.Draw(draw_image) |
| |
|
| | |
| | if font_path: |
| | font = ImageFont.truetype(font_path, font_size) |
| | else: |
| | |
| | font = ImageFont.load_default() |
| | |
| |
|
| | for detection in detections: |
| | box = detection['box'] |
| | xmin = box['xmin'] |
| | ymin = box['ymin'] |
| | xmax = box['xmax'] |
| | ymax = box['ymax'] |
| |
|
| | |
| | draw.rectangle([(xmin, ymin), (xmax, ymax)], outline="red", width=3) |
| |
|
| | |
| | label = detection['label'] |
| | score = detection['score'] |
| | text = f"{label} {score:.2f}" |
| |
|
| | |
| | if font_path: |
| | text_size = draw.textbbox((xmin, ymin), text, font=font) |
| | else: |
| | |
| | text_size = draw.textbbox((xmin, ymin), text) |
| |
|
| | draw.rectangle([(text_size[0], text_size[1]), (text_size[2], text_size[3])], fill="red") |
| | draw.text((xmin, ymin), text, fill="white", font=font) |
| |
|
| | return draw_image |
| |
|
| |
|
| | def detect_object(image): |
| | raw_image = image |
| | lst=[] |
| | output = object_detector(raw_image) |
| | for i in output: |
| | lst.append(i['label']) |
| | processed_image = draw_bounding_boxes(raw_image, output) |
| | return processed_image,lst |
| |
|
| | demo = gr.Interface(fn=detect_object, |
| | inputs=[gr.Image(label="Select Image",type="pil")], |
| | outputs=[gr.Image(label="Processed Image", type="pil"),gr.Textbox(label="Objcts", lines=3),], |
| | title="Object Detector", |
| | description="THIS APPLICATION WILL BE USED TO DETECT OBJECTS INSIDE THE PROVIDED INPUT IMAGE / Live FEED .") |
| | demo.launch() |