| import gradio as gr | |
| from age_service import AgeService | |
| import numpy as np | |
| # Initialize the AgeService | |
| service = AgeService() | |
| def predict_age(image): | |
| if image is None: | |
| return "Please upload an image." | |
| # Perform prediction | |
| result = service.detect_and_predict(image) | |
| if result and result.get("error"): | |
| return f"Error: {result['error']}" | |
| elif result: | |
| return f"Predicted Age: {result['age']}\nAge Group: {result['age_group']}\nConfidence: {result['confidence']}" | |
| else: | |
| return "An unknown error occurred." | |
| # Create the Gradio interface | |
| iface = gr.Interface( | |
| fn=predict_age, | |
| inputs=gr.Image(label="Upload Image"), | |
| outputs=gr.Text(label="Prediction Result"), | |
| title="Age Prediction Model", | |
| description="Upload an image containing a face to predict the person's age. This model uses a custom-trained ResNet18 and an OpenCV face detector.", | |
| allow_flagging="never" | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |