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]}**") | |