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()