de / app.py
abdallah110's picture
Update app.py
c7bf470 verified
import gradio as gr
import tensorflow as tf
import numpy as np
from PIL import Image
# ==================== تحميل الموديل ====================
model = tf.keras.models.load_model("trained_model.h5")
# ==================== أسماء الكلاسات ====================
class_names = [
'Apple___Apple_scab', 'Apple___Black_rot', 'Apple___Cedar_apple_rust', 'Apple___healthy',
'Blueberry___healthy', 'Cherry_(including_sour)___Powdery_mildew',
'Cherry_(including_sour)___healthy', 'Corn_(maize)___Cercospora_leaf_spot Gray_leaf_spot',
'Corn_(maize)___Common_rust_', 'Corn_(maize)___Northern_Leaf_Blight', 'Corn_(maize)___healthy',
'Grape___Black_rot', 'Grape___Esca_(Black_Measles)', 'Grape___Leaf_blight_(Isariopsis_Leaf_Spot)',
'Grape___healthy', 'Orange___Haunglongbing_(Citrus_greening)', 'Peach___Bacterial_spot',
'Peach___healthy', 'Pepper,_bell___Bacterial_spot', 'Pepper,_bell___healthy',
'Potato___Early_blight', 'Potato___Late_blight', 'Potato___healthy',
'Raspberry___healthy', 'Soybean___healthy', 'Squash___Powdery_mildew',
'Strawberry___Leaf_scorch', 'Strawberry___healthy', 'Tomato___Bacterial_spot',
'Tomato___Early_blight', 'Tomato___Late_blight', 'Tomato___Leaf_Mold',
'Tomato___Septoria_leaf_spot', 'Tomato___Spider_mites Two-spotted_spider_mite',
'Tomato___Target_Spot', 'Tomato___Tomato_Yellow_Leaf_Curl_Virus', 'Tomato___Tomato_mosaic_virus',
'Tomato___healthy'
]
# ==================== دالة التنبؤ ====================
def predict(image):
# تحضير الصورة
img = Image.fromarray(image).resize((128, 128))
input_arr = np.array(img, dtype=np.float32)
input_arr = np.expand_dims(input_arr, axis=0) # تحويل لـ batch
# التنبؤ
predictions = model.predict(input_arr)
result_index = int(np.argmax(predictions))
confidence = float(np.max(predictions))
# إرجاع أعلى 5 نتائج
top5_indices = np.argsort(predictions[0])[::-1][:5]
top5_results = {class_names[i]: float(predictions[0][i]) for i in top5_indices}
return top5_results
# ==================== واجهة Gradio ====================
iface = gr.Interface(
fn=predict,
inputs=gr.Image(type="numpy", label="ارفع صورة الورقة"),
outputs=gr.Label(num_top_classes=5, label="النتيجة"),
title="🌿 Plant Disease Recognition",
description="ارفع صورة ورقة نبات وسيقوم النظام بتحديد المرض",
examples=[], # ممكن تضيف أمثلة هنا
allow_flagging="never"
)
iface.launch()