File size: 1,890 Bytes
a326b94 f0f1078 7b58439 0000f4a f0f1078 0000f4a 005d8cf f0f1078 b5fbdeb d7739b8 b5fbdeb 0000f4a f0f1078 0000f4a 3cabc2b d7739b8 f0f1078 0000f4a 3cabc2b f0f1078 3cabc2b f5a9b22 3cabc2b b5fbdeb 3cabc2b f5a9b22 3cabc2b f0f1078 f5a9b22 3cabc2b b5fbdeb 3cabc2b f0f1078 3cabc2b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import streamlit as st
from transformers import pipeline
from PIL import Image
import numpy as np
import cv2
st.set_page_config(page_title="Détection de fractures osseuses")
st.title("Détection de fractures osseuses par rayons X")
@st.cache_resource
def load_model():
return pipeline(
"object-detection",
model="anirban22/detr-resnet-50-med_fracture",
threshold=0.1
)
model = load_model()
uploaded_file = st.file_uploader("Téléchargez une image radiographique", type=["jpg", "jpeg", "png"])
if uploaded_file:
# Convert uploaded file to PIL Image
image = Image.open(uploaded_file).convert('RGB')
if image.size[0] > 800:
ratio = 800.0 / image.size[0]
size = (800, int(image.size[1] * ratio))
image = image.resize(size, Image.Resampling.LANCZOS)
# Pass PIL Image directly to model
predictions = model(image)
col1, col2 = st.columns(2)
with col1:
st.image(image, caption="Image originale", use_container_width=True)
with col2:
img_array = np.array(image)
for pred in predictions:
box = pred['box']
score = pred['score']
x1, y1, x2, y2 = [int(i) for i in [box['xmin'], box['ymin'], box['xmax'], box['ymax']]]
cv2.rectangle(img_array, (x1, y1), (x2, y2), (255, 0, 0), 3)
text = f"Fracture: {score:.2f}"
cv2.putText(img_array, text, (x1, y1-10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 0, 0), 2)
st.image(img_array, caption="Détection des fractures", use_container_width=True)
if predictions:
st.subheader(f"🚨 {len(predictions)} fractures détectées:")
for idx, pred in enumerate(predictions, 1):
st.warning(f"Fracture {idx}: Confiance {pred['score']*100:.1f}%")
else:
st.warning("⚠️ Aucune fracture détectée") |