import gradio as gr import cv2 import numpy as np import joblib from utils import extract_features # Your feature extraction logic # Load model and encoders model = joblib.load("model/random_forest.pkl") label_encoders = joblib.load("model/label_encoders.pkl") def recommend_mask(image): # Extract face shape, skin tone, face size from image face_shape, skin_tone, face_size = extract_features(image) # Label encode features face_encoded = label_encoders["face_shape"].transform([face_shape])[0] skin_encoded = label_encoders["skin_tone"].transform([skin_tone])[0] size_encoded = label_encoders["face_size"].transform([face_size])[0] # Predict mask style prediction = model.predict([[face_encoded, skin_encoded, size_encoded]])[0] return prediction # Gradio Interface demo = gr.Interface( fn=recommend_mask, inputs=gr.Image(label="Upload Your Face", type="filepath"), outputs=gr.Textbox(label="Recommended Mask Style"), title="🎭 AI Party Mask Recommender", description="Upload a photo to get a personalized mask recommendation!", ) demo.launch()