Spaces:
Sleeping
Sleeping
| from PIL import Image | |
| import gradio as gr | |
| # import gradio as gr | |
| import PIL.Image as Image | |
| from ultralytics import ASSETS, YOLO | |
| # object_detector_model_path = 'new_data_improved_object_detector.pt' | |
| logo_detector_model_path ='logo_detector_grayscale_v2.pt' | |
| # read models | |
| object_detector_new = 'august_3_model.pt' | |
| # logo_detector_model_path = 'logo_detector_june_trained.pt' | |
| object_model = YOLO(object_detector_new) | |
| logo_model = YOLO(logo_detector_model_path) | |
| def Get_logo_xywh(model_result_input): | |
| model_result = model_result_input[0] | |
| xywh = model_result.boxes.xywh.cpu().tolist() | |
| clss = model_result.boxes.cls.cpu().tolist() | |
| # names = model_result_input[0].names | |
| confidence = model_result.boxes.conf.cpu().tolist() | |
| xyxy = model_result.boxes.cpu().xyxy.tolist() | |
| return xywh, clss, confidence, xyxy | |
| def predict_image(img, conf_threshold, iou_threshold): | |
| """Predicts and plots labeled objects in an image using YOLOv8 model with adjustable confidence and IOU thresholds.""" | |
| resized_image = img.resize((640, 640)) | |
| # Convert the input image to grayscale | |
| img = resized_image.convert('L') | |
| logo_results = logo_model.predict( | |
| source=img, | |
| conf=conf_threshold, | |
| iou=iou_threshold, | |
| show_labels=True, | |
| show_conf=True, | |
| imgsz=640, | |
| ) | |
| logo_im_arrays = [] | |
| for r in logo_results: | |
| im_array = r.plot() | |
| im = Image.fromarray(im_array[..., ::-1]) | |
| logo_im_arrays.append(im) | |
| object_result = object_model.predict( | |
| source=img, | |
| conf=conf_threshold, | |
| iou=iou_threshold, | |
| show_labels=True, | |
| show_conf=True, | |
| imgsz=640, | |
| ) | |
| im_arrays = [] | |
| for r in object_result: | |
| im_array = r.plot() | |
| im = Image.fromarray(im_array[..., ::-1]) | |
| im_arrays.append(im) | |
| logo_xywh, logo_clss, logo_confidence, logo_xyxy = Get_logo_xywh(logo_results) | |
| object_xywh, object_clss, object_confidence, object_xyxy = Get_logo_xywh(object_result) | |
| return logo_im_arrays,im_arrays, logo_xywh, logo_clss, logo_confidence, logo_xyxy,object_xywh, object_clss, object_confidence, object_xyxy | |
| iface = gr.Interface( | |
| fn=predict_image, | |
| inputs=[ | |
| gr.Image(type="pil", label="Upload Image"), | |
| gr.Slider(minimum=0, maximum=1, value=0.25, label="Confidence threshold"), | |
| gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU threshold"), | |
| ], | |
| outputs=[ | |
| gr.Gallery(label="logo Images"), | |
| gr.Gallery(label="object Images"), | |
| gr.JSON(label="Detection Bounding Boxes (l_xywh)"), | |
| gr.JSON(label="Detection Class Indices"), | |
| gr.JSON(label="Detection Confidence Scores"), | |
| gr.JSON(label="Detection Bounding Boxes (l_xyxy)"), | |
| gr.JSON(label="Detection Bounding Boxes (l_xywh)"), | |
| gr.JSON(label="Detection Class Indices"), | |
| gr.JSON(label="Detection Confidence Scores"), | |
| gr.JSON(label="Detection Bounding Boxes (l_xyxy)"), | |
| ], | |
| title="Ultralytics Gradio", | |
| description="Upload images for inference. The Ultralytics YOLOv8n model is used by default.", | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch(show_error=True) |