File size: 1,651 Bytes
df7792c
710e406
 
 
677a491
4102c8a
df7792c
38cc02e
df7792c
 
 
 
9294ca1
9b2517d
6edd3ec
df7792c
3a8393e
df7792c
 
 
 
 
477fdb5
2d2a8e5
42fad01
477fdb5
3a8393e
477fdb5
3a8393e
df7792c
3a8393e
df7792c
 
 
4e0aadf
df7792c
 
 
4e0aadf
df7792c
 
64aad2e
4e0aadf
3a8393e
df7792c
 
 
 
 
3a8393e
df7792c
 
 
 
 
 
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
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()