File size: 1,728 Bytes
a326b94 3bb1400 912e146 3bb1400 0000f4a 912e146 005d8cf f0f1078 912e146 3bb1400 912e146 0000f4a 3bb1400 912e146 3bb1400 0000f4a 3bb1400 912e146 3bb1400 912e146 3bb1400 6ea5ee2 3bb1400 912e146 3bb1400 912e146 3bb1400 6ea5ee2 912e146 6ea5ee2 3bb1400 |
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 56 |
import streamlit as st
from transformers import pipeline
from PIL import Image
import io
st.set_page_config(page_title="Knochenbrucherkennung", layout="centered")
@st.cache_resource
def load_model():
return pipeline("image-classification", model="Heem2/bone-fracture-detection-using-xray")
def main():
st.title("🦴 Knochenbrucherkennung")
st.write("Laden Sie ein Röntgenbild hoch.")
pipe = load_model()
uploaded_file = st.file_uploader(
"Röntgenbild auswählen",
type=['png', 'jpg', 'jpeg']
)
conf_threshold = st.slider(
"Konfidenzschwelle",
min_value=0.0,
max_value=1.0,
value=0.3,
step=0.01
)
if uploaded_file:
image = Image.open(uploaded_file)
# Redimensionner l'image
max_size = (400, 400)
image.thumbnail(max_size, Image.Resampling.LANCZOS)
st.image(image, caption="Hochgeladenes Bild")
with st.spinner("Analyse läuft..."):
predictions = pipe(image)
st.subheader("Ergebnisse")
for pred in predictions:
if pred['score'] >= conf_threshold:
label = "Bruch erkannt" if "fracture" in pred['label'].lower() else "Kein Bruch"
st.write(f"• Diagnose: {label}")
st.write(f"• Konfidenz: {pred['score']:.2%}")
if "fracture" in pred['label'].lower() and pred['score'] >= conf_threshold:
st.warning("⚠️ Möglicher Knochenbruch erkannt!")
else:
st.success("✅ Kein Bruch erkannt")
if __name__ == "__main__":
main() |