File size: 1,547 Bytes
d5bd88f
 
a0e0898
 
 
 
 
 
d0614c4
a0e0898
 
d5bd88f
fded9c3
d5bd88f
 
 
a0e0898
d5bd88f
 
a0e0898
d5bd88f
 
a0e0898
d5bd88f
 
a0e0898
d5bd88f
 
a0e0898
d5bd88f
 
a0e0898
d5bd88f
 
a0e0898
d5bd88f
 
a0e0898
d5bd88f
 
a0e0898
 
d5bd88f
fded9c3
d5bd88f
a0e0898
fded9c3
9f8bd32
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
# app.py

import gradio as gr
import tensorflow as tf
import numpy as np
from PIL import Image

# Load the model
model = tf.keras.models.load_model('Adam_8_1000_Acc 0.88_Nutrient-Model.h5')

# Define the class names
class_names = ['Calcium','Magnesium','Nitrogen','Phosphorus','Potassium','Sulfur']
# Function to classify the image
def classify_image(image):
    # Convert the numpy array to a PIL Image object
    pil_image = Image.fromarray(np.uint8(image)).convert('RGB')

    # Resize the image
    pil_image = pil_image.resize((224, 224))

    # Convert the PIL Image object to a numpy array
    image_array = np.array(pil_image)

    # Normalize the image
    normalized_image_array = (image_array.astype(np.float32) / 255.0)

    # Reshape the image
    data = normalized_image_array.reshape((1, 224, 224, 3))

    # Make the prediction
    prediction = model.predict(data)[0]

    # Get the predicted class name
    predicted_class = class_names[np.argmax(prediction)]

    # Get the confidence score for the predicted class
    confidence_score = np.max(prediction)

    # Return the predicted class and confidence score
    return f"{predicted_class} ({confidence_score*100:.2f}%)"

# Define the Gradio interface
inputs = gr.inputs.Image()
outputs = gr.outputs.Textbox()
interface = gr.Interface(fn=classify_image, inputs=inputs, outputs=outputs, title="Image Classification", description="Classify an image into one of six classes: Phosphorus, Magnesium, Nitrogen,Potassium, Calcium, Sulfur.")

# Launch the interface
interface.launch()