Spaces:
Sleeping
Sleeping
import streamlit as st | |
from keras.models import load_model | |
from PIL import Image | |
import numpy as np | |
import cv2 | |
# Load model once | |
def load_expression_model(): | |
return load_model("expression_model.h5") | |
model = load_expression_model() | |
# Define class labels (update based on your training) | |
class_names = ['Angry', 'Disgust', 'Fear', 'Happy', 'Sad', 'Surprise', 'Neutral'] | |
# Resize and preprocess image | |
def preprocess_image(img): | |
img = img.convert('L') # convert to grayscale | |
img = img.resize((48, 48)) | |
img_array = np.array(img) | |
img_array = img_array / 255.0 # normalize | |
img_array = np.expand_dims(img_array, axis=0) | |
img_array = np.expand_dims(img_array, axis=-1) | |
return img_array | |
# Streamlit UI | |
st.title("Facial Expression Classifier ππ’π ") | |
st.write("Upload an image and the model will predict the facial expression.") | |
uploaded_file = st.file_uploader("Upload an image...", type=["jpg", "png", "jpeg"]) | |
if uploaded_file is not None: | |
img = Image.open(uploaded_file) | |
st.image(img, caption="Uploaded Image", use_column_width=True) | |
with st.spinner('Analyzing...'): | |
processed_img = preprocess_image(img) | |
prediction = model.predict(processed_img) | |
class_index = np.argmax(prediction) | |
st.success(f"Predicted Expression: **{class_names[class_index]}**") | |