import cv2 import numpy as np import urllib import tensorflow as tf from tensorflow.keras import layers, models, optimizers import gradio as gr import os # Load pre-trained model model = tf.keras.models.load_model('facial_condition_model.h5') # Function to preprocess image for model input def preprocess_image(image): # Convert image to grayscale gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Resize image to 128x128 pixels resized = cv2.resize(gray, (128, 128), interpolation=cv2.INTER_AREA) # Convert image to float32 and normalize pixel values normalized = np.float32(resized) / 255.0 # Add batch dimension to image batched = np.expand_dims(normalized, axis=0) return batched # Function to calculate facial condition scores def calculate_scores(image): # Preprocess image for model input preprocessed_image = preprocess_image(image) # Use pre-trained model to predict facial condition scores score = model.predict(preprocessed_image)[0][0] # Calculate wrinkle score wrinkle_score = 1 - (1 / (1 + np.exp(-5*(score-50)/50))) # Calculate laxity score laxity_score = np.tanh(score / 10) # Calculate facial age facial_age = int(np.round(score)) # Calculate final score final_score = np.mean([wrinkle_score, laxity_score, facial_age]) return wrinkle_score, laxity_score, facial_age, final_score # Define Gradio interface inputs = gr.inputs.Image(label="Input Image") outputs = [gr.outputs.Label(label="Wrinkle Score"), gr.outputs.Label(label="Laxity Score"), gr.outputs.Label(label="Facial Age"), gr.outputs.Label(label="Final Score")] title = "Facial Condition Evaluator" description = "Upload a photo to evaluate your facial condition. This tool will calculate your wrinkle score, laxity score, facial age, and a final score based on a deep learning model." examples = [["before.jpg"], ["after.jpg"]] iface = gr.Interface(calculate_scores, inputs, outputs, title=title, description=description, examples=examples) # Launch Gradio iface.launch()