| import gradio as gr |
| import torch |
| from ultralytics import YOLO |
| import cv2 |
|
|
| |
| model = YOLO("best.pt") |
|
|
| |
| def predict(image): |
| |
| results = model(image) |
|
|
| |
| annotated_img = results[0].plot() |
|
|
| |
| detections = results[0].boxes |
| output_text = "" |
|
|
| if detections is not None and len(detections.cls) > 0: |
| output_text += "Prediction Summary:\n\n" |
| for i, box in enumerate(detections): |
| cls_id = int(box.cls.item()) |
| conf = float(box.conf.item()) |
| label = model.names[cls_id] |
| health_status = "Diseased" if label.lower() != "healthy" else "Healthy" |
|
|
| output_text += f"Status: {health_status}\n" |
| output_text += f"Disease: {label}\n" |
| output_text += f"Confidence: {conf:.2f}\n\n" |
| else: |
| output_text = "No disease detected. The cow appears to be healthy." |
|
|
| return annotated_img, output_text |
|
|
| |
| iface = gr.Interface( |
| fn=predict, |
| inputs=gr.Image(type="pil"), |
| outputs=[ |
| gr.Image(type="pil", label="Annotated Image"), |
| gr.Textbox(label="Prediction Details") |
| ], |
| title="CowSense - Livestock Disease Detection", |
| description="Upload an image of a cow to detect health status and disease type using a trained YOLOv8 model." |
| ) |
|
|
| iface.launch() |