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): import json # Load label_disease.json with open('data/label_disease.json', 'r') as f: label_disease = json.load(f) # Load plant_label_disease.json with open('data/plant_label_disease.json', 'r') as f: plant_label_disease = json.load(f) HEIGHT = 256 WIDTH = 256 modelArchitecturePath ='model/model_architecture.h5' modelWeightsPath = 'model/model_weights.h5' dnn_model = keras.models.load_model(modelArchitecturePath,compile=False) dnn_model.load_weights(modelWeightsPath) 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]) print(y_pred[0][indx]) print(label_disease[max_prob_indx]) print(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)