Classifiers / app.py
Fareskh12's picture
Update app.py
6edd3ec verified
Raw
History Blame Contribute Delete
1.65 kB
import gradio as gr
import numpy as np
from PIL import Image
import cv2
import time
import skops.io as sio
def single_image(image,mode):
img = image.resize((128, 128))
if mode=="rgb":
return np.array(img).flatten()
elif mode=="hsv":
return np.array(img.convert('HSV')).flatten()
else:
kmeans = sio.load('Models/kmeans.skops')
num_clusters=kmeans.n_clusters
sift = cv2.SIFT_create()
img = np.array(img.convert("L"))
keypoints, descriptors = sift.detectAndCompute(img, None)
words = kmeans.predict(descriptors)
hist, _ = np.histogram(words, bins=num_clusters, range=(0, num_clusters))
return np.array(hist)
def Classify(img, pre,model):
start_time = time.time()
image = Image.open(img)
file="Models/"+model+'_'+pre+'.skops'
loaded_model = sio.load(file)
predictions = loaded_model.predict(single_image(image,pre).reshape(1,-1))[0]
end_time = time.time()
elapsed_time_microseconds = (end_time - start_time) * 1_000
return predictions,(end_time - start_time) * 1_000
interface = gr.Interface(
fn=Classify,
inputs=[
gr.Image(type="filepath"),
gr.Radio(
["rgb", "hsv", "sift"],
label="Preprocessing",
info="Choose one"
) , gr.Radio(
["dt", "rf", "gb"],
label="ML Model (Dicision Tree, Random Forest, Gradient Boosting)",
info="Choose one"
)
],
outputs=[
gr.Textbox(label="Class"),
gr.Textbox(label="Time (milliseconds)")
]
)
# Launch the interface
interface.launch()