Test / app.py
jayanthapoojary1989's picture
Update app.py
15d4bb4 verified
import gradio as gr
from ultralytics import YOLO
import cv2
import numpy as np
# Load your trained YOLOv8 model
model = YOLO('pytorch_yolov8_model.pt') # Update this path to your model weights file
def detect_pneumonia(image):
# YOLOv8 expects image in numpy array format (BGR)
image_bgr = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
# Run prediction
results = model.predict(image_bgr, conf=0.5)
# Draw bounding boxes
for r in results:
for box in r.boxes:
x1, y1, x2, y2 = map(int, box.xyxy[0])
conf = box.conf[0]
label = f'Pneumonia: {conf:.2f}'
cv2.rectangle(image_bgr, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(image_bgr, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2)
# Convert back to RGB for display
result_image = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB)
return result_image
# Gradio Interface
interface = gr.Interface(
fn=detect_pneumonia,
inputs=gr.Image(type="pil"),
outputs=gr.Image(type="pil"),
title="Pneumonia Detection with YOLOv8",
description="Upload a chest X-ray image. The model will predict pneumonia regions using bounding boxes."
)
if __name__ == "__main__":
interface.launch()