SalmanAboAraj's picture
Create app.py
ffb4efb verified
raw
history blame
1.58 kB
from sklearn.datasets import fetch_openml
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
import gradio as gr
import requests
from sklearn import svm, metrics
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
import numpy as np
import cv2
X, y = fetch_openml("mnist_784", version=1, return_X_y=True, as_frame=False)
scaler = StandardScaler()
X = scaler.fit_transform(X)
X_train_img, X_test_img, y_train_img, y_test_img = train_test_split(
X, y, test_size=0.2, shuffle=True)
# Create a classifier
project_classifier = svm.SVC(kernel='linear',probability=True)
project_classifier.fit(X_train_img, y_train_img)
predicted = project_classifier.predict(X_test_img)
def inference(img):
labels =["0","1", "2","3", "4","5", "6","7", "8","9"]
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
H,W = 28,28
img = cv2.resize(img, (H, W))
ret,img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
img = np.array(img)
img = img.astype("float32")
img = img.flatten()
img = img.reshape(1,H*W)
img = scaler.transform(img)
pred = project_classifier.predict_proba(img).flatten()
dictionary = dict(zip(labels, map(float, pred)))
return dictionary
nbr_top_classes = 3
gr.Interface(fn=inference,
inputs=gr.inputs.Image(source="upload"), # source= "upload" "webcam" "canvas"
outputs=gr.outputs.Label(num_top_classes=nbr_top_classes),
theme="darkdefault").launch(share=True) #, debug=True Use in Colab