import cv2 import numpy as np import matplotlib.pyplot as plt from PIL import Image import tensorflow as tf import tf_keras import gradio as gr import requests import os model_url = "https://huggingface.co/foryahasake/act-h5/resolve/main/bestXceptionPlusData.h5" model_filename = "bestXceptionPlusData.h5" from huggingface_hub import from_pretrained_keras model = from_pretrained_keras( "foryahasake/act-h5") def inference(inp): if len(inp.shape) == 3: # If the image is colored pil_gray = cv2.cvtColor(inp, cv2.COLOR_RGB2GRAY) else: pil_gray = inp resized_img = cv2.resize(pil_gray, (48,48), interpolation=cv2.INTER_CUBIC) model_input = resized_img / 255.0 model_input = np.expand_dims(model_input, axis=-1) # Add channel dimension model_input = np.expand_dims(model_input, axis=0) # Add batch dimension # Prediction result = model.predict(model_input) predictions = result[0] predicted_class = np.argmax(predictions) emotion_labels = ["Angry", "Disgust", "Fear", "Happy", "Sad", "Surprise", "Neutral"] predicted_emotion = emotion_labels[predicted_class] confidence = predictions[predicted_class] return predicted_emotion demo = gr.Interface(fn=inference, inputs="image", outputs="label") demo.launch()