File size: 1,367 Bytes
71937e2
 
 
583825a
71937e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fdd5b20
71937e2
fdd5b20
71937e2
 
 
 
 
 
 
 
 
 
 
 
 
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
from json import load
import gradio as gr
import tensorflow as tf
import numpy as np

input_module1 = gr.Image(label = "test_image", image_mode='L')
input_module2 = gr.Dropdown(choices=['KNN', 'Softmax'], label = "Select Algorithm")
output_module1 = gr.Textbox(label = "Predicted Class")
output_module2 = gr.Label(label = "Predict Probability")

def fashion_images(input1, input2):
    from PIL import Image
    img_pil = Image.fromarray(input1)
    img_28x28 = np.array(img_pil.resize((28, 28), Image.ANTIALIAS))

    numpy_image = img_28x28.reshape(1, 28*28) # this will reshape input image into numpy array with shape (1, 784)
    print("numpy_image: ", numpy_image.shape)

    if input2 == "KNN":
        model = joblib.load('best_knn_model.joblib')
    else:
        model = joblib.load('best_logistic_model.joblib')
    out = model.predict(numpy_image)[0]
    out_prob = model.predict_proba(numpy_image)[0]

    print("out: ",out)
    print("out_prob: ",out_prob.shape)

    class_names = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"]
    final = class_names[out]

    class_prob = { class_names[i]:prob for i, prob in enumerate(out_prob)}
    return final, class_prob

gr.Interface(fn=fashion_images, inputs=[input_module1, input_module2], outputs=[output_module1,output_module2]).launch(debug=True)