A-Celsius's picture
Upload app.py
6d66c72
raw
history blame
No virus
1.95 kB
import cv2
import numpy as np
import gradio as gr
from keras.models import load_model
names = [
'Speed limit (20km/h)',
'Speed limit (30km/h)',
'Speed limit (50km/h)',
'Speed limit (60km/h)',
'Speed limit (70km/h)',
'Speed limit (80km/h)',
'End of speed limit (80km/h)',
'Speed limit (100km/h)',
'Speed limit (120km/h)',
'No passing',
'No passing for vechiles over 3.5 metric tons',
'Road Block',
'Priority road',
'Yield',
'Stop',
'No vehicles',
'Vechiles over 3.5 metric tons prohibited',
'No entry',
'General caution',
'Double curve',
'Bumpy Road',
'Slippery road',
'Road narrows on the right',
'Road Work',
'Traffic Signals',
'Pedestrians',
'Children crossing',
'Bicycles crossing',
'Beware of ice/snow',
'Wild animals crossing',
'End of all speed and passing limits',
'Turn right ahead',
'Turn left ahead',
'Ahead only',
'Go straight or right',
'Go straight or left',
'Keep right',
'Keep left',
'Roundabout mandatory',
'End of no passing',
'End of no passing by vechiles over 3.5 metric tons'
]
# Load the saved model
model = load_model('model.h5')
# Preprocess the input image
def preprocess_image(img):
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.equalizeHist(img)
img = img / 255
img = cv2.resize(img, (32, 32))
img = img.reshape(1, 32, 32, 1)
return img
# Define the prediction function
def predict_image(image):
preprocessed_image = preprocess_image(image)
predictions = model.predict(preprocessed_image)
class_index = np.argmax(predictions)
class_label = names[class_index]
accuracy = predictions[0][class_index]
return f"Prediction: {class_label}, Accuracy: {accuracy:.2%}"
# Create the Gradio interface
iface = gr.Interface(fn=predict_image, inputs="image", outputs="text")
# Run the interface
iface.launch()