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) |