ASL_Image / prediction.py
didev007's picture
Upload 5 files
08215ff
import streamlit as st
import tensorflow as tf
import cv2
import numpy as np
def run():
# Load the saved model
model = tf.keras.models.load_model("best_model.h5")
# Define the label names
label_names = ['a', 'b', 'c', 'd', 'e', 'del', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'not', 'o',
'p', 'q', 'r', 's', 't', 'space', 'u', 'v', 'w', 'x', 'y', 'z']
# Define the Streamlit app
st.title("ASL image Prediction")
st.write("Choose an image to classify.")
# Allow the user to select an image file
uploaded_file = st.file_uploader("Choose an image file", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
# Load the image using TensorFlow
img = tf.keras.utils.load_img(uploaded_file, target_size=(150, 150, 3))
# Convert the PIL.Image.Image object to a NumPy array
x = tf.keras.utils.img_to_array(img)
# Expand the array to add a batch dimension
x = np.expand_dims(x, axis=0)
# Normalize the image data
x = x / 255.0
# Make the prediction using the loaded model
y_pred = model.predict(x)
# Get the index of the predicted class with the highest probability
class_idx = np.argmax(y_pred, axis=1)[0]
# Display the predicted class label and image to the user
st.write(f"Detection for uploaded image: {label_names[class_idx]}")
st.image(img, caption=f"{label_names[class_idx]}", use_column_width=True)
if __name__=="__main__":
run()