Spaces:
Runtime error
Runtime error
| # from ultralytics import YOLO | |
| # import cv2 | |
| # import matplotlib.pyplot as plt | |
| # import matplotlib.patches as patches | |
| # import numpy as np | |
| # import requests | |
| # model = YOLO('best (5).pt') | |
| # img_url = 'https://www.greendna.in/cdn/shop/products/1296x728_Holy_Basil_1155x.jpg?v=1591462900' | |
| # response = requests.get(img_url, stream=True) | |
| # img_array = np.asarray(bytearray(response.content), dtype=np.uint8) | |
| # img = cv2.imdecode(img_array, cv2.IMREAD_COLOR) | |
| # classes_ = {0: 'anthurium', 1: 'clivia', 2: 'dieffenbachia', 3: 'dracaena', 4: 'gloxinia', 5: 'kalanchoe', 6: 'orchid', 7: 'sansevieria', 8: 'violet', 9: 'zamioculcas'} | |
| # results = model.predict(source=img, conf = 0.4) | |
| # # results = model.predict('api/default_1280-720-screenshot.webp', confidence=40, overlap=30).json() | |
| # boxes = results[0].boxes.xyxy.tolist() | |
| # classes = results[0].boxes.cls.tolist() | |
| # names = results[0].names | |
| # confidences = results[0].boxes.conf.tolist() | |
| # print(boxes) | |
| # print(classes) | |
| # print(names) | |
| # print(confidences) | |
| # # Iterate through the results | |
| # for box, cls, conf in zip(boxes, classes, confidences): | |
| # x1, y1, x2, y2 = box | |
| # confidence = conf | |
| # detected_class = cls | |
| # name = names[int(cls)] | |
| # def plot_img_bbox(img, target): | |
| # fig, a = plt.subplots(1,1) | |
| # fig.set_size_inches(10, 10) | |
| # a.imshow(img) | |
| # for i, box in enumerate(target): | |
| # #print(target['boxes']) | |
| # x, y, width, height = box[0], box[1], box[2]-box[0], box[3]-box[1] | |
| # # if arr[target['labels'][i]] == 'ad': | |
| # rect = patches.Rectangle((x, y), | |
| # width, height, | |
| # linewidth = 2, | |
| # edgecolor = 'r', | |
| # facecolor = 'none') | |
| # a.text(x, y-20, classes_[classes[i]], color='b', verticalalignment='top') | |
| # a.add_patch(rect) | |
| # plt.show() | |
| # # if length of boxes is zero that means no deceptive popups were found | |
| # plot_img_bbox(img, boxes) | |
| import requests | |
| from ultralytics import YOLO | |
| import cv2 | |
| import matplotlib.pyplot as plt | |
| import matplotlib.patches as patches | |
| import numpy as np | |
| import gradio as gr | |
| model = YOLO('best (5).pt') | |
| def plot_img_bbox(img, target, save_path, classes): | |
| fig, a = plt.subplots(1, 1) | |
| fig.set_size_inches(10, 10) | |
| classes_ = {0: 'anthurium', 1: 'clivia', 2: 'dieffenbachia', 3: 'dracaena', 4: 'gloxinia', 5: 'kalanchoe', 6: 'orchid', 7: 'sansevieria', 8: 'violet', 9: 'zamioculcas'} | |
| a.imshow(img) | |
| for i, box in enumerate(target): | |
| x, y, width, height = box[0], box[1], box[2] - box[0], box[3] - box[1] | |
| rect = patches.Rectangle((x, y), width, height, linewidth=2, edgecolor='r', facecolor='none') | |
| a.text(x, y - 20, classes_[classes[i]], color='b', verticalalignment='top') | |
| a.add_patch(rect) | |
| plt.savefig(save_path) | |
| plt.close() | |
| upload_url = upload_to_cloudinary(save_path) | |
| return upload_url | |
| def upload_to_cloudinary(local_file_path): | |
| upload_url = 'https://api.cloudinary.com/v1_1/ddvajyjou/image/upload' | |
| files = {'file': open(local_file_path, 'rb')} | |
| params = {'upload_preset': 'nb6tvi1b'} | |
| response = requests.post(upload_url, files=files, params=params) | |
| if response.status_code == 200: | |
| return response.json()['secure_url'] | |
| else: | |
| print(f"Error uploading to Cloudinary: {response.status_code}") | |
| return None | |
| def index(img_url): | |
| response = requests.get(img_url, stream=True) | |
| img_array = np.asarray(bytearray(response.content), dtype=np.uint8) | |
| img = cv2.imdecode(img_array, cv2.IMREAD_COLOR) | |
| print(img_url) | |
| results = model.predict(source=img, conf = 0.4) | |
| boxes = results[0].boxes.xyxy.tolist() | |
| classes = results[0].boxes.cls.tolist() | |
| names = results[0].names | |
| confidences = results[0].boxes.conf.tolist() | |
| print(boxes) | |
| print(classes) | |
| print(names) | |
| print(confidences) | |
| final_url = plot_img_bbox(img, boxes, 'image.png', classes) | |
| return final_url | |
| inputs_image_url = [ | |
| gr.Textbox(type="text", label="Image URL"), | |
| ] | |
| outputs_result_dict = [ | |
| gr.Textbox(type="text", label="Result Dictionary"), | |
| ] | |
| interface_image_url = gr.Interface( | |
| fn=index, | |
| inputs=inputs_image_url, | |
| outputs=outputs_result_dict, | |
| title="Popup detection", | |
| cache_examples=False, | |
| ) | |
| gr.TabbedInterface( | |
| [interface_image_url], | |
| tab_names=['Image inference'] | |
| ).queue().launch() |