File size: 1,237 Bytes
32b7861
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from inference_example import AgribotInference

# 1) Charger le modèle UNE FOIS au démarrage
predictor = AgribotInference(model_path="agribot_models.pkl")

# 2) Fonction utilisée par l’UI Gradio
def infer(image):
    """
    image: PIL Image (Gradio gère ça pour toi)
    """
    # On adapte légèrement: le predict actuel prend un chemin de fichier,
    # alors on peut soit modifier la classe, soit créer une variante.
    # Ici, on réécrit une petite fonction dédiée.
    image = image.convert("RGB")
    img_tensor = predictor.transform(image).unsqueeze(0)
    features = predictor.extract_features(img_tensor)
    prediction_idx = predictor.model.predict(features)[0]
    probabilities = predictor.model.predict_proba(features)[0]
    confidence = float(probabilities.max() * 100)
    diagnosis = predictor.class_labels[prediction_idx]
    return f"{diagnosis} ({confidence:.2f}%)"

demo = gr.Interface(
    fn=infer,
    inputs=gr.Image(type="pil", label="Upload maize leaf image"),
    outputs=gr.Textbox(label="Diagnosis"),
    title="AgriBot - Maize Leaf Disease Diagnosis",
    description="Upload a maize leaf image to get a disease diagnosis."
)

if __name__ == "__main__":
    demo.launch()