File size: 2,241 Bytes
2876aae
 
 
 
 
 
 
 
 
 
 
4900bb0
2876aae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4900bb0
 
 
 
 
 
 
 
 
 
2876aae
4900bb0
 
 
 
 
d2e3d4c
951e3cc
3b6db67
951e3cc
 
 
 
 
5a89ad8
2876aae
4900bb0
 
2876aae
4900bb0
2876aae
 
b6ccd3d
2876aae
 
 
 
 
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
import gradio as gr
import tensorflow as tf
import numpy as np
from tensorflow.keras.models import load_model
import tensorflow_addons as tfa
import os
import numpy as np


# labels= {'Burger King': 0, 'KFC': 1,'McDonalds': 2,'Other': 3,'Starbucks': 4,'Subway': 5}
HEIGHT,WIDTH=224,224
IMG_SIZE=224
model=load_model('Models/best_model1.h5')

# def classify_image(inp):
#   np.random.seed(143)
#   inp = inp.reshape((-1, HEIGHT,WIDTH, 3))
#   inp = tf.keras.applications.nasnet.preprocess_input(inp) 
#   prediction = model.predict(inp)
#   ###label = dict((v,k) for k,v in labels.items())
#   predicted_class_indices=np.argmax(prediction,axis=1)
#   result = {}
#   for i in range(len(predicted_class_indices)):
#       if predicted_class_indices[i] < NUM_CLASSES:
#           result[labels[predicted_class_indices[i]]]= float(predicted_class_indices[i])
#   return result 

# def classify_image(inp):
#     np.random.seed(143)
#     labels = {'Cat': 0, 'Dog': 1}
#     NUM_CLASSES = 2
#     #inp = inp.reshape((-1, HEIGHT, WIDTH, 3))
#     #inp = tf.keras.applications.nasnet.preprocess_input(inp)
#     prediction = model.predict(inp)
#     predicted_class_indices = np.argmax(prediction, axis=1)

#     label_order = ["Cat","Dog"]

#     result = {label: float(f"{prediction[0][labels[label]]:.6f}") for label in label_order}

#     return result

def classify_image(inp):
    NUM_CLASSES=2
    # Resize the image to the required size
    labels = ['Cat','Dog']
    inp = tf.image.resize(inp, [IMG_SIZE, IMG_SIZE])
    inp = inp.numpy()
    inp = inp.reshape((-1, IMG_SIZE, IMG_SIZE, 3))
    inp = tf.keras.applications.vgg16.preprocess_input(inp)
    prediction = model.predict(inp).flatten()
    return {labels[i]: f"{prediction[i]:.6f}" for i in range(NUM_CLASSES)}

# image = gr.inputs.Image(shape=(IMG_SIZE, IMG_SIZE))
# label = gr.outputs.Label(num_top_classes=2)

# gr.Interface(fn=classify_image, inputs=image, outputs=label, title='Cats Vs Dogs',height=600, width=1200,examples=ex,theme='peach').launch(debug=True)

    
image = gr.Image(height=HEIGHT,width=WIDTH,label='Input')
label = gr.Label(num_top_classes=2)

gr.Interface(fn=classify_image, inputs=image, outputs=label, title='Smart Pet Classifier').launch(debug=False)