udayjawheri's picture
Update app.py
6ab9295 verified
import gradio as gr
import tensorflow as tf
import numpy as np
from PIL import Image
# Loading trained model
model = tf.keras.models.load_model("saved_model.pb")
# Label Overview
class_num = { 0:'Speed limit (20km/h)',
1:'Speed limit (30km/h)', +
2:'Speed limit (50km/h)',
3:'Speed limit (60km/h)',
4:'Speed limit (70km/h)',
5:'Speed limit (80km/h)',
6:'End of speed limit (80km/h)',
7:'Speed limit (100km/h)',
8:'Speed limit (120km/h)',
9:'No passing',
10:'No passing veh over 3.5 tons',
11:'Right-of-way at intersection',
12:'Priority road',
13:'Yield',
14:'Stop',
15:'No vehicles',
16:'Veh > 3.5 tons prohibited',
17:'No entry',
18:'General caution',
19:'Dangerous curve left',
20:'Dangerous curve right',
21:'Double curve',
22:'Bumpy road',
23:'Slippery road',
24:'Road narrows on the right',
25:'Road work',
26:'Traffic signals',
27:'Pedestrians',
28:'Children crossing',
29:'Bicycles crossing',
30:'Beware of ice/snow',
31:'Wild animals crossing',
32:'End speed + passing limits',
33:'Turn right ahead',
34:'Turn left ahead',
35:'Ahead only',
36:'Go straight or right',
37:'Go straight or left',
38:'Keep right',
39:'Keep left',
40:'Roundabout mandatory',
41:'End of no passing',
42:'End no passing veh > 3.5 tons' }
# Define a function to preprocess input image
def preprocess_image(image):
# Resize the image to the required dimensions
image = image.resize((30, 30))
# Convert the PIL image to a NumPy array
image_array = np.array(image)
# Normalize pixel values to be between 0 and 1
image_array = image_array / 255.0
# Add batch dimension to the image
image_array = np.expand_dims(image_array, axis=0)
return image_array
# Define a function to make predictions
def predict_class(image):
# Preprocess the input image
processed_image = preprocess_image(image)
# Make predictions using the loaded model
predictions = model.predict(processed_image)
# Get the predicted class index
predicted_class_index = np.argmax(predictions)
# Return the predicted class label and class number
return f"{class_num[predicted_class_index]} (Class {predicted_class_index})"
# Create Gradio interface
iface = gr.Interface(
fn=predict_class,
inputs=gr.Image(type="pil", label="Upload an image"),
outputs="text"
)
# Launch the Gradio interface
iface.launch()