Spaces:
Sleeping
Sleeping
import numpy as np | |
import gradio as gr | |
import tensorflow as tf #version 2.13.0 | |
import keras #version | |
import numpy as np | |
import cv2 | |
import tensorflow as tf | |
import h5py | |
def analyse(img,plant_type): | |
label_disease = { | |
0 : 'Apple___Apple_scab', | |
1 : 'Apple___Black_rot', | |
2 : 'Apple___Cedar_apple_rust', | |
3 : 'Apple___healthy', | |
4 : 'Background_without_leaves', | |
5 : 'Blueberry___healthy', | |
6 : 'Cherry___Powdery_mildew', | |
7 : 'Cherry___healthy', | |
8 : 'Corn___Cercospora_leaf_spot_Gray_leaf_spot', | |
9 : 'Corn___Common_rust', | |
10: 'Corn___Northern_Leaf_Blight', | |
11: 'Corn___healthy', | |
12: 'Grape___Black_rot', | |
13: 'Grape___Esca_(Black_Measles)', | |
14: 'Grape___Leaf_blight_(Isariopsis_Leaf_Spot)', | |
15: 'Grape___healthy', | |
16: 'Orange___Haunglongbing_Citrus_greening', | |
17: 'Peach___Bacterial_spot', | |
18: 'Peach___healthy', | |
19: 'Pepper_bell___Bacterial_spot', | |
20: 'Pepper_bell___healthy', | |
21: 'Potato___Early_blight', | |
22: 'Potato___Late_blight', | |
23: 'Potato___healthy', | |
24: 'Raspberry___healthy', | |
25: 'Soybean___healthy', | |
26: 'Squash___Powdery_mildew', | |
27: 'Strawberry___Leaf_scorch', | |
28: 'Strawberry___healthy', | |
29: 'Tomato___Bacterial_spot', | |
30: 'Tomato___Early_blight', | |
31: 'Tomato___Late_blight', | |
32: 'Tomato___Leaf_Mold', | |
33: 'Tomato___Septoria_leaf_spot', | |
34: 'Tomato___Spider_mites_Two-,spotted_spider_mite', | |
35: 'Tomato___Target_Spot', | |
36: 'Tomato___Tomato_Yellow_Leaf_Curl_Virus', | |
37: 'Tomato___Tomato_mosaic_virus', | |
38: 'Tomato___healthy', | |
} | |
plant_label_disease={ | |
"apple":[0,1,2,3], | |
"background_without_leaves":[4], | |
"blueberry" : [5], | |
"cherry" : [6,7], | |
"corn" : [8,9,10,11], | |
"grape" : [12,13,14,15], | |
"orange" : [16] , | |
"peach" : [17,18], | |
"pepper" : [19,20], | |
"potato" : [21,22,23], | |
"raspberry" : [24], | |
"soybean" : [25], | |
"squash" : [26], | |
"strawberry" : [27,28], | |
"tomato" : [29,30,31,32,33,34,35,36,37,38] | |
} | |
HEIGHT = 256 | |
WIDTH = 256 | |
dnn_model = keras.models.load_model('untrained_model.h5',compile=False) | |
weights_path = 'keras_savedmodel_weights.h5' | |
dnn_model.load_weights(weights_path) | |
# dnn_model = tf.saved_model.load(model_path) | |
process_img = cv2.resize(img, (HEIGHT, WIDTH),interpolation = cv2.INTER_LINEAR) | |
process_img = process_img/(255) | |
process_img = np.expand_dims(process_img, axis=0) | |
y_pred = dnn_model.predict(process_img) | |
print("y pred",y_pred) | |
indx = np.argmax(y_pred) | |
max_prob_indx = plant_label_disease[plant_type.lower()][0] | |
for disease in plant_label_disease[plant_type.lower()]: | |
print(disease,y_pred[0][disease],max_prob_indx,y_pred[0][max_prob_indx]) | |
if y_pred[0][disease]>y_pred[0][max_prob_indx]: | |
max_prob_indx = disease | |
print(label_disease[indx],y_pred[0][indx],label_disease[max_prob_indx],y_pred[0][max_prob_indx]) | |
return int(indx),max_prob_indx,label_disease[indx],y_pred[0][indx],label_disease[max_prob_indx],y_pred[0][max_prob_indx] | |
demo = gr.Interface(analyse, | |
[gr.Image(),gr.Radio(["Apple","Blueberry","Cherry","Corn","Grape","Orange","Peach","Pepper","Potato","Raspberry","Soybean","Squash","Strawberry","Tomato"])], | |
["number","number","text","number","text","number"], | |
) | |
demo.launch(share=True,show_error=True) |