Ethan0718/Homework04-Build_ML_workflow_for_image
0
1import gradio as gr2import pickle3 4input_module1 = gr.inputs.Image(label = "Input Image",image_mode='L', shape = (28,28)) #image_mode = "L" --> black and white pic,5input_module2 = gr.inputs.Dropdown(choices=["KNN", "LinearDiscriminantAnalysis", "QuadraticDiscriminantAnalysis", "GaussianNB"], label = "Methods")6 7output_module1 = gr.outputs.Textbox(label = "Predicted Class")8output_module2 = outputs=gr.Label(num_top_classes=10)9 10def Classification(input1,input2):11 12 class_names = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat",13"Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"]14 15 image = input1.reshape(1, 28*28)16 with open('KNeighborsClassifier_model.sav', 'rb') as f:17 knn_model = pickle.load(f)18 19 with open('LinearDiscriminantAnalysis_model.sav', 'rb') as f:20 LDA_model = pickle.load(f)21 22 with open('QuadraticDiscriminantAnalysis_model.sav', 'rb') as f:23 QDA_model = pickle.load(f)24 25 with open('GaussianNB_model.sav', 'rb') as f:26 GaussianNB_model = pickle.load(f)27 28 if input2 == "KNN":29 predict = knn_model.predict(image)30 output1 = predict[0]31 32 elif input2 == "LinearDiscriminantAnalysis":33 predict = LDA_model.predict(image)34 output1 = predict[0]35 36 elif input2 == "QuadraticDiscriminantAnalysis":37 predict = QDA_model.predict(image)38 output1 = predict[0]39 40 elif input2 == "GaussianNB":41 predict = GaussianNB_model.predict(image)42 output1 = predict[0]43 44 confidences = {class_names[i]: 1 if i == output1 else 0 for i in range(len(class_names))}45 46 return class_names[output1],confidences 47 48gr.Interface(fn=Classification, 49 inputs = [input_module1, input_module2],50 outputs = [output_module1, output_module2],51 examples=[["bag.png","KNN"],["pullover.png","KNN"]],52 title = 'Homework04: Build ML workflow for image',53 description="Image classification.",54 ).launch()