EyesCare2 / app.py
MalekCode03's picture
Update Model
3930917
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)