File size: 5,166 Bytes
e419c05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67a3c7b
 
 
 
 
 
 
 
 
 
 
 
 
e419c05
ace593e
67a3c7b
 
 
e419c05
 
 
 
67a3c7b
e419c05
 
 
 
67a3c7b
e419c05
 
 
 
67a3c7b
e419c05
 
 
 
67a3c7b
e419c05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67a3c7b
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# import gradio as gr
# import pickle
# from sklearn.neighbors import KNeighborsClassifier
# from sklearn.linear_model import LogisticRegression
# from keras.models import Sequential
# from keras.layers import Dense
# from sklearn.pipeline import Pipeline
# from sklearn.svm import LinearSVC
# from sklearn.tree import DecisionTreeClassifier
# from sklearn.ensemble import RandomForestClassifier
# import tensorflow as tf
# import sklearn
# import tensorflow
# from tensorflow import keras
# from tensorflow.keras.models import load_model

# input_1 = gr.Image(shape=(28,28),image_mode='L')
 
# input_2 = gr.Dropdown(["SoftMax", "KNN", "Deep Neural Network", "Decision Tree", "Random Forest"])

# output = gr.Label(num_top_classes=6)

# def predict_softmax(test_img):
#   Softmax_model = pickle.load(open('softmax_model.pkl', 'rb'))
#   predictions = Softmax_model.predict_proba(test_img)
#   return {i: float(predictions[0][i]) for i in range(0,10)}
  
# def predict_knn(test_img):
#   Knn_model = pickle.load(open('knn_model.pkl', 'rb'))
#   predictions = Knn_model.predict_proba(test_img)
#   return {i: float(predictions[0][i]) for i in range(0,10)}
    
# def predict_neural(test_img):
#   Neural_model = load_model("deep_neural_model.h5")
#   predictions = Neural_model.predict(test_img)
#   return {i: float(predictions[0][i]) for i in range(0,10)}
  
# def predict_tree(test_img):
#   tree_model = pickle.load(open('tree_clf.pkl', 'rb'))
#   predictions = tree_model.predict_proba(test_img)
#   return {i: float(predictions[0][i]) for i in range(0,10)}
  
# def predict_rf(test_img):
#   rf_model = pickle.load(open('rf_clf.pkl', 'rb'))
#   predictions = rf_model.predict_proba(test_img)
#   return {i: float(predictions[0][i]) for i in range(0,10)}

# def predictDigitClass(test_img,chosen_model):
#   test_img_flatten=test_img.reshape(-1,28*28)
#   if chosen_model == "SoftMax":
#     fashionProbs = predict_softmax(test_img_flatten)
#     return fashionProbs
#   elif chosen_model == "KNN":
#     fashionProbs = predict_knn(test_img_flatten)
#     return fashionProbs  
#   elif chosen_model == "Deep Neural Network":
#     fashionProbs = predict_neural(test_img_flatten)
#     return fashionProbs 
#   elif chosen_model == "SVM":
#     fashionProbs = predict_svm(test_img_flatten)
#     return fashionProbs     
#   elif chosen_model == "Decision Tree":
#     fashionProbs = predict_tree(test_img_flatten)
#     return fashionProbs
#   elif chosen_model == "Random Forest":
#     fashionProbs = predict_rf(test_img_flatten)
#     return fashionProbs
    
# gr.Interface(fn=predictDigitClass,inputs=[input_1,input_2],outputs=output).launch(debug=True)


import gradio as gr
import pickle
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from keras.models import Sequential
from keras.layers import Dense
from sklearn.pipeline import Pipeline
from sklearn.svm import LinearSVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
import tensorflow as tf
from tensorflow.keras.models import load_model

input_1 = gr.Image(image_mode='L', type='numpy', preprocessing=lambda img: img.resize((28, 28)))
input_2 = gr.Dropdown(["SoftMax", "KNN", "Deep Neural Network", "Decision Tree", "Random Forest"])
output = gr.Label(num_top_classes=6)

def predict_softmax(test_img):
    Softmax_model = pickle.load(open('softmax_model.pkl', 'rb'))
    predictions = Softmax_model.predict_proba(test_img)
    return {i: float(predictions[0][i]) for i in range(0, 10)}

def predict_knn(test_img):
    Knn_model = pickle.load(open('knn_model.pkl', 'rb'))
    predictions = Knn_model.predict_proba(test_img)
    return {i: float(predictions[0][i]) for i in range(0, 10)}

def predict_neural(test_img):
    Neural_model = load_model("deep_neural_model.h5")
    predictions = Neural_model.predict(test_img)
    return {i: float(predictions[0][i]) for i in range(0, 10)}

def predict_tree(test_img):
    tree_model = pickle.load(open('tree_clf.pkl', 'rb'))
    predictions = tree_model.predict_proba(test_img)
    return {i: float(predictions[0][i]) for i in range(0, 10)}

def predict_rf(test_img):
    rf_model = pickle.load(open('rf_clf.pkl', 'rb'))
    predictions = rf_model.predict_proba(test_img)
    return {i: float(predictions[0][i]) for i in range(0, 10)}

def predictDigitClass(test_img, chosen_model):
    test_img_flatten = test_img.reshape(-1, 28*28)
    if chosen_model == "SoftMax":
        fashionProbs = predict_softmax(test_img_flatten)
        return fashionProbs
    elif chosen_model == "KNN":
        fashionProbs = predict_knn(test_img_flatten)
        return fashionProbs  
    elif chosen_model == "Deep Neural Network":
        fashionProbs = predict_neural(test_img_flatten)
        return fashionProbs 
    elif chosen_model == "Decision Tree":
        fashionProbs = predict_tree(test_img_flatten)
        return fashionProbs
    elif chosen_model == "Random Forest":
        fashionProbs = predict_rf(test_img_flatten)
        return fashionProbs

gr.Interface(fn=predictDigitClass, inputs=[input_1, input_2], outputs=output).launch(debug=True)