Spaces:
Sleeping
Sleeping
#Web application (sample codes from student) | |
import matplotlib as mpl | |
import matplotlib.pyplot as plt | |
import gradio as gr | |
import pickle | |
import tensorflow.keras as tk | |
import numpy as np | |
from sklearn.neighbors import KNeighborsClassifier | |
#Step 1 | |
fashion_mnist = tk.datasets.fashion_mnist | |
(X_train_full, y_train_full), (X_test, y_test) = fashion_mnist.load_data() | |
class_names = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", | |
"Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"] | |
# recommended way to save data into image | |
from PIL import Image | |
for i in range(6): | |
idx = np.random.randint(0,len(X_train_full)) | |
some_image = X_train_full[idx] # select one image sample | |
some_image_label = class_names[y_train_full[idx]] # select one image sample | |
some_image = some_image.reshape(28, 28) # reshape from rank-1 tensor (784,) to rank-2 tensor (28,28) | |
im = Image.fromarray(some_image) | |
im.save('image'+str(i)+'.jpg') | |
input_module1 = gr.inputs.Image(label = "test_image", image_mode='L', shape = (28,28)) | |
#input_module2 = gr.inputs.Dropdown(choices=["Random Forest", "Decision Tree", "AdaBoost", "Gradient Tree Boosting"], label = "Select Algorithm") | |
input_module2 = gr.inputs.Dropdown(choices=['Softmax Regression', 'Neural Network (sklearn)', 'Neural Network (keras) two-layer','Neural Network (keras) three-layer'], label = "Select Algorithm") | |
output_module1 = gr.outputs.Textbox(label = "Predicted Class") | |
output_module2 = gr.outputs.Label(label = "Predict Probability") | |
def fashion_images(input1, input2): | |
image = input1.reshape(1, 28*28)/255.0 | |
import pickle | |
#with open('knn_model_best.pkl', 'rb') as file: # KNN model is too large, ignore here | |
# best_knn_model = pickle.load(file) | |
''' | |
with open('gradientboost_model_best.pkl', 'rb') as file: | |
best_gbt_model = pickle.load(file) | |
with open('adaboost_model_best.pkl', 'rb') as file: | |
best_adaboost_model = pickle.load(file) | |
with open('decision_tree_model_best.pkl', 'rb') as file: | |
best_tree_model = pickle.load(file) | |
''' | |
with open('random_forest_model_best.pkl', 'rb') as file: | |
best_RF_model = pickle.load(file) | |
''' | |
if input2 == 'Random Forest': | |
y_test_predicted_proba = best_RF_model.predict_proba(image) | |
y_test_predicted_label = best_RF_model.predict(image) | |
output = class_names[y_test_predicted_label[0]] | |
elif input2 == 'Gradient Tree Boosting': | |
y_test_predicted_proba = best_gbt_model.predict_proba(image) | |
y_test_predicted_label = best_gbt_model.predict(image) | |
output = class_names[y_test_predicted_label[0]] | |
elif input2 == 'AdaBoost': | |
y_test_predicted_proba = best_adaboost_model.predict_proba(image) | |
y_test_predicted_label = best_adaboost_model.predict(image) | |
output = class_names[y_test_predicted_label[0]] | |
elif input2 == 'Decision tree': | |
y_test_predicted_proba = best_tree_model.predict_proba(image) | |
y_test_predicted_label = best_tree_model.predict(image) | |
output = class_names[y_test_predicted_label[0]] | |
#elif input2 == 'Random Forest': | |
''' | |
#if input2 == 'Softmax Regression': | |
y_test_predicted_proba = best_RF_model.predict_proba(image) | |
y_test_predicted_label = best_RF_model.predict(image) | |
output = class_names[y_test_predicted_label[0]] | |
#elif input2 == 'KNN': | |
# y_test_predicted_proba = best_knn_model.predict_proba(image) | |
# y_test_predicted_label = best_knn_model.predict(image) | |
# output = class_names[y_test_predicted_label[0]] | |
output_prob = {} | |
for name, prob in zip(class_names, y_test_predicted_proba[0]): | |
output_prob[name] = prob | |
return output, output_prob | |
# Step 6.4: Put all three component together into the gradio's interface function | |
gr.Interface(fn=fashion_images, | |
inputs=[input_module1, input_module2], | |
outputs=[output_module1,output_module2], | |
title = "CSCI4750/5750: Build classification pipeline for FashionMNIST", | |
examples=[["image0.jpg", "Random Forest"], | |
["image1.jpg", "Decision tree"], | |
["image2.jpg", "Random Forest"], | |
["image3.jpg", "Gradient Tree Boosting"], | |
["image4.jpg", "AdaBoost"], | |
["image5.jpg", "Random Forest"]] | |
).launch(debug = True) | |