agribot / app.py
crusadersAI's picture
Create app.py
32b7861 verified
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()