Spaces:
Runtime error
Runtime error
| from transformers import AutoFeatureExtractor, AutoModelForObjectDetection | |
| import matplotlib.pyplot as plt | |
| import matplotlib.patches as patches | |
| from random import choice | |
| from PIL import Image | |
| import os | |
| from matplotlib import rcParams, font_manager | |
| import streamlit as st | |
| import urllib.request | |
| import requests | |
| extractor = AutoFeatureExtractor.from_pretrained("facebook/detr-resnet-50") | |
| model = AutoModelForObjectDetection.from_pretrained("facebook/detr-resnet-50") | |
| from transformers import pipeline | |
| pipe = pipeline('object-detection', model=model, feature_extractor=extractor) | |
| img_url = st.text_input('Image URL', 'https://images.unsplash.com/photo-1556911220-bff31c812dba?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2468&q=80') | |
| st.caption('Downloading Image...') | |
| img_data = requests.get(img_url).content | |
| with open('detect.jpg', 'wb') as handler: | |
| handler.write(img_data) | |
| st.caption('Running Detection...') | |
| output = pipe(img_url) | |
| st.caption('Adding Predictions to Image...') | |
| fpath = "Poppins-SemiBold.ttf" | |
| prop = font_manager.FontProperties(fname=fpath) | |
| img = Image.open('detect.jpg') | |
| plt.figure(dpi=2400) | |
| # Create figure and axes | |
| fig, ax = plt.subplots() | |
| # Display the image | |
| ax.imshow(img) | |
| colors = ["#ef4444", "#f97316", "#eab308", "#84cc16", "#06b6d4", "#6366f1"] | |
| # Create a Rectangle patch | |
| for prediction in output: | |
| selected_color = choice(colors) | |
| x, y, w, h = prediction['box']['xmin'], prediction['box']['ymin'], prediction['box']['xmax'] - prediction['box']['xmin'], prediction['box']['ymax'] - prediction['box']['ymin'] | |
| rect = patches.FancyBboxPatch((x, y), w, h, linewidth=1.25, edgecolor=selected_color, facecolor='none', boxstyle="round,pad=-0.0040,rounding_size=10",) | |
| ax.add_patch(rect) | |
| plt.text(x, y-25, f"{prediction['label']}: {round(prediction['score']*100, 1)}%", fontsize=5, color=selected_color, fontproperties=prop) | |
| plt.axis('off') | |
| plt.savefig('detect-bbox.jpg', dpi=1200, bbox_inches='tight') | |
| image = Image.open('detect-bbox.jpg') | |
| st.image(image, caption='DETR Image') | |
| plt.show() | |
| st.caption('Done!') |