| | from PIL import Image |
| | import requests |
| | from io import BytesIO |
| |
|
| | |
| | model = tf.keras.models.load_model('trained_modela.keras') |
| |
|
| | class_name = ['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_disease(image): |
| | """ |
| | Predict plant disease from uploaded image |
| | """ |
| | try: |
| | |
| | image = image.resize((128, 128)) |
| | input_arr = tf.keras.preprocessing.image.img_to_array(image) |
| | input_arr = np.array([input_arr]) |
| | input_arr = input_arr / 255.0 |
| | |
| | |
| | prediction = model.predict(input_arr) |
| | result_index = np.argmax(prediction) |
| | confidence = prediction[0][result_index] |
| | |
| | |
| | disease_name = class_name[result_index] |
| | |
| | return f"Disease: {disease_name}\nConfidence: {confidence:.2%}" |
| | |
| | except Exception as e: |
| | return f"Error: {str(e)}" |
| |
|
| | |
| | iface = gr.Interface( |
| | fn=predict_disease, |
| | inputs=gr.Image(type="pil", label="Upload Plant Image"), |
| | outputs=gr.Textbox(label="Prediction Result"), |
| | title="Plant Disease Detection API", |
| | description="Upload an image of a plant leaf to detect diseases", |
| | examples=[ |
| | |
| | ] |
| | ) |
| |
|
| | if __name__ == "__main__": |
| | iface.launch() |