import gradio as gr import torch from ultralyticsplus import YOLO, render_result # torch.hub.download_url_to_file( # 'https://en.wikipedia.org/wiki/Human_eye#/media/File:Human_eye,_anterior_view.jpg', 'one.jpg') # torch.hub.download_url_to_file( # 'https://glaucoma.org/wp-content/uploads/2024/01/amazing-eye-close-up_900-585x540.jpg', 'two.jpg') # torch.hub.download_url_to_file( # 'https://www.nvisioncenters.com/wp-content/uploads//woman-blue-eye-close-up-352x235.jpg', 'three.jpg') def yoloV8_func(image: gr.Image = None, image_size: int = 640, conf_threshold: float = 0.70, iou_threshold: float = 0.50): """This function performs YOLOv8 object detection on the given image. Args: image (gr.Image, optional): Input image to detect objects on. Defaults to None. image_size (int, optional): Desired image size for the model. Defaults to 640. conf_threshold (float, optional): Confidence threshold for object detection. Defaults to 0.7. iou_threshold (float, optional): Intersection over Union threshold for object detection. Defaults to 0.50. """ # Load the YOLOv8 model from the 'best.pt' checkpoint #model_path = "EyesCareEyeDetectModel.pt" model = YOLO("yolov8n.pt") # Perform object detection on the input image using the YOLOv8 model results = model.predict(image, conf=conf_threshold, iou=iou_threshold, imgsz=image_size) # Print the detected objects' information (class, coordinates, and probability) box = results[0].boxes print("Object type:", box.cls) print("Coordinates:", box.xyxy) print("Probability:", box.conf) # Render the output image with bounding boxes around detected objects render = render_result(model=model, image=image, result=results[0]) return render inputs = [ gr.Image(type="filepath", label="Input Image"), gr.Slider(minimum=320, maximum=1280, value=640, step=32, label="Image Size"), gr.Slider(minimum=0.0, maximum=1.0, value=0.25, step=0.05, label="Confidence Threshold"), gr.Slider(minimum=0.0, maximum=1.0, value=0.45, step=0.05, label="IOU Threshold"), ] outputs = gr.Image(type="filepath", label="Output Image") title = "YOLOv9 101: Custom Object Detection on Eye" examples = [['one.jpg', 640, 0.5, 0.7], ['two.jpg', 640, 0.5, 0.6], ['three.jpg', 640, 0.5, 0.8]] yolo_app = gr.Interface( fn=yoloV8_func, inputs=inputs, outputs=outputs, title=title, examples=examples, cache_examples=True, ) # Launch the Gradio interface in debug mode with queue enabled yolo_app.launch(debug=True, enable_queue=True)