Spaces:
Runtime error
Runtime error
| from transformers import pipeline | |
| from transformers import DetrFeatureExtractor, DetrForObjectDetection | |
| from PIL import Image, ImageDraw, ImageFont | |
| import gradio as gr | |
| # Initialize another model and feature extractor | |
| feature_extractor = DetrFeatureExtractor.from_pretrained('facebook/detr-resnet-50') | |
| model = DetrForObjectDetection.from_pretrained('facebook/detr-resnet-50') | |
| # Initialize the object detection pipeline | |
| object_detector = pipeline("object-detection", model = model, feature_extractor = feature_extractor) | |
| # Draw bounding box definition | |
| def draw_bounding_box(im, score, label, xmin, ymin, xmax, ymax, index, num_boxes): | |
| """ Draw a bounding box. """ | |
| # Draw the actual bounding box | |
| outline = ' ' | |
| if label in ['truck', 'car', 'motorcycle', 'bus']: | |
| outline = 'red' | |
| elif label in ['person', 'bicycle']: | |
| outline = 'green' | |
| else: | |
| outline = 'blue' | |
| im_with_rectangle = ImageDraw.Draw(im) | |
| im_with_rectangle.rounded_rectangle((xmin, ymin, xmax, ymax), outline = outline, width = 3, radius = 10) | |
| # Return the result | |
| return im | |
| def detect_image(im): | |
| # Perform object detection | |
| bounding_boxes = object_detector(im) | |
| # Iteration elements | |
| num_boxes = len(bounding_boxes) | |
| index = 0 | |
| # Draw bounding box for each result | |
| for bounding_box in bounding_boxes: | |
| if bounding_box['label'] in ['person','motorcycle','bicycle', 'truck', 'car','bus']: | |
| box = bounding_box['box'] | |
| #Draw the bounding box | |
| output_image = draw_bounding_box(im, bounding_box['score'], | |
| bounding_box['label'], | |
| box['xmin'], box['ymin'], | |
| box['xmax'], box['ymax'], | |
| index, num_boxes) | |
| index += 1 | |
| return output_image | |
| TITLE = 'Active Transport Detection' | |
| DESCRIPTION = 'This uses DETR as an object detection model and detects motor vehicles (red) and people and bikes (green). Much fine-tuning and optimization is still needed to make this a practical application' | |
| examples = [['bike.jpg'], ['bike2.jpg'], ['bike_3.jpg'], ['bike_4.jpg']] | |
| iface = gr.Interface(detect_image, gr.inputs.Image(type = 'pil'), gr.outputs.Image(), examples = examples, allow_flagging = 'never', title = TITLE, description = DESCRIPTION).launch(debug = True) |