File size: 1,782 Bytes
3f3da6d
 
c7b6585
3f3da6d
3a3fa0c
 
3f3da6d
c7b6585
3f3da6d
5ecfb97
 
 
 
 
 
3f3da6d
 
 
 
5ecfb97
 
 
 
 
3f3da6d
5ecfb97
 
 
 
 
 
 
3f3da6d
5ecfb97
 
 
 
3a3fa0c
5ecfb97
 
 
 
 
 
 
 
 
3f3da6d
5ecfb97
3f3da6d
5ecfb97
 
 
3f3da6d
5ecfb97
 
3f3da6d
5ecfb97
3f3da6d
 
 
 
e2167bf
3f3da6d
 
 
 
 
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
57
58
59
60
61
62
63
64
65
66
67
68
import gradio as gr
import numpy as np
from PIL import Image

from tensorflow.keras import models 
from tensorflow.keras.preprocessing.image import load_img
import tensorflow as tf
from hugsvision.inference.TorchVisionClassifierInference import TorchVisionClassifierInference

models_name = [
    "VGG16",
    "mobilenet_v2",
    "DenseNet"
]

# open categories.txt in read mode
categories = open("categories.txt", "r")
labels = categories.readline().split(";")

# create a radio
radio = gr.inputs.Radio(models_name, default="DenseNet", type="value")

def predict_image(image, model_name):


    print("======================")
    print(type(image))
    print(type(model_name))
    print("==========")
    print(image)
    print(model_name)
    print("======================")

    if model_name == "DenseNet":
        image = np.array(image) / 255
        image = np.expand_dims(image, axis=0)

        model = model = models.load_model("./models/" + model_name + "/model.h5")
        pred = model.predict(image)

        pred = dict((labels[i], "%.2f" % pred[0][i]) for i in range(len(labels)))
    else:
        
        image = Image.fromarray(np.uint8(image)).convert('RGB')
        classifier = TorchVisionClassifierInference(
            model_path = "./models/" + model_name
        )

        pred = classifier.predict_image(img=image, return_str=False)

        for key in pred.keys():
            pred[key] = pred[key]/100
    

    print(pred)
    return pred

image = gr.inputs.Image(shape=(300, 300), label="Upload Your Image Here")
label = gr.outputs.Label(num_top_classes=len(labels))
        
interface = gr.Interface(
    fn=predict_image, 
    inputs=[image, radio], 
    outputs=label, 
    capture_session=True, 
    allow_flagging=False, 
)
interface.launch()