|
|
import streamlit as st |
|
|
from tensorflow.keras.models import load_model |
|
|
from PIL import Image |
|
|
import numpy as np |
|
|
import cv2 |
|
|
|
|
|
|
|
|
model = load_model('traffic_classifier.h5') |
|
|
|
|
|
def process_image(image): |
|
|
img=np.array(image) |
|
|
if img.shape[-1] == 4: |
|
|
img = img[:,:,:3] |
|
|
img=cv2.resize(img,(30,30)) |
|
|
img=img/255.0 |
|
|
img=np.expand_dims(img,axis=0) |
|
|
return img |
|
|
|
|
|
st.title('Traffic Sign Image Classifier') |
|
|
st.write('Upload a image and model will predict which traffic sign it is.') |
|
|
|
|
|
file = st.file_uploader('Choose a image...', type=['jpg', 'jpeg', 'png']) |
|
|
if file is not None: |
|
|
img = Image.open(file) |
|
|
st.image(img, caption='Uploaded Image') |
|
|
|
|
|
image = process_image(img) |
|
|
prediction = model.predict(image) |
|
|
predicted_class = np.argmax(prediction) |
|
|
|
|
|
class_names = [f"Class {i}" for i in range(43)] |
|
|
st.write(f"Predicted class index: {predicted_class}") |
|
|
st.write(f"Predicted class: {class_names[predicted_class]}") |