Spaces:
Sleeping
Sleeping
File size: 2,367 Bytes
6a5c7ef 49183b2 6a5c7ef 49183b2 65d5227 49183b2 65d5227 49183b2 6a5c7ef 49183b2 65d5227 49183b2 65d5227 49183b2 6a5c7ef 49183b2 6a5c7ef 7bc8f9c 49183b2 59ce7be bd45a45 49183b2 d86942a 59ce7be 49183b2 59ce7be 49183b2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import numpy as np
import gradio as gr
import tensorflow as tf # version 2.13.0
from keras.models import load_model # version matching your TensorFlow
import cv2
import json
def analyse(img, plant_type):
# 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'
# Load the model
dnn_model = load_model(modelArchitecturePath, compile=False)
dnn_model.load_weights(modelWeightsPath)
# Preprocess the image
process_img = cv2.resize(img, (HEIGHT, WIDTH), interpolation=cv2.INTER_LINEAR)
process_img = process_img / 255.0
process_img = np.expand_dims(process_img, axis=0)
# Predict using the model
y_pred = dnn_model.predict(process_img)
y_pred = y_pred[0]
# Identify predictions
p_id = plant_label_disease[plant_type.lower()][0]
for disease in plant_label_disease[plant_type.lower()]:
if y_pred[disease] > y_pred[p_id]:
p_id = disease
overall_predicted_id = np.argmax(y_pred)
overall_predicted_name = label_disease[str(overall_predicted_id)]
overall_predicted_acc = y_pred[overall_predicted_id]
plant_predicted_id = p_id
plant_predicted_name = label_disease[str(plant_predicted_id)]
plant_predicted_acc = y_pred[plant_predicted_id]
# Return results as a JSON object
result = {
"plant_predicted_id": int(plant_predicted_id),
"plant_predicted_name": plant_predicted_name,
"plant_predicted_accuracy": float(plant_predicted_acc),
"overall_predicted_id": int(overall_predicted_id),
"overall_predicted_name": overall_predicted_name,
"overall_predicted_accuracy": float(overall_predicted_acc),
}
return result
# Gradio interface
demo = gr.Interface(
fn=analyse,
inputs=[
gr.Image(type="numpy"),
gr.Radio(["Apple", "Blueberry", "Cherry", "Corn", "Grape", "Orange", "Peach",
"Pepper", "Potato", "Raspberry", "Soybean", "Squash", "Strawberry", "Tomato"])
],
outputs=gr.JSON()
)
demo.launch(share=True, show_error=True)
|