Classifiers / app.py
Fareskh12's picture
Update app.py
6edd3ec verified
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()