Spaces:
Sleeping
Sleeping
# Step 6.1: Define different input components | |
import gradio as gr | |
# g. define Dropdown data type | |
input_module1 = gr.inputs.Dropdown(choices=["KNN", "Softmax", "Deep Neural", "SVM", "Decision Tree","Random Forest"], label = "Model Selection") | |
# b. define image data type | |
input_module2 = gr.inputs.Dropdown(choices=["image1", "image2", "image3", "image4","image5"], label = "Sample Image") | |
# b. define image data type | |
output_module1 = gr.outputs.Textbox(label = "Predicted Class") | |
# b. define image data type | |
output_module2 = gr.outputs.Image(label = "Image") | |
# Step 6.3: Define a new function that accommodates the input modules. | |
def multi_inputs(input1, input2): | |
import numpy as np | |
import pickle | |
import matplotlib as mpl | |
import matplotlib.pyplot as plt | |
import tensorflow as tf | |
import scipy.ndimage.interpolation | |
(X_train_full, y_train_full), (X_test, y_test) = tf.keras.datasets.mnist.load_data() | |
X_valid, X_train = X_train_full[:5000], X_train_full[5000:] | |
y_valid, y_train = y_train_full[:5000], y_train_full[5000:] | |
if input2 == "image1": | |
img = X_test[1] | |
if input2 == "image2": | |
img = X_test[2] | |
if input2 == "image3": | |
img = X_test[3] | |
if input2 == "image4": | |
img = X_test[4] | |
if input2 == "image5": | |
img = X_test[5] | |
import matplotlib.pyplot as plt | |
import matplotlib.image as mpimg | |
#img = mpimg.imread(img) | |
#imag = scipy.ndimage.rotate(input2, 0, reshape=False, cval=0) | |
#class_names = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", | |
#"Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"] | |
test_shape = img.shape | |
test_width = test_shape[0] | |
test_height = test_shape[1] | |
image =img.reshape(test_width*test_height) | |
if input1 == "KNN": | |
loaded_model = pickle.load(open('KNN_Model.sav', 'rb')) | |
image = img.reshape((1, -1)) | |
y_test_pred = loaded_model.predict(image) | |
if input1 == "Softmax": | |
loaded_model = pickle.load(open('Softmax_Model.sav', 'rb')) | |
image = img.reshape((1, -1)) | |
y_test_pred = loaded_model.predict(image) | |
if input1 == "SVM": | |
loaded_model = pickle.load(open('svm_model.sav', 'rb')) | |
image = img.reshape((1, -1)) | |
y_test_pred = loaded_model.predict(image) | |
if input1 == "Deep Neural": | |
loaded_model = pickle.load(open('dnn_model.sav', 'rb')) | |
image = img.reshape((1, -1)) | |
y_test_pred = loaded_model.predict(image) | |
y_test_pred = np.argmax(y_test_pred,axis=1) | |
if input1 == "Decision Tree": | |
loaded_model = pickle.load(open('Decision_Tree_model.sav', 'rb')) | |
image = img.reshape((1, -1)) | |
y_test_pred = loaded_model.predict(image) | |
if input1 == "Random Forest": | |
loaded_model = pickle.load(open('randomforest.sav', 'rb')) | |
image = img.reshape((1, -1)) | |
y_test_pred = loaded_model.predict(image) | |
result = y_test_pred[0] | |
return result, img | |
# Step 6.4: Put all three component together into the gradio's interface function | |
gr.Interface(fn=multi_inputs, | |
inputs=[input_module1, input_module2], | |
outputs=[output_module1,output_module2] | |
).launch( debug = True) | |