Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from ultralytics.utils.plotting import Annotator | |
| import numpy as np | |
| import cv2 | |
| from PIL import Image | |
| import io | |
| import yolov9 | |
| # Load the YOLOv9 model | |
| model = yolov9.load('fracture.pt', device="cpu") | |
| model.conf = 0.1 # Lowered the confidence threshold | |
| model.iou = 0.45 | |
| def Predict(img): | |
| # Convert the image to an OpenCV format | |
| img_array = np.array(img) | |
| img = cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR) | |
| # Perform prediction | |
| results = model(img, size=640) | |
| print(results) | |
| annotator = Annotator(img, line_width=2, example=str('Fracture')) | |
| for result in results.xyxy[0]: | |
| xmin, ymin, xmax, ymax, confidence, class_id = result | |
| label = results.names[int(class_id)] | |
| confidence = float(confidence) | |
| # Annotate the image | |
| annotator.box_label([xmin, ymin, xmax, ymax], f"{label} {confidence:.2f}", color=(255, 0, 0)) | |
| annotated_img = annotator.result() | |
| return annotated_img | |
| # Streamlit app | |
| st.title("YOLOv9 Fracture Detection") | |
| # Image upload section | |
| uploaded_file = st.file_uploader("Choose an image...", type=["png", "jpg", "jpeg"]) | |
| if uploaded_file is not None: | |
| # Convert the uploaded file to a JPEG image | |
| image = Image.open(uploaded_file).convert("RGB") | |
| img_byte_arr = io.BytesIO() | |
| image.save(img_byte_arr, format="JPEG") | |
| image = Image.open(io.BytesIO(img_byte_arr.getvalue())) | |
| # Display the uploaded image | |
| st.image(image, caption='Uploaded Image.', use_column_width=True) | |
| # Run the prediction | |
| st.write("Detecting fractures...") | |
| annotated_image = Predict(image) | |
| # Convert the annotated image back to RGB for display in Streamlit | |
| annotated_image = cv2.cvtColor(annotated_image, cv2.COLOR_BGR2RGB) | |
| # Display the annotated image | |
| st.image(annotated_image, caption='Annotated Image.', use_column_width=True) | |