File size: 1,540 Bytes
a326b94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from transformers import AutoProcessor, AutoModelForImageClassification
from PIL import Image
import requests

# Titre de l'application
st.title("RADPID: Assistant de diagnostic radiologique")
st.markdown("**Chargez une radiographie et sélectionnez la tâche souhaitée :**")

# Sélection des tâches
task = st.radio("Sélectionnez une tâche", ["Fracture Detection", "Pneumothorax Detection", "Pneumonia Detection"])

# Modèles
models = {
    "Fracture Detection": "facebook/detr-resnet-50",
    "Pneumothorax Detection": "RGDancer/Pneumothorax_detection",
    "Pneumonia Detection": "wanghaoy/Chest_XRay_Pneumonia",
}

# Charger le modèle et le processeur correspondant
model_name = models[task]
processor = AutoProcessor.from_pretrained(model_name)
model = AutoModelForImageClassification.from_pretrained(model_name)

# Upload de l'image
uploaded_file = st.file_uploader("Upload your Chest X-Ray image", type=["png", "jpg", "jpeg"])

if uploaded_file is not None:
    # Charger l'image
    image = Image.open(uploaded_file).convert("RGB")
    st.image(image, caption="Image Uploadée", use_column_width=True)

    # Effectuer la prédiction
    st.markdown("### Résultat de la prédiction :")
    with st.spinner("Analyse en cours..."):
        inputs = processor(images=image, return_tensors="pt")
        outputs = model(**inputs)
        predictions = outputs.logits.softmax(dim=-1).tolist()

        # Afficher les scores
        st.write(f"Scores pour la tâche '{task}':")
        st.json(predictions)