Spaces:
Sleeping
Sleeping
import gradio as gr | |
import numpy as np | |
import tensorflow as tf | |
import cv2 | |
import os | |
import requests | |
from yolo import Yolo | |
model_link = "https://intranet-projects-files.s3.amazonaws.com/holbertonschool-ml/yolo.h5" | |
im_link = "https://miro.medium.com/v2/resize:fit:720/format:webp/1*EYFejGUjvjPcc4PZTwoufw.jpeg" | |
def download_model(): | |
if not os.path.exists('data'): | |
os.makedirs('data') | |
if not os.path.exists('data/yolo.h5'): | |
print("Downloading model...") | |
r = requests.get(model_link) | |
with open('data/yolo.h5', 'wb') as f: | |
f.write(r.content) | |
print("Model downnloaded") | |
else: | |
print("Model already exists locally.") | |
if not os.path.exists('data/exm.jpg'): | |
print("Downloading image...") | |
r = requests.get(im_link) | |
with open('data/exm.jpg', 'wb') as f: | |
f.write(r.content) | |
print("Image downnloaded") | |
def run(img): | |
np.random.seed(0) | |
anchors = np.array([[[116, 90], [156, 198], [373, 326]], | |
[[30, 61], [62, 45], [59, 119]], | |
[[10, 13], [16, 30], [33, 23]]]) | |
yolo = Yolo('data/yolo.h5', 'coco_classes.txt', 0.6, 0.5, anchors) | |
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
boxes, box_classes, box_scores = yolo.predict_frame(img) | |
for idx, box in enumerate(boxes): | |
top_left_x = int(box[0]) | |
top_left_y = int(box[1]) | |
bottom_right_x = int(box[2]) | |
bottom_right_y = int(box[3]) | |
class_name = yolo.class_names[box_classes[idx]] | |
score = box_scores[idx] | |
color = (255, 0, 0) | |
cv2.rectangle(img, (top_left_x, top_left_y), | |
(bottom_right_x, bottom_right_y), | |
color, 2) | |
text = f"{class_name} {score:.2f}" | |
cv2.putText(img, text, (top_left_x, top_left_y - 5), | |
cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 1, | |
cv2.LINE_AA) | |
# Convert image back from RGB to BGR for displaying with OpenCV | |
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) | |
return img | |
demo = gr.Interface(run, "image", "image" ) | |
if __name__ == "__main__": | |
download_model() | |
demo.launch() | |